<?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>176076</bug_id>
          
          <creation_ts>2017-08-29 15:50:49 -0700</creation_ts>
          <short_desc>Do unified source builds for JSC</short_desc>
          <delta_ts>2017-09-27 12:52:13 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=139438</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>annulen</cc>
    
    <cc>buildbot</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1343275</commentid>
    <comment_count>0</comment_count>
      <attachid>319296</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-08-29 15:50:49 -0700</bug_when>
    <thetext>Created attachment 319296
Proof of concept (apply to r219089)

We talked about adding a unified source build in the webkit-dev mailing list. This is the bug for the JSC transition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343280</commentid>
    <comment_count>1</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-08-29 15:55:53 -0700</bug_when>
    <thetext>Note that in the PoC I had to rename Air to not be under B3. I&apos;m not sure that will be needed if we switch to per directory bundles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347426</commentid>
    <comment_count>2</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-09-11 09:48:25 -0700</bug_when>
    <thetext>Indeed, do or do not. There is no try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347435</commentid>
    <comment_count>3</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-09-11 09:58:06 -0700</bug_when>
    <thetext>BTW, as I probably said before, I propose to use existing WebCore&apos;s *AllInOne.cpp infrastructure with fixed AllInOne.cpp files, so that set of files and their order are detereministic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347440</commentid>
    <comment_count>4</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-11 10:01:51 -0700</bug_when>
    <thetext>(In reply to Konstantin Tokarev from comment #3)
&gt; BTW, as I probably said before, I propose to use existing WebCore&apos;s
&gt; *AllInOne.cpp infrastructure with fixed AllInOne.cpp files, so that set of
&gt; files and their order are detereministic

IIRC, when this was discussed on the webkit-dev mailing list the conclusion was to to do that. The downside of all-in-one cpp files is that we would need to have hundreds of all-in-one cpp files if we want to have ~8 files per bundle. The other alternative is to have a txt file with all the files in the bundle but at that point we might as well have the system do the load balancing for us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347441</commentid>
    <comment_count>5</comment_count>
      <attachid>320438</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-11 10:03:59 -0700</bug_when>
    <thetext>Created attachment 320438
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347450</commentid>
    <comment_count>6</comment_count>
      <attachid>320438</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-09-11 10:20:18 -0700</bug_when>
    <thetext>Comment on attachment 320438
Patch

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

&gt; Source/JavaScriptCore/CMakeLists.txt:1020
&gt; +set(_unifiedSourceCount 0)

I mean, move PROCESS_ALLINONE_FILE from WebCore/WebCoreMacros.cmake to WebKitMacros and use here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347453</commentid>
    <comment_count>7</comment_count>
      <attachid>320438</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-11 10:22:25 -0700</bug_when>
    <thetext>Comment on attachment 320438
Patch

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

&gt;&gt; Source/JavaScriptCore/CMakeLists.txt:1020
&gt;&gt; +set(_unifiedSourceCount 0)
&gt; 
&gt; I mean, move PROCESS_ALLINONE_FILE from WebCore/WebCoreMacros.cmake to WebKitMacros and use here

This is temporary code. I plan to move most of this logic to a separate script before landing so that we can use the same logic between Xcode and CMake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347456</commentid>
    <comment_count>8</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-09-11 10:25:32 -0700</bug_when>
    <thetext>Makes sense, parsing C++ files with cmake code never felt right to me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347474</commentid>
    <comment_count>9</comment_count>
      <attachid>320442</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-11 10:43:33 -0700</bug_when>
    <thetext>Created attachment 320442
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347478</commentid>
    <comment_count>10</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-11 10:47:04 -0700</bug_when>
    <thetext>Attachment 320442 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/BinarySwitch.cpp:219:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 62 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347553</commentid>
    <comment_count>11</comment_count>
      <attachid>320459</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-11 12:51:34 -0700</bug_when>
    <thetext>Created attachment 320459
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347557</commentid>
    <comment_count>12</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-11 12:54:48 -0700</bug_when>
    <thetext>Attachment 320459 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/BinarySwitch.cpp:219:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 59 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347675</commentid>
    <comment_count>13</comment_count>
      <attachid>320487</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-11 15:26:16 -0700</bug_when>
    <thetext>Created attachment 320487
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347677</commentid>
    <comment_count>14</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-11 15:28:44 -0700</bug_when>
    <thetext>Attachment 320487 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/BinarySwitch.cpp:219:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 62 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347824</commentid>
    <comment_count>15</comment_count>
      <attachid>320524</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-12 00:10:30 -0700</bug_when>
    <thetext>Created attachment 320524
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347825</commentid>
    <comment_count>16</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-12 00:13:47 -0700</bug_when>
    <thetext>Attachment 320524 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/BinarySwitch.cpp:219:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 70 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347920</commentid>
    <comment_count>17</comment_count>
      <attachid>320552</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-12 09:26:21 -0700</bug_when>
    <thetext>Created attachment 320552
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347922</commentid>
    <comment_count>18</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-12 09:29:27 -0700</bug_when>
    <thetext>Attachment 320552 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/BinarySwitch.cpp:219:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 70 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347980</commentid>
    <comment_count>19</comment_count>
      <attachid>320559</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-12 12:20:07 -0700</bug_when>
    <thetext>Created attachment 320559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347981</commentid>
    <comment_count>20</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-12 12:22:37 -0700</bug_when>
    <thetext>Attachment 320559 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/BinarySwitch.cpp:219:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 69 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347982</commentid>
    <comment_count>21</comment_count>
      <attachid>320560</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-12 12:26:18 -0700</bug_when>
    <thetext>Created attachment 320560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347984</commentid>
    <comment_count>22</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-12 12:29:51 -0700</bug_when>
    <thetext>Attachment 320560 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/BinarySwitch.cpp:219:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 70 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347985</commentid>
    <comment_count>23</comment_count>
      <attachid>320559</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-09-12 12:30:10 -0700</bug_when>
    <thetext>Comment on attachment 320559
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        This patch switchs the CMake JavaScriptCore build to use unified sources.

Typo: switchs =&gt; switches

&gt; Source/JavaScriptCore/ChangeLog:269
&gt; +        * CMakeLists.txt:

Double Changelog.

&gt; Source/WTF/ChangeLog:10
&gt; +        important that we use the same script to generate the the bundles

Grammar: &quot;the the&quot; =&gt; the

&gt; Source/JavaScriptCore/CMakeLists.txt:1021
&gt; +    if (NOT (${_sourceFile} MATCHES &quot;.*c$&quot;))

How about using just /c$/ the &quot;.*&quot; seems unnecessary here.

&gt; Source/JavaScriptCore/CMakeLists.txt:1034
&gt; +    message(&quot;WARNING: unified-source-bundler.rb exited with non-zero status not appending results&quot;)

I feel like this should trigger an error / failure. Seems weird that we then fall down to potentially succeed later.

I thin you can do this with:

    message(FATAL_ERROR, &quot;...&quot;)

&gt; Source/JavaScriptCore/CMakeLists.txt:1596
&gt; +message(${JavaScriptCore_SOURCES})

This is debug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348007</commentid>
    <comment_count>24</comment_count>
      <attachid>320560</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-09-12 13:12:26 -0700</bug_when>
    <thetext>Comment on attachment 320560
Patch

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

I&apos;d like to see another version of the ruby, since it should be much clearer after addressing comments.

&gt; Source/WTF/generate-unified-source-bundles.rb:1
&gt; +# Copyright (C) 2011, 2016 Apple Inc. All rights reserved.

Copyright date

&gt; Source/WTF/generate-unified-source-bundles.rb:28
&gt; +def usage

This should describe the expected usage, since apparently you use ARGV[0] later on but its not described

     puts &quot;#{File.basename($0)} -p &lt;path&gt; [options] ...&quot;

&gt; Source/WTF/generate-unified-source-bundles.rb:38
&gt; +# Pick an unreasonable number because... whatever.

This comment is unhelpful. Keep the fixme for the unused numbers (or remove them and add them when they are used). But when you do use them provide a descriptive comment explaining them.

You also don&apos;t cover these variables in the `usage`. How about just adding them when they are actually used?

&gt; Source/WTF/generate-unified-source-bundles.rb:41
&gt; +$maxCBundleCount = 100000

You said you can&apos;t / don&apos;t support C files. Drop this one?

&gt; Source/WTF/generate-unified-source-bundles.rb:84
&gt; +    def flush()

Style: Parenthesis not needed here

&gt; Source/WTF/generate-unified-source-bundles.rb:87
&gt; +        if (@currentBundleFile)

Style: Parenthesis are not needed

&gt; Source/WTF/generate-unified-source-bundles.rb:93
&gt; +        @currentBundleFile = $derivedSourcesPath + &quot;UnifiedSource#{($generatedSources.length + 1).to_s + extension}&quot;

I suggest using a local variable for the filename for readability. Also probably using @bundleCount might be clearer than $generatedSources.length:

    nextUnifiedSourceFilename = &quot;UnifiedSource#{@bundleCount}#{extension}&quot;
    @currentBundleFile = $derivedSourcesPath + nextUnifiedSourceFilename

&gt; Source/WTF/generate-unified-source-bundles.rb:100
&gt; +        if (@fileCount % MAX_BUNDLE_SIZE == 0)

Style: Parenthesis are not needed.

Also, can we simplify this to just equality instead of mod arithmetic?

    if @fileCount == MAX_BUNDLE_SIZE

This would require reworking how you call flush. Right now this is somewhat confusing. The first time you call flush it doesn&apos;t write anything and instead sets up variables. That is rather confusing. I&apos;d expect `flush` to always write a UnifiedSource and increment if there are contents.

&gt; Source/WTF/generate-unified-source-bundles.rb:110
&gt; +#FIXME: We should figure out how to bundle C files. The lack of namespaces makes this difficult...
&gt; +class CFileManager

I suggest naming this: `NonBundleFileManager` and using it for &quot;.c&quot; and &quot;.m&quot; sources.

How do you handle &quot;.cc&quot; files in WTF which are C++.

&gt; Source/WTF/generate-unified-source-bundles.rb:127
&gt; +$currentDirectory = Pathname.new(ARGV[0]).dirname
&gt; +
&gt; +ARGV.sort.each {

Seems weird to initialize $currentDirectory like this outside the loop. ARGV[0] might be nil.

You should also validate ARGV.size is &gt; 0 and dump usage if it is 0. You expect at least one source file.

&gt; Source/WTF/generate-unified-source-bundles.rb:150
&gt; +$stdout.write($generatedSources.join(&quot;;&quot;) + &quot;;&quot;)

Style: Just use `print ...` instead of `$stdout.write(...)`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348012</commentid>
    <comment_count>25</comment_count>
      <attachid>320560</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2017-09-12 13:15:58 -0700</bug_when>
    <thetext>Comment on attachment 320560
Patch

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

&gt;&gt; Source/WTF/generate-unified-source-bundles.rb:110
&gt;&gt; +class CFileManager
&gt; 
&gt; I suggest naming this: `NonBundleFileManager` and using it for &quot;.c&quot; and &quot;.m&quot; sources.
&gt; 
&gt; How do you handle &quot;.cc&quot; files in WTF which are C++.

These .cc files are 3rd-party code (Google&apos;s double-conversion), so I&apos;d argue we don&apos;t need to bundle them</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348037</commentid>
    <comment_count>26</comment_count>
      <attachid>320560</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-12 14:37:55 -0700</bug_when>
    <thetext>Comment on attachment 320560
Patch

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

&gt;&gt; Source/WTF/generate-unified-source-bundles.rb:1
&gt;&gt; +# Copyright (C) 2011, 2016 Apple Inc. All rights reserved.
&gt; 
&gt; Copyright date

Fixed.

&gt;&gt; Source/WTF/generate-unified-source-bundles.rb:28
&gt;&gt; +def usage
&gt; 
&gt; This should describe the expected usage, since apparently you use ARGV[0] later on but its not described
&gt; 
&gt;      puts &quot;#{File.basename($0)} -p &lt;path&gt; [options] ...&quot;

Updated.

&gt;&gt; Source/WTF/generate-unified-source-bundles.rb:38
&gt;&gt; +# Pick an unreasonable number because... whatever.
&gt; 
&gt; This comment is unhelpful. Keep the fixme for the unused numbers (or remove them and add them when they are used). But when you do use them provide a descriptive comment explaining them.
&gt; 
&gt; You also don&apos;t cover these variables in the `usage`. How about just adding them when they are actually used?

I&apos;m going to use them in my next patch so I think it&apos;s fine to have a little slop here.

&gt;&gt; Source/WTF/generate-unified-source-bundles.rb:41
&gt;&gt; +$maxCBundleCount = 100000
&gt; 
&gt; You said you can&apos;t / don&apos;t support C files. Drop this one?

Fixed.

&gt;&gt; Source/WTF/generate-unified-source-bundles.rb:84
&gt;&gt; +    def flush()
&gt; 
&gt; Style: Parenthesis not needed here

fixed.

&gt;&gt; Source/WTF/generate-unified-source-bundles.rb:87
&gt;&gt; +        if (@currentBundleFile)
&gt; 
&gt; Style: Parenthesis are not needed

fixed.

&gt;&gt; Source/WTF/generate-unified-source-bundles.rb:93
&gt;&gt; +        @currentBundleFile = $derivedSourcesPath + &quot;UnifiedSource#{($generatedSources.length + 1).to_s + extension}&quot;
&gt; 
&gt; I suggest using a local variable for the filename for readability. Also probably using @bundleCount might be clearer than $generatedSources.length:
&gt; 
&gt;     nextUnifiedSourceFilename = &quot;UnifiedSource#{@bundleCount}#{extension}&quot;
&gt;     @currentBundleFile = $derivedSourcesPath + nextUnifiedSourceFilename

Done. I actually removed the class member because it&apos;s not used outside this function anyway. and I simplified this code.

&gt;&gt; Source/WTF/generate-unified-source-bundles.rb:100
&gt;&gt; +        if (@fileCount % MAX_BUNDLE_SIZE == 0)
&gt; 
&gt; Style: Parenthesis are not needed.
&gt; 
&gt; Also, can we simplify this to just equality instead of mod arithmetic?
&gt; 
&gt;     if @fileCount == MAX_BUNDLE_SIZE
&gt; 
&gt; This would require reworking how you call flush. Right now this is somewhat confusing. The first time you call flush it doesn&apos;t write anything and instead sets up variables. That is rather confusing. I&apos;d expect `flush` to always write a UnifiedSource and increment if there are contents.

Done.

&gt;&gt;&gt; Source/WTF/generate-unified-source-bundles.rb:110
&gt;&gt;&gt; +class CFileManager
&gt;&gt; 
&gt;&gt; I suggest naming this: `NonBundleFileManager` and using it for &quot;.c&quot; and &quot;.m&quot; sources.
&gt;&gt; 
&gt;&gt; How do you handle &quot;.cc&quot; files in WTF which are C++.
&gt; 
&gt; These .cc files are 3rd-party code (Google&apos;s double-conversion), so I&apos;d argue we don&apos;t need to bundle them

We could also just rename them to .cpp files if we want to.

&gt;&gt; Source/WTF/generate-unified-source-bundles.rb:127
&gt;&gt; +ARGV.sort.each {
&gt; 
&gt; Seems weird to initialize $currentDirectory like this outside the loop. ARGV[0] might be nil.
&gt; 
&gt; You should also validate ARGV.size is &gt; 0 and dump usage if it is 0. You expect at least one source file.

Done.

&gt;&gt; Source/WTF/generate-unified-source-bundles.rb:150
&gt;&gt; +$stdout.write($generatedSources.join(&quot;;&quot;) + &quot;;&quot;)
&gt; 
&gt; Style: Just use `print ...` instead of `$stdout.write(...)`

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348038</commentid>
    <comment_count>27</comment_count>
      <attachid>320569</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-12 14:39:42 -0700</bug_when>
    <thetext>Created attachment 320569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348043</commentid>
    <comment_count>28</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-12 14:42:20 -0700</bug_when>
    <thetext>Attachment 320569 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/BinarySwitch.cpp:219:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 70 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348049</commentid>
    <comment_count>29</comment_count>
      <attachid>320569</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-09-12 14:56:58 -0700</bug_when>
    <thetext>Comment on attachment 320569
Patch

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

The ruby looks much better and more readable to me now.

&gt; Source/WTF/generate-unified-source-bundles.rb:49
&gt; +               [&apos;--max-c-bundle-count&apos;, GetoptLong::REQUIRED_ARGUMENT],

Remove

&gt; Source/WTF/generate-unified-source-bundles.rb:62
&gt; +    when &apos;--max-c-bundle-count&apos;
&gt; +        $maxCBundleCount = arg

Remove

&gt; Source/WTF/generate-unified-source-bundles.rb:68
&gt; +usage if !$derivedSourcesPath || ARGV.length == 0

You could do: `ARGV.empty?` which is more natural Ruby than `ARGV.length == 0`

&gt; Source/WTF/generate-unified-source-bundles.rb:114
&gt; +#FIXME: We should figure out how to bundle C files. The lack of namespaces makes this difficult...
&gt; +class CFileManager

A better comment would be: &quot;For files we don&apos;t know how to bundle, just pass them through&quot;.
This doesn&apos;t need to be specific for &quot;.c&quot; files since it may apply to &quot;.m&quot; files as well when you get there.

However, I think you can delete this code altogether! You could avoid creating bundle managers for &quot;.c&quot; and &quot;.m&quot; and instead...

&gt; Source/WTF/generate-unified-source-bundles.rb:143
&gt; +    raise &quot;unknown source extension: #{path.extname} known extensions: #{$bundleManagers.keys.to_s}&quot; unless bundle

... handle them here with:

    bundle = $bundleManagers[path.extname]
    if !bundle
        log(&quot;No bundle manger for #{path.extname}: #{path}&quot;)
        $generatedSources &lt;&lt; file
    else
        bundle.addFile(path)

&gt; Source/WTF/generate-unified-source-bundles.rb:150
&gt; +# Add trailing semicolon since CMake seems dislikes not having it.

Grammar: &quot;since CMake seems dislikes&quot;

&gt; Source/WTF/generate-unified-source-bundles.rb:151
&gt; +# Also, make sure we use print instead of puts because CMake will think the \n is a source file and fail to build.

Don&apos;t say &quot;use print instead of puts because ...&quot;, that is misleadingly specific. Instead just say &quot;don&apos;t include a trailing newline because ...&quot;.

&gt; Source/WTF/generate-unified-source-bundles.rb:152
&gt; +print($generatedSources.join(&quot;;&quot;) + &quot;;&quot;)

Style: No need for the parenthesis here:

    print $generatedSources.join(&quot;,&quot;) + &quot;;&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348050</commentid>
    <comment_count>30</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-09-12 14:58:25 -0700</bug_when>
    <thetext>(In reply to Build Bot from comment #28)
&gt; Attachment 320569 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/JavaScriptCore/jit/BinarySwitch.cpp:219:  Multi line control
&gt; clauses should use braces.  [whitespace/braces] [4]
&gt; Total errors found: 1 in 70 files

I wonder if this happens because the line of whitespace (line 219). I wonder if you remove that (or lessen it) if it gets rid of this errant style warning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348052</commentid>
    <comment_count>31</comment_count>
      <attachid>320569</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-12 15:01:11 -0700</bug_when>
    <thetext>Comment on attachment 320569
Patch

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

I think a good way to land this would be to land all the parts that make changes that make no effect, then land the rest.

&gt; Source/JavaScriptCore/CMakeLists.txt:49
&gt; -set(JavaScriptCore_SOURCES
&gt; +set(JavaScriptCore_OG_SOURCES

What does OG mean?  I don&apos;t think we should use such an abbreviation.

&gt; Source/JavaScriptCore/CMakeLists.txt:1021
&gt; +    if (NOT (${_sourceFile} MATCHES &quot;c$&quot;))

Do we want to check if it ends with .c or just if it ends with c?

&gt; Source/JavaScriptCore/CMakeLists.txt:1039
&gt; +# These are special files that we can&apos;t or don&apos;t want to unified source compile

Why not?  Should we fix this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348070</commentid>
    <comment_count>32</comment_count>
      <attachid>320569</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-12 15:50:13 -0700</bug_when>
    <thetext>Comment on attachment 320569
Patch

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

&gt;&gt; Source/JavaScriptCore/CMakeLists.txt:1021
&gt;&gt; +    if (NOT (${_sourceFile} MATCHES &quot;c$&quot;))
&gt; 
&gt; Do we want to check if it ends with .c or just if it ends with c?

I don&apos;t think it matters one way or another. I can make it .c if you&apos;d prefer.

&gt;&gt; Source/JavaScriptCore/CMakeLists.txt:1039
&gt;&gt; +# These are special files that we can&apos;t or don&apos;t want to unified source compile
&gt; 
&gt; Why not?  Should we fix this?

Because it needs special compiler flags non-optimizing compiler flags that we don&apos;t want to disable elsewhere.

&gt;&gt; Source/WTF/generate-unified-source-bundles.rb:49
&gt;&gt; +               [&apos;--max-c-bundle-count&apos;, GetoptLong::REQUIRED_ARGUMENT],
&gt; 
&gt; Remove

Whoops, Gone.

&gt;&gt; Source/WTF/generate-unified-source-bundles.rb:62
&gt;&gt; +        $maxCBundleCount = arg
&gt; 
&gt; Remove

Gone.

&gt;&gt; Source/WTF/generate-unified-source-bundles.rb:68
&gt;&gt; +usage if !$derivedSourcesPath || ARGV.length == 0
&gt; 
&gt; You could do: `ARGV.empty?` which is more natural Ruby than `ARGV.length == 0`

Oh, I didn&apos;t know that existed.

&gt;&gt; Source/WTF/generate-unified-source-bundles.rb:114
&gt;&gt; +class CFileManager
&gt; 
&gt; A better comment would be: &quot;For files we don&apos;t know how to bundle, just pass them through&quot;.
&gt; This doesn&apos;t need to be specific for &quot;.c&quot; files since it may apply to &quot;.m&quot; files as well when you get there.
&gt; 
&gt; However, I think you can delete this code altogether! You could avoid creating bundle managers for &quot;.c&quot; and &quot;.m&quot; and instead...

Yeah, that seems like a better way to do it.

&gt;&gt; Source/WTF/generate-unified-source-bundles.rb:152
&gt;&gt; +print($generatedSources.join(&quot;;&quot;) + &quot;;&quot;)
&gt; 
&gt; Style: No need for the parenthesis here:
&gt; 
&gt;     print $generatedSources.join(&quot;,&quot;) + &quot;;&quot;

I kinda like calling it as a normal function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348072</commentid>
    <comment_count>33</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-12 15:56:04 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #31)
&gt; Comment on attachment 320569 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=320569&amp;action=review
&gt; 
&gt; I think a good way to land this would be to land all the parts that make
&gt; changes that make no effect, then land the rest.
&gt; 

I don&apos;t agree with this. I think it&apos;s better to just make sure all the changes make sense and land them. There&apos;s no point in trying to wait. That just makes it more likely that we&apos;ll have to keep updating the build to ensure it doesn&apos;t break between versions of the bundler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348076</commentid>
    <comment_count>34</comment_count>
      <attachid>320577</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-12 16:10:34 -0700</bug_when>
    <thetext>Created attachment 320577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348081</commentid>
    <comment_count>35</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-12 16:13:46 -0700</bug_when>
    <thetext>Attachment 320577 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/BinarySwitch.cpp:219:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 70 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348127</commentid>
    <comment_count>36</comment_count>
      <attachid>320577</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-09-12 17:31:57 -0700</bug_when>
    <thetext>Comment on attachment 320577
Patch

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

r=me

&gt; Source/WTF/ChangeLog:21
&gt; +        up to 8 files from the same directory. We don&apos;t bundle files from

Is &quot;from the same directory&quot; still true?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348137</commentid>
    <comment_count>37</comment_count>
      <attachid>320577</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-12 18:04:06 -0700</bug_when>
    <thetext>Comment on attachment 320577
Patch

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

&gt;&gt; Source/WTF/ChangeLog:21
&gt;&gt; +        up to 8 files from the same directory. We don&apos;t bundle files from
&gt; 
&gt; Is &quot;from the same directory&quot; still true?

Yeah, I kept it. I tried adding a few files and at was pretty annoying when everything shifts so you have to do a clean build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348145</commentid>
    <comment_count>38</comment_count>
      <attachid>320577</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-12 18:31:11 -0700</bug_when>
    <thetext>Comment on attachment 320577
Patch

Clearing flags on attachment: 320577

Committed r221954: &lt;http://trac.webkit.org/changeset/221954&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348146</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-12 18:31:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348176</commentid>
    <comment_count>40</comment_count>
      <attachid>320577</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-09-12 19:49:39 -0700</bug_when>
    <thetext>Comment on attachment 320577
Patch

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

&gt; Source/JavaScriptCore/CMakeLists.txt:49
&gt; -set(JavaScriptCore_SOURCES
&gt; +set(JavaScriptCore_OG_SOURCES

I agree with Alex that the &quot;OG&quot; is cryptic and confusing at best. We should rename this to something meaningful and descriptive.

Perhaps `JavaScriptCore_SOURCE_IN` to be in line with our `foo.in` files which is an indication it needs to be processed.

JavaScriptCore_UNBUNDLED_SOURCES, JavaScriptCore_ALL_SOURCES, JavaScriptCore_x_SOURCES.

At this point just about anything is better than OG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348188</commentid>
    <comment_count>41</comment_count>
      <attachid>320577</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-09-12 20:17:54 -0700</bug_when>
    <thetext>Comment on attachment 320577
Patch

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

&gt; Source/WTF/ChangeLog:32
&gt; +        * generate-unified-source-bundles.rb: Added.

I don&apos;t think this script should be under WTF, it should be under Tools/Scripts/webkitruby. Almost all of the scripts that are required by the build are already kept under Tools; no need for this to be an exception.

&gt;&gt; Source/JavaScriptCore/CMakeLists.txt:49
&gt;&gt; +set(JavaScriptCore_OG_SOURCES
&gt; 
&gt; I agree with Alex that the &quot;OG&quot; is cryptic and confusing at best. We should rename this to something meaningful and descriptive.
&gt; 
&gt; Perhaps `JavaScriptCore_SOURCE_IN` to be in line with our `foo.in` files which is an indication it needs to be processed.
&gt; 
&gt; JavaScriptCore_UNBUNDLED_SOURCES, JavaScriptCore_ALL_SOURCES, JavaScriptCore_x_SOURCES.
&gt; 
&gt; At this point just about anything is better than OG.

I haven&apos;t been following this bug closely, but I was going to complain about this too. I also have no clue what OG stands for.

&gt; Source/JavaScriptCore/CMakeLists.txt:1033
&gt; +    message(FATAL_ERROR &quot;unified-source-bundler.rb exited with non-zero status not appending results&quot;)

Is this missing a comma? Since the error is fatal, a better message would be simply &quot;unified-source-bundler.rb exited with non-zero status&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348192</commentid>
    <comment_count>42</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-12 20:45:24 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #41)
&gt; Comment on attachment 320577 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=320577&amp;action=review
&gt; 
&gt; &gt; Source/WTF/ChangeLog:32
&gt; &gt; +        * generate-unified-source-bundles.rb: Added.
&gt; 
&gt; I don&apos;t think this script should be under WTF, it should be under
&gt; Tools/Scripts/webkitruby. Almost all of the scripts that are required by the
&gt; build are already kept under Tools; no need for this to be an exception.

Due to Apple&apos;s internal build system rules, we need this script to be in one of the Source subdirectories. You&apos;ll notice that all the Xcode scripts are duplicated across directories. I&apos;d like to use the same script for all the projects in WebKit that we will do unified sources with. Which, unfortunately, means that the script needs to be forwarded from the WTF.

&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/CMakeLists.txt:49
&gt; &gt;&gt; +set(JavaScriptCore_OG_SOURCES
&gt; &gt; 
&gt; &gt; I agree with Alex that the &quot;OG&quot; is cryptic and confusing at best. We should rename this to something meaningful and descriptive.

&gt; &gt; 
&gt; &gt; Perhaps `JavaScriptCore_SOURCE_IN` to be in line with our `foo.in` files which is an indication it needs to be processed.
&gt; &gt; 
&gt; &gt; JavaScriptCore_UNBUNDLED_SOURCES, JavaScriptCore_ALL_SOURCES, JavaScriptCore_x_SOURCES.
&gt; &gt; 
&gt; &gt; At this point just about anything is better than OG.
&gt; 
&gt; I haven&apos;t been following this bug closely, but I was going to complain about
&gt; this too. I also have no clue what OG stands for.

Whoops, I meant to change this but I forgot... :/

&gt; 
&gt; &gt; Source/JavaScriptCore/CMakeLists.txt:1033
&gt; &gt; +    message(FATAL_ERROR &quot;unified-source-bundler.rb exited with non-zero status not appending results&quot;)
&gt; 
&gt; Is this missing a comma? Since the error is fatal, a better message would be
&gt; simply &quot;unified-source-bundler.rb exited with non-zero status&quot;

If you mean a comma between &quot;FATAL_ERROR&quot; and &quot;unified-source-bundler.rb...&quot;, no because CMake is weird. I agree that the &quot;not appending results&quot; part of the message is unnecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348195</commentid>
    <comment_count>43</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-12 20:50:56 -0700</bug_when>
    <thetext>I uploaded a follow-up patch: https://bugs.webkit.org/show_bug.cgi?id=176823</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353697</commentid>
    <comment_count>44</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:52:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/34694175&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319296</attachid>
            <date>2017-08-29 15:50:49 -0700</date>
            <delta_ts>2017-09-11 10:03:48 -0700</delta_ts>
            <desc>Proof of concept (apply to r219089)</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>144466</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwZDZjM2QyYTI3Zi4uNjJiYTky
NjI1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEwMDYsNiArMTAw
NiwzMCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHlhcnIvWWFyclN5bnRheENo
ZWNrZXIuY3BwCiApCiAKKworc2V0KF91bmlmaWVkU291cmNlQ291bnQgMCkKK2xpc3QoU09SVCBK
YXZhU2NyaXB0Q29yZV9TT1VSQ0VTKQorbGlzdChMRU5HVEggSmF2YVNjcmlwdENvcmVfU09VUkNF
UyBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VfQ09VTlQpCittYXRoKEVYUFIgSmF2YVNjcmlwdENvcmVf
U09VUkNFX0NPVU5UICIke0phdmFTY3JpcHRDb3JlX1NPVVJDRV9DT1VOVH0gLSAxIikKK2ZvcmVh
Y2ggKF9pbmRleCBSQU5HRSAke0phdmFTY3JpcHRDb3JlX1NPVVJDRV9DT1VOVH0pCisgICAgbWF0
aChFWFBSIF9uZXdVbmlmaWVkU291cmNlRmlsZSAiJHtfaW5kZXh9ICUgOCIpCisgICAgaWYgKE5P
VCAke19uZXdVbmlmaWVkU291cmNlRmlsZX0pCisgICAgICAgIG1hdGgoRVhQUiBfdW5pZmllZFNv
dXJjZUNvdW50ICIke191bmlmaWVkU291cmNlQ291bnR9ICsgMSIpCisgICAgICAgIHNldChfdW5p
ZmllZFNvdXJjZU5hbWUgIiR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vSmF2YVNjcmlwdENvcmUvVW5p
ZmllZFNvdXJjZSR7X3VuaWZpZWRTb3VyY2VDb3VudH0uY3BwIikKKyAgICAgICAgbGlzdChBUFBF
TkQgSmF2YVNjcmlwdENvcmVfVU5JRklFRF9TT1VSQ0VTICR7X3VuaWZpZWRTb3VyY2VOYW1lfSkK
KyAgICBlbmRpZiAoKQorCisgICAgbGlzdChHRVQgSmF2YVNjcmlwdENvcmVfU09VUkNFUyAke19p
bmRleH0gX3NvdXJjZUZpbGUpCisgICAgaWYgKCR7X3NvdXJjZUZpbGV9IE1BVENIRVMgIi4qKG1t
fGMpJCIpCisgICAgICBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9VTklGSUVEX1NPVVJDRVMg
JHtfc291cmNlRmlsZX0pCisgICAgZWxzZSAoKQorICAgICAgIyAgICAgIGdldF9maWxlbmFtZV9j
b21wb25lbnQoX3NvdXJjZUZpbGUgJHtfc291cmNlRmlsZX0gTkFNRSkKKyAgICAgIGZpbGUoQVBQ
RU5EICR7X3VuaWZpZWRTb3VyY2VOYW1lfSAiI2luY2x1ZGUgXCIke19zb3VyY2VGaWxlfVwiXG4i
KQorICAgIGVuZGlmICgpCitlbmRmb3JlYWNoICgpCisKK3NldChKYXZhU2NyaXB0Q29yZV9TT1VS
Q0VTICR7SmF2YVNjcmlwdENvcmVfVU5JRklFRF9TT1VSQ0VTfSkKKwogIyBFeHRyYSBmbGFncyBm
b3IgY29tcGlsZSBzb3VyY2VzIGNhbiBnbyBoZXJlLgogaWYgKE5PVCBNU1ZDKQogICAgIHNldF9z
b3VyY2VfZmlsZXNfcHJvcGVydGllcyhydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBQUk9QRVJUSUVT
IENPTVBJTEVfRkxBR1MgLWZuby1vcHRpbWl6ZS1zaWJsaW5nLWNhbGxzKQpAQCAtMTMwMiw3ICsx
MzI2LDcgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAgIE1BSU5fREVQRU5ERU5DWSAke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vY3JlYXRlX3JlZ2V4X3RhYmxlcwogICAgIENPTU1BTkQgJHtQ
WVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2NyZWF0ZV9yZWdl
eF90YWJsZXMgPiAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L1JlZ0V4cEpp
dFRhYmxlcy5oCiAgICAgVkVSQkFUSU0pCi1BRERfU09VUkNFX0RFUEVOREVOQ0lFUygke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0veWFyci9ZYXJyUGF0dGVybi5jcHAgJHtERVJJVkVEX1NPVVJD
RVNfSkFWQVNDUklQVENPUkVfRElSfS9SZWdFeHBKaXRUYWJsZXMuaCkKK0FERF9TT1VSQ0VfREVQ
RU5ERU5DSUVTKCR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vVW5pZmllZFNv
dXJjZTEuY3BwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vUmVnRXhwSml0
VGFibGVzLmgpCiAKIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBPVVRQVVQgJHtERVJJVkVEX1NP
VVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9ZYXJyQ2Fub25pY2FsaXplVW5pY29kZS5jcHAKQEAg
LTEzMjIsNyArMTM0Niw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBERVBFTkRTICR7Q01B
S0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9wYXJzZXIvS2V5d29yZHMudGFibGUKICAgICBDT01NQU5E
ICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9LZXl3b3Jk
TG9va3VwR2VuZXJhdG9yLnB5ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9wYXJzZXIvS2V5
d29yZHMudGFibGUgPiAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0tleXdv
cmRMb29rdXAuaAogICAgIFZFUkJBVElNKQotQUREX1NPVVJDRV9ERVBFTkRFTkNJRVMoJHtDTUFL
RV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3BhcnNlci9MZXhlci5jcHAgJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfS9LZXl3b3JkTG9va3VwLmgpCitBRERfU09VUkNFX0RFUEVOREVO
Q0lFUygke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L1VuaWZpZWRTb3VyY2Ux
LmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0tleXdvcmRMb29rdXAu
aCkKIAogCiAjIEluc3BlY3RvciBJbnRlcmZhY2VzCkBAIC0xNDY5LDcgKzE0OTMsNyBAQCBhZGRf
Y3VzdG9tX2NvbW1hbmQoCiAgICAgV09SS0lOR19ESVJFQ1RPUlkgJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfQogKQogCi1saXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TT1VS
Q0VTCitsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTCiAgICAgJHtERVJJVkVEX1NP
VVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9BaXJPcGNvZGUuaAogICAgICR7REVSSVZFRF9TT1VS
Q0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vQWlyT3Bjb2RlR2VuZXJhdGVkLmgKICkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmgKaW5kZXggYjkxODNmYWU5YzguLjU3Njcy
OWM5ZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNp
YWwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuaApAQCAt
MzIsMTIgKzMyLDEzIEBACiAjaW5jbHVkZSAiQjNTdGFja21hcFNwZWNpYWwuaCIKICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKK25hbWVz
cGFjZSBKU0MgewogCiBuYW1lc3BhY2UgQWlyIHsKIHN0cnVjdCBJbnN0OwogfQogCituYW1lc3Bh
Y2UgQjMgewogLy8gV2Ugd2FudCB0byBsb3dlciBDaGVjayBpbnN0cnVjdGlvbnMgdG8gYSBicmFu
Y2gsIGJ1dCB0aGVuIHdlIHdhbnQgdG8gcm91dGUgdGhhdCBicmFuY2ggdG8gb3VyCiAvLyBvdXQt
b2YtbGluZSBjb2RlIGluc3RlYWQgb2YgZG9pbmcgYW55dGhpbmcgZWxzZS4gRm9yIHRoaXMgcmVh
c29uLCBhIENoZWNrU3BlY2lhbCB3aWxsIHJlbWVtYmVyCiAvLyB3aGljaCBicmFuY2ggb3Bjb2Rl
IHdlIGhhdmUgc2VsZWN0ZWQgYWxvbmcgd2l0aCB0aGUgbnVtYmVyIG9mIGFyZ3MgaW4gdGhlIG92
ZXJsb2FkIHdlIHdhbnQuIEl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNEdXBsaWNhdGVUYWlscy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNEdXBsaWNh
dGVUYWlscy5jcHAKaW5kZXggZmQ2NTc5MGU5OWMuLjMyZjVhZGM5NmIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNEdXBsaWNhdGVUYWlscy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzRHVwbGljYXRlVGFpbHMuY3BwCkBAIC00NCw3ICs0NCw4IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBuYW1lc3BhY2UgewogCi1jb25zdCBi
b29sIHZlcmJvc2UgPSBmYWxzZTsKKyN1bmRlZiB2ZXJib3NlCisjZGVmaW5lIHZlcmJvc2UgZmFs
c2UKIAogY2xhc3MgRHVwbGljYXRlVGFpbHMgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMu
Y3BwCmluZGV4IDFhZTQzNTU2MTUxLi4wZGIyZWIzYTZjYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25z
LmNwcApAQCAtNTMsNyArNTMsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAog
bmFtZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CisjdW5kZWYgdmVyYm9z
ZQorI2RlZmluZSB2ZXJib3NlIGZhbHNlCiAKIC8vIEZJWE1FOiBXZSBjb3VsZCB0cmVhdCBQYXRj
aHBvaW50cyB3aXRoIGEgbm9uLWVtcHR5IHNldCBvZiByZWFkcyBhcyBhICJtZW1vcnkgdmFsdWUi
IGFuZCBzb21laG93CiAvLyBlbGltaW5hdGUgcmVkdW5kYW50IG9uZXMuIFdlIHdvdWxkIG5lZWQg
c29tZSB3YXkgb2YgZGV0ZXJtaW5pbmcgaWYgdHdvIHBhdGNocG9pbnRzIGFyZSByZXBsYWNhYmxl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRml4U1NBLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZpeFNTQS5jcHAKaW5kZXggZDIwMzgxZDIwMjIuLjc2
YWQ0Y2ZlOTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGaXhTU0Eu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZpeFNTQS5jcHAKQEAgLTQ4LDcg
KzQ4LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5hbWVzcGFjZSB7CiAK
LWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworI3VuZGVmIHZlcmJvc2UKKyNkZWZpbmUgdmVy
Ym9zZSBmYWxzZQogCiB2b2lkIGtpbGxEZWFkVmFyaWFibGVzKFByb2NlZHVyZSYgcHJvYykKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZvbGRQYXRoQ29uc3RhbnRz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZvbGRQYXRoQ29uc3RhbnRzLmNwcApp
bmRleCBlOTVjYzZiYTBlYS4uM2RhZTVhMzZiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0ZvbGRQYXRoQ29uc3RhbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNGb2xkUGF0aENvbnN0YW50cy5jcHAKQEAgLTQxLDcgKzQxLDggQEAgbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5hbWVzcGFjZSB7CiAKLWNvbnN0IGJvb2wgdmVy
Ym9zZSA9IGZhbHNlOworI3VuZGVmIHZlcmJvc2UKKyNkZWZpbmUgdmVyYm9zZSBmYWxzZQogCiBj
bGFzcyBGb2xkUGF0aENvbnN0YW50cyB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
R2VuZXJhdGUuaAppbmRleCBmOTM3NzVhMjA5MS4uOWM2YmQwNTNjZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzR2VuZXJhdGUuaApAQCAtMzEsMTIgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCituYW1lc3BhY2UgQWlyIHsgY2xhc3MgQ29kZTsgfQogY2xhc3MgQ0NhbGxIZWxwZXJz
OwogCiBuYW1lc3BhY2UgQjMgewogCiBjbGFzcyBQcm9jZWR1cmU7Ci1uYW1lc3BhY2UgQWlyIHsg
Y2xhc3MgQ29kZTsgfQogCiAvLyBUaGlzIHRha2VzIGEgQjM6OlByb2NlZHVyZSwgb3B0aW1pemVz
IGl0IGluLXBsYWNlLCBsb3dlcnMgaXQgdG8gQWlyLCBhbmQgcHJlcGFyZXMgdGhlIEFpciBmb3IK
IC8vIGdlbmVyYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJ
bmZlclN3aXRjaGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luZmVyU3dpdGNo
ZXMuY3BwCmluZGV4IDJmMTc4MTI0MTU2Li42OTFiNGY2NjI3NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzSW5mZXJTd2l0Y2hlcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzSW5mZXJTd2l0Y2hlcy5jcHAKQEAgLTQyLDcgKzQyLDggQEAgbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5hbWVzcGFjZSB7CiAKLWNvbnN0IGJvb2wgdmVy
Ym9zZSA9IGZhbHNlOworI3VuZGVmIHZlcmJvc2UKKyNkZWZpbmUgdmVyYm9zZSBmYWxzZQogCiBj
bGFzcyBJbmZlclN3aXRjaGVzIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAppbmRl
eCA5NjNjMTBlZGM1ZS4uMWZhMjM1ZGMwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAKQEAg
LTQxLDkgKzQxLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5hbWVzcGFj
ZSB7CiAKLWNsYXNzIExvd2VyTWFjcm9zIHsKK2NsYXNzIExvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6
YXRpb25zIHsKIHB1YmxpYzoKLSAgICBMb3dlck1hY3JvcyhQcm9jZWR1cmUmIHByb2MpCisgICAg
TG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMoUHJvY2VkdXJlJiBwcm9jKQogICAgICAgICA6
IG1fcHJvYyhwcm9jKQogICAgICAgICAsIG1fYmxvY2tJbnNlcnRpb25TZXQocHJvYykKICAgICAg
ICAgLCBtX2luc2VydGlvblNldChwcm9jKQpAQCAtMTgzLDcgKzE4Myw3IEBAIHByaXZhdGU6CiAK
IGJvb2wgbG93ZXJNYWNyb3NJbXBsKFByb2NlZHVyZSYgcHJvYykKIHsKLSAgICBMb3dlck1hY3Jv
cyBsb3dlck1hY3Jvcyhwcm9jKTsKKyAgICBMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucyBs
b3dlck1hY3Jvcyhwcm9jKTsKICAgICByZXR1cm4gbG93ZXJNYWNyb3MucnVuKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggZTZkMTgyZjIwYjQu
LjM1ZTBjMzAwZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
clRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNw
cApAQCAtNzMsNyArNzMsOCBAQCB1c2luZyBuYW1lc3BhY2UgQWlyOwogCiBuYW1lc3BhY2Ugewog
Ci1jb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKyN1bmRlZiB2ZXJib3NlCisjZGVmaW5lIHZl
cmJvc2UgZmFsc2UKIAogLy8gRklYTUU6IFdlIHdvdWxkbid0IG5lZWQgdGhpcyBpZiBBaXIgc3Vw
cG9ydGVkIFdpZHRoIG1vZGlmaWVycyBpbiBBaXI6OktpbmQuCiAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlclRvQWlyLmgKaW5kZXggOTM2NTc0OWU4ZDguLjM3ZDExMzIyYmFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5oCkBAIC0yNywxMSArMjcsMTQgQEAKIAogI2lmIEVO
QUJMRShCM19KSVQpCiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworbmFtZXNwYWNl
IEpTQyB7CiAKLWNsYXNzIFByb2NlZHVyZTsKIG5hbWVzcGFjZSBBaXIgeyBjbGFzcyBDb2RlOyB9
CiAKK25hbWVzcGFjZSBCMyB7CisKK2NsYXNzIFByb2NlZHVyZTsKKwogLy8gVGhpcyBsb3dlcnMg
dGhlIGN1cnJlbnQgQjMgcHJvY2VkdXJlIHRvIGFuIEFpciBjb2RlLiBOb3RlIHRoYXQgdGhpcyBh
c3N1bWVzIHRoYXQgdGhlIHByb2NlZHVyZSBpcyBpbgogLy8gcXVpcmtzIG1vZGUsIGJ1dCBpdCBk
b2VzIG5vdCBhc3NlcnQgdGhpcywgdG8gc2ltcGxpZnkgaG93IHdlIHdyaXRlIHRlc3RzLgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCmluZGV4IGU2YzRlYTc2NDJlLi5jYWUx
YTAzMzRjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKQEAgLTQ2LDcg
KzQ2LDExIEBACiAjaW5jbHVkZSA8d3RmL1RyaVN0YXRlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKK25hbWVzcGFjZSBKU0Mgewor
CituYW1lc3BhY2UgQWlyIHsgY2xhc3MgQ29kZTsgfQorCituYW1lc3BhY2UgQjMgewogCiBjbGFz
cyBCYXNpY0Jsb2NrOwogY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQ7CkBAIC01Niw4ICs2MCw2IEBA
IGNsYXNzIFN0YWNrU2xvdDsKIGNsYXNzIFZhbHVlOwogY2xhc3MgVmFyaWFibGU7CiAKLW5hbWVz
cGFjZSBBaXIgeyBjbGFzcyBDb2RlOyB9Ci0KIHR5cGVkZWYgdm9pZCBXYXNtQm91bmRzQ2hlY2tH
ZW5lcmF0b3JGdW5jdGlvbihDQ2FsbEhlbHBlcnMmLCBHUFJSZWcpOwogdHlwZWRlZiBTaGFyZWRU
YXNrPFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvckZ1bmN0aW9uPiBXYXNtQm91bmRzQ2hlY2tHZW5l
cmF0b3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURv
dWJsZVRvRmxvYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91Ymxl
VG9GbG9hdC5jcHAKaW5kZXggMWM3YjBkMDAyYTEuLjE1ZDFiNTM5NTFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcApAQCAtMzks
NyArMzksOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogbmFtZXNwYWNlIHsK
IAotYm9vbCB2ZXJib3NlID0gZmFsc2U7CisjdW5kZWYgdmVyYm9zZQorI2RlZmluZSB2ZXJib3Nl
IGZhbHNlCiBib29sIHByaW50UmVtYWluaW5nQ29udmVyc2lvbnMgPSBmYWxzZTsKIAogY2xhc3Mg
RG91YmxlVG9GbG9hdFJlZHVjdGlvbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNS
ZWR1Y2VTdHJlbmd0aC5jcHAKaW5kZXggZDk1MjI0NzgzODUuLjNkNTgxMDE2MWMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCkBAIC04OCw3ICs4
OCw4IEBAIG5hbWVzcGFjZSB7CiAvLyBjb25zdGFudHMgdGhlbiB0aGUgY2Fub25pY2FsIGZvcm0g
aW52b2x2ZXMgdGhlIGxvd2VyLWluZGV4ZWQgdmFsdWUgZmlyc3QuIEdpdmVuIEFkZCh4LCB5KSwg
aXQncwogLy8gY2Fub25pY2FsIGlmIHgtPmluZGV4KCkgPD0geS0+aW5kZXgoKS4KIAotYm9vbCB2
ZXJib3NlID0gZmFsc2U7CisjdW5kZWYgdmVyYm9zZQorI2RlZmluZSB2ZXJib3NlIGZhbHNlCiAK
IC8vIEZJWE1FOiBUaGlzIEludFJhbmdlIHN0dWZmIHNob3VsZCBiZSByZWZhY3RvcmVkIGludG8g
YSBnZW5lcmFsIGNvbnN0YW50IHByb3BhZ2F0b3IuIEl0J3Mgd2VpcmQKIC8vIHRoYXQgaXQncyBq
dXN0IHNpdHRpbmcgaGVyZSBpbiB0aGlzIGZpbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNTdGFja1Nsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0
YWNrU2xvdC5oCmluZGV4IDRhNDc1MDk5YjNhLi5kZmIxMDEzMTY4OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2tTbG90LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzU3RhY2tTbG90LmgKQEAgLTMzLDE0ICszMywxNiBAQAogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCi1uYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKLQotY2xhc3MgUHJvY2VkdXJlOworbmFtZXNwYWNlIEpT
QyB7CiAKIG5hbWVzcGFjZSBBaXIgewotY2xhc3MgU3RhY2tTbG90OworICAgIGNsYXNzIFN0YWNr
U2xvdDsKIH0gLy8gbmFtZXNwYWNlIEFpcgogCituYW1lc3BhY2UgQjMgeworCitjbGFzcyBQcm9j
ZWR1cmU7CisKIGNsYXNzIFN0YWNrU2xvdCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3Rh
Y2tTbG90KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmgKaW5kZXggNmU4ZWFjMzI4ZGYuLmY0MmM0MTY4
NTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNp
YWwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuaApA
QCAtMzEsOSArMzEsMTEgQEAKICNpbmNsdWRlICJBaXJTcGVjaWFsLmgiCiAjaW5jbHVkZSAiQjNW
YWx1ZVJlcC5oIgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKK25hbWVzcGFjZSBK
U0MgewogCiBuYW1lc3BhY2UgQWlyIHsgY2xhc3MgQ29kZTsgfQorICAgIAorbmFtZXNwYWNlIEIz
IHsKIAogLy8gVGhpcyBpcyBhIGJhc2UgY2xhc3MgZm9yIHNwZWNpYWxzIHRoYXQgaGF2ZSBzdGFj
a21hcHMuIE5vdGUgdGhhdCBpdCBjYW4gZmluZCB0aGUgU3RhY2ttYXAgYnkKIC8vIGFza2luZyBm
b3IgdGhlIEluc3QncyBvcmlnaW4uIEhlbmNlLCB0aGVzZSBvYmplY3RzIGRvbid0IG5lZWQgdG8g
ZXZlbiBob2xkIGEgcmVmZXJlbmNlIHRvIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQnlMaW5lYXJTY2FuLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRT
dGFja0J5TGluZWFyU2Nhbi5jcHAKaW5kZXggZDM5ZGViZmRmM2MuLjY3NTRkOTg3ODRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJz
QW5kU3RhY2tCeUxpbmVhclNjYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0J5TGluZWFyU2Nhbi5jcHAKQEAgLTQ0LDcg
KzQ0LDExIEBACiAjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CiAjaW5jbHVkZSA8d3RmL1Jhbmdl
Lmg+CiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKK25h
bWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIEIzIHsgfQordXNpbmcgbmFtZXNwYWNlIEIzOworCisg
bmFtZXNwYWNlIEFpciB7CiAKIG5hbWVzcGFjZSB7CiAKQEAgLTY2NSw2ICs2NjksNiBAQCB2b2lk
IGFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tCeUxpbmVhclNjYW4oQ29kZSYgY29kZSkKICAgICAg
ICAgZGF0YUxvZygiQWlyIGFmdGVyIGxpbmVhciBzY2FuOlxuIiwgY29kZSk7CiB9CiAKLX0gfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpBaXIKIAog
I2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tCeUxpbmVhclNjYW4uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0J5
TGluZWFyU2Nhbi5oCmluZGV4IDRkYzdlYjQ5MDQ5Li5hZTJlMzM2NzVlOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNr
QnlMaW5lYXJTY2FuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxv
Y2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQnlMaW5lYXJTY2FuLmgKQEAgLTMwLDcgKzMwLDExIEBACiAj
aW5jbHVkZSAiQ1BVLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogCi1uYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFj
ZSBCMyB7IH0KK3VzaW5nIG5hbWVzcGFjZSBCMzsKKworIG5hbWVzcGFjZSBBaXIgewogCiBjbGFz
cyBDb2RlOwogCkBAIC00OCw2ICs1Miw2IEBAIGNsYXNzIENvZGU7CiAvLyBUaGlzIGFsc28gZG9l
cyBzdGFjayBhbGxvY2F0aW9uIGFzIGFuIGFmdGVydGhvdWdodC4gSXQgZG9lcyBub3QgZG8gYW55
IHNwaWxsIGNvYWxlc2NpbmcuCiB2b2lkIGFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tCeUxpbmVh
clNjYW4oQ29kZSYpOwogCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCit9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0J5R3Jh
cGhDb2xvcmluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRl
UmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5nLmNwcAppbmRleCAzZGY4MjdiMWUzOS4uZmQ1MzhlZGQ5
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVS
ZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuY3BwCkBAIC00MCw3ICs0
MCwxMSBAQAogI2luY2x1ZGUgIkFpclVzZUNvdW50cy5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0RHVt
cC5oPgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7Citu
YW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBCMyB7IH0KK3VzaW5nIG5hbWVzcGFjZSBCMzsKKwor
IG5hbWVzcGFjZSBBaXIgewogCiBuYW1lc3BhY2UgewogCkBAIC0yMjA0LDYgKzIyMDgsNiBAQCB2
b2lkIGFsbG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5nKENvZGUmIGNvZGUpCiAgICAgZ3Jh
cGhDb2xvcmluZ1JlZ2lzdGVyQWxsb2NhdGlvbi5ydW4oKTsKIH0KIAotfSB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6QjM6OkFpcgorfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkFpcgogCiAjZW5kaWYgLy8g
RU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQWxsb2NhdGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuaAppbmRleCA1
Y2IyYzQ3NTg5YS4uOWUxMWNjMzcxZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9y
aW5nLmgKQEAgLTMwLDcgKzMwLDExIEBACiAjaW5jbHVkZSAiQ1BVLmgiCiAjaW5jbHVkZSAiT3B0
aW9ucy5oIgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7
CituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBCMyB7IH0KK3VzaW5nIG5hbWVzcGFjZSBCMzsK
KworIG5hbWVzcGFjZSBBaXIgewogCiBjbGFzcyBDb2RlOwogCkBAIC01MSw2ICs1NSw2IEBAIGlu
bGluZSBib29sIHVzZUlSQygpCiAvLyBodHRwOi8vd3d3LmNzLmNtdS5lZHUvYWZzL2NzL2FjYWRl
bWljL2NsYXNzLzE1NzQ1LXMwNy93d3cvcGFwZXJzL2dlb3JnZS5wZGYKIHZvaWQgYWxsb2NhdGVS
ZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcoQ29kZSYpOwogCi19IH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpCMzo6QWlyCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUo
QjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxv
Y2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZy5jcHAKaW5kZXggZTg2MGQ5Y2NjNWMu
LmIwZTU0ZTBmYjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckFsbG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZy5jcHAKQEAgLTM4LDEx
ICszOCwxNiBAQAogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSA8d3RmL0xp
c3REdW1wLmg+CiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWly
IHsKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIEIzIHsgfQordXNpbmcgbmFtZXNwYWNlIEIz
OworCisgbmFtZXNwYWNlIEFpciB7CiAKIG5hbWVzcGFjZSB7CiAKLWNvbnN0IGJvb2wgdmVyYm9z
ZSA9IGZhbHNlOworI3VuZGVmIHZlcmJvc2UKKyNkZWZpbmUgdmVyYm9zZSBmYWxzZQogCiBzdHJ1
Y3QgQ29hbGVzY2FibGVNb3ZlIHsKICAgICBDb2FsZXNjYWJsZU1vdmUoKQpAQCAtMzE2LDcgKzMy
MSw3IEBAIHZvaWQgYWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZyhDb2RlJiBjb2RlKQogICAg
IGNvZGUuc2V0U3RhY2tJc0FsbG9jYXRlZCh0cnVlKTsKIH0KIAotfSB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6QjM6OkFpcgorfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkFpcgogCiAjZW5kaWYgLy8gRU5B
QkxFKEIzX0pJVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckFsbG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcuaAppbmRleCAzN2Y0YWRhZjA3
Yi4uMzEwZTg5ZmVlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZy5oCkBAIC0yNyw3ICsy
NywxMSBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMgeyB9
Cit1c2luZyBuYW1lc3BhY2UgQjM7CisKKyBuYW1lc3BhY2UgQWlyIHsKIAogY2xhc3MgQ29kZTsK
IApAQCAtNDEsNiArNDUsNiBAQCBjbGFzcyBDb2RlOwogCiB2b2lkIGFsbG9jYXRlU3RhY2tCeUdy
YXBoQ29sb3JpbmcoQ29kZSYpOwogCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCit9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCmluZGV4IGY5ZTQ2OWMwNDdjLi5hYzJk
YzJkODhhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmNwcApAQCAtMzks
NyArMzksMTEgQEAKICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdyZXR1cm4tdHlw
ZSIKICNlbmRpZiAvLyBDT01QSUxFUihHQ0MpICYmIEFTU0VSVF9ESVNBQkxFRAogCi1uYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CituYW1lc3BhY2UgSlNDIHsK
K25hbWVzcGFjZSBCMyB7IH0KK3VzaW5nIG5hbWVzcGFjZSBCMzsKKworIG5hbWVzcGFjZSBBaXIg
ewogCiBib29sIEFyZzo6aXNTdGFja01lbW9yeSgpIGNvbnN0CiB7CkBAIC0yMDYsMTEgKzIxMCwx
MSBAQCB2b2lkIEFyZzo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpB
aXIKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpBaXIKIAogbmFtZXNwYWNlIFdURiB7CiAKLXVzaW5n
IG5hbWVzcGFjZSBKU0M6OkIzOjpBaXI7Cit1c2luZyBuYW1lc3BhY2UgSlNDOjpBaXI7CiAKIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBcmc6OktpbmQga2luZCkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCmluZGV4IDdhMzhkMTA4ZDNmLi5hZjVlMjQ0
YzRjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCkBAIC00MCw5ICs0MCwx
NSBAQAogI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3JldHVybi10eXBlIgogI2Vu
ZGlmIC8vIENPTVBJTEVSKEdDQykgJiYgQVNTRVJUX0RJU0FCTEVECiAKLW5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgQjMgeworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMgeyB9Cit1c2lu
ZyBuYW1lc3BhY2UgQjM7CiAKKworCituYW1lc3BhY2UgQjMgewogY2xhc3MgVmFsdWU7Cit9CiAK
IG5hbWVzcGFjZSBBaXIgewogCkBAIC0xNDY4LDI0ICsxNDc0LDI0IEBAIHN0cnVjdCBBcmdIYXNo
IHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9
IHRydWU7CiB9OwogCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCit9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6QWlyCiAKIG5hbWVzcGFjZSBXVEYgewogCi1KU19FWFBPUlRfUFJJVkFURSB2
b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkIzOjpBaXI6OkFyZzo6S2luZCk7
Ci1KU19FWFBPUlRfUFJJVkFURSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6
OkIzOjpBaXI6OkFyZzo6VGVtcGVyYXR1cmUpOwotSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpCMzo6QWlyOjpBcmc6OlBoYXNlKTsKLUpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6QjM6OkFp
cjo6QXJnOjpUaW1pbmcpOwotSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiwgSlNDOjpCMzo6QWlyOjpBcmc6OlJvbGUpOwotSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpCMzo6QWlyOjpBcmc6OlNpZ25l
ZG5lc3MpOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiwgSlNDOjpBaXI6OkFyZzo6S2luZCk7CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIHByaW50SW50
ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkFpcjo6QXJnOjpUZW1wZXJhdHVyZSk7CitKU19FWFBP
UlRfUFJJVkFURSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkFpcjo6QXJn
OjpQaGFzZSk7CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mLCBKU0M6OkFpcjo6QXJnOjpUaW1pbmcpOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpBaXI6OkFyZzo6Um9sZSk7CitKU19FWFBPUlRf
UFJJVkFURSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkFpcjo6QXJnOjpT
aWduZWRuZXNzKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwot
dGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpCMzo6QWlyOjpBcmc+IHsKLSAgICB0
eXBlZGVmIEpTQzo6QjM6OkFpcjo6QXJnSGFzaCBIYXNoOwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVm
YXVsdEhhc2g8SlNDOjpBaXI6OkFyZz4geworICAgIHR5cGVkZWYgSlNDOjpBaXI6OkFyZ0hhc2gg
SGFzaDsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzOwotdGVt
cGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OkIzOjpBaXI6OkFyZz4gOiBTaW1wbGVDbGFz
c0hhc2hUcmFpdHM8SlNDOjpCMzo6QWlyOjpBcmc+IHsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hU
cmFpdHM8SlNDOjpBaXI6OkFyZz4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpBaXI6OkFy
Zz4gewogICAgIC8vIEJlY2F1c2UgbV9zY2FsZSBpcyAxIGluIHRoZSBlbXB0eSB2YWx1ZS4KICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmdJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZ0lubGluZXMuaAppbmRleCA5ZWZhYzRlOTgz
NS4uY2QyODk3MWFjYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQXJnSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJn
SW5saW5lcy5oCkBAIC0yOSw3ICsyOSwxMSBAQAogCiAjaW5jbHVkZSAiQWlyQXJnLmgiCiAKLW5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKK25hbWVzcGFjZSBK
U0MgeworbmFtZXNwYWNlIEIzIHsgfQordXNpbmcgbmFtZXNwYWNlIEIzOworCisgbmFtZXNwYWNl
IEFpciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmdUaGluZ0hlbHBlcjsKIApA
QCAtMTg5LDYgKzE5Myw2IEBAIHZvaWQgQXJnOjpmb3JFYWNoKFJvbGUgcm9sZSwgQmFuayBiYW5r
LCBXaWR0aCB3aWR0aCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICBBcmdUaGluZ0hlbHBl
cjxUaGluZz46OmZvckVhY2goKnRoaXMsIHJvbGUsIGJhbmssIHdpZHRoLCBmdW5jdG9yKTsKIH0K
IAotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkFpcgogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckJhc2ljQmxvY2suY3BwCmluZGV4IDE0ZDAxYWViNGZjLi41ZmVlMTAyN2Iz
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suY3Bw
CkBAIC0zMSw3ICszMSwxMSBAQAogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja1V0aWxzLmgiCiAjaW5j
bHVkZSA8d3RmL0xpc3REdW1wLmg+CiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBu
YW1lc3BhY2UgQWlyIHsKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIEIzIHsgfQordXNpbmcg
bmFtZXNwYWNlIEIzOworCisgbmFtZXNwYWNlIEFpciB7CiAKIGNvbnN0IGNoYXIqIGNvbnN0IEJh
c2ljQmxvY2s6OmR1bXBQcmVmaXggPSAiIyI7CiAKQEAgLTk1LDYgKzk5LDYgQEAgQmFzaWNCbG9j
azo6QmFzaWNCbG9jayh1bnNpZ25lZCBpbmRleCwgZG91YmxlIGZyZXF1ZW5jeSkKIHsKIH0KIAot
fSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkFp
cgogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJCYXNpY0Jsb2NrLmgKaW5kZXggMzc5YzYzNTA0MWEuLjM5ZDQyM2RhYTNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaApAQCAtMzMsOSAr
MzMsMTUgQEAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKK25hbWVzcGFjZSBK
U0MgeworbmFtZXNwYWNlIEIzIHsgfQordXNpbmcgbmFtZXNwYWNlIEIzOwogCisKKworbmFtZXNw
YWNlIEIzIHsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBHZW5lcmljQmxvY2tJbnNlcnRpb25T
ZXQ7Cit9CiAKIG5hbWVzcGFjZSBBaXIgewogCkBAIC0xNzcsNiArMTgzLDYgQEAgaW5saW5lIERl
ZXBCYXNpY0Jsb2NrRHVtcCBkZWVwRHVtcChjb25zdCBCYXNpY0Jsb2NrKiBibG9jaykKICAgICBy
ZXR1cm4gRGVlcEJhc2ljQmxvY2tEdW1wKGJsb2NrKTsKIH0KIAotfSB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6QjM6OkFpcgorfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkFpcgogCiAjZW5kaWYgLy8gRU5B
QkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
QmxvY2tJbnNlcnRpb25TZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJC
bG9ja0luc2VydGlvblNldC5jcHAKaW5kZXggMzk4ZDE0ZDc0NGQuLjM2ZDE0YTlhOTJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9u
U2V0LmNwcApAQCAtMzIsNyArMzIsMTEgQEAKICNpbmNsdWRlICJBaXJDb2RlLmgiCiAjaW5jbHVk
ZSA8d3RmL0J1YmJsZVNvcnQuaD4KIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5h
bWVzcGFjZSBBaXIgeworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMgeyB9Cit1c2luZyBu
YW1lc3BhY2UgQjM7CisKKyBuYW1lc3BhY2UgQWlyIHsKIAogQmxvY2tJbnNlcnRpb25TZXQ6OkJs
b2NrSW5zZXJ0aW9uU2V0KENvZGUgJmNvZGUpCiAgICAgOiBHZW5lcmljQmxvY2tJbnNlcnRpb25T
ZXQoY29kZS5tX2Jsb2NrcykKQEAgLTQzLDcgKzQ3LDcgQEAgQmxvY2tJbnNlcnRpb25TZXQ6On5C
bG9ja0luc2VydGlvblNldCgpCiB7CiB9CiAKLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpB
aXIKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQp
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNl
cnRpb25TZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRp
b25TZXQuaAppbmRleCBkMzc0NjNkMjViYi4uNDg2MDkzZTM2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmxvY2tJbnNlcnRpb25TZXQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrSW5zZXJ0aW9uU2V0LmgKQEAgLTMyLDcg
KzMyLDExIEBACiAjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewor
bmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMgeyB9Cit1c2luZyBuYW1lc3BhY2UgQjM7CisK
KyBuYW1lc3BhY2UgQWlyIHsKIAogY2xhc3MgSW5zZXJ0aW9uU2V0OwogCkBAIC00Nyw2ICs1MSw2
IEBAIHB1YmxpYzoKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY5MjUzCiB9OwogCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCit9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCbG9ja1dvcmtsaXN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJsb2NrV29ya2xpc3QuaAppbmRleCBmMTkyOTM1
MWJlZi4uNWY3NTJhZTQ1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQmxvY2tXb3JrbGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQmxvY2tXb3JrbGlzdC5oCkBAIC0zMCw3ICszMCwxMSBAQAogI2luY2x1ZGUgIkFpckJhc2lj
QmxvY2suaCIKICNpbmNsdWRlICJCM0Jsb2NrV29ya2xpc3QuaCIKIAotbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworbmFtZXNwYWNlIEpTQyB7CituYW1lc3Bh
Y2UgQjMgeyB9Cit1c2luZyBuYW1lc3BhY2UgQjM7CisKKyBuYW1lc3BhY2UgQWlyIHsKIAogdHlw
ZWRlZiBHcmFwaE5vZGVXb3JrbGlzdDxCYXNpY0Jsb2NrKiwgSW5kZXhTZXQ8QmFzaWNCbG9jayo+
PiBCbG9ja1dvcmtsaXN0OwogCkBAIC00Nyw2ICs1MSw2IEBAIHR5cGVkZWYgR3JhcGhOb2RlV2l0
aE9yZGVyPEJhc2ljQmxvY2sqPiBCbG9ja1dpdGhPcmRlcjsKIAogdHlwZWRlZiBQb3N0T3JkZXJH
cmFwaE5vZGVXb3JrbGlzdDxCYXNpY0Jsb2NrKiwgSW5kZXhTZXQ8QmFzaWNCbG9jayo+PiBQb3N0
T3JkZXJCbG9ja1dvcmtsaXN0OwogCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCit9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCcmVha0NyaXRpY2FsRWRn
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCcmVha0NyaXRpY2FsRWRn
ZXMuY3BwCmluZGV4IDE0ODJmM2QzZmQ5Li5jNzZiNzgyMGVmOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCcmVha0NyaXRpY2FsRWRnZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQnJlYWtDcml0aWNhbEVkZ2VzLmNwcApAQCAt
MzIsNyArMzIsMTEgQEAKICNpbmNsdWRlICJBaXJDb2RlLmgiCiAjaW5jbHVkZSAiQWlySW5zdElu
bGluZXMuaCIKIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIg
eworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMgeyB9Cit1c2luZyBuYW1lc3BhY2UgQjM7
CisKKyBuYW1lc3BhY2UgQWlyIHsKIAogdm9pZCBicmVha0NyaXRpY2FsRWRnZXMoQ29kZSYgY29k
ZSkKIHsKQEAgLTU4LDcgKzYyLDcgQEAgdm9pZCBicmVha0NyaXRpY2FsRWRnZXMoQ29kZSYgY29k
ZSkKICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZSgpOwogfQogCi19IH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpCMzo6QWlyCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWlyCiAKICNlbmRpZiAvLyBFTkFC
TEUoQjNfSklUKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckJyZWFrQ3JpdGljYWxFZGdlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJC
cmVha0NyaXRpY2FsRWRnZXMuaAppbmRleCA5NmY4OTY0YmI2ZS4uZjA0OWI3ZTE4YTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQnJlYWtDcml0aWNhbEVkZ2Vz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCcmVha0NyaXRpY2FsRWRn
ZXMuaApAQCAtMjcsMTMgKzI3LDE3IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCi1uYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CituYW1lc3BhY2UgSlNDIHsK
K25hbWVzcGFjZSBCMyB7IH0KK3VzaW5nIG5hbWVzcGFjZSBCMzsKKworIG5hbWVzcGFjZSBBaXIg
ewogCiBjbGFzcyBDb2RlOwogCiB2b2lkIGJyZWFrQ3JpdGljYWxFZGdlcyhDb2RlJik7CiAKLX0g
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpBaXIK
IAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmNwcAppbmRleCBkZWYwZjRjZTQ3NS4uZjk1N2MzODhi
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ0NhbGxTcGVj
aWFsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsU3BlY2lh
bC5jcHAKQEAgLTI4LDcgKzI4LDExIEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCi1uYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CituYW1lc3BhY2UgSlNDIHsK
K25hbWVzcGFjZSBCMyB7IH0KK3VzaW5nIG5hbWVzcGFjZSBCMzsKKworIG5hbWVzcGFjZSBBaXIg
ewogCiBDQ2FsbFNwZWNpYWw6OkNDYWxsU3BlY2lhbCgpCiB7CkBAIC0xNzAsNiArMTc0LDYgQEAg
dm9pZCBDQ2FsbFNwZWNpYWw6OmRlZXBEdW1wSW1wbChQcmludFN0cmVhbSYgb3V0KSBjb25zdAog
ICAgIG91dC5wcmludCgiZnVuY3Rpb24gY2FsbCB0aGF0IHVzZXMgdGhlIEMgY2FsbGluZyBjb252
ZW50aW9uLiIpOwogfQogCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCit9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmgKaW5kZXggYTVkMjEwZDRk
YWYuLjFmZjQzZjExZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckNDYWxsU3BlY2lhbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
Q0NhbGxTcGVjaWFsLmgKQEAgLTI5LDcgKzI5LDExIEBACiAKICNpbmNsdWRlICJBaXJTcGVjaWFs
LmgiCiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKK25h
bWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIEIzIHsgfQordXNpbmcgbmFtZXNwYWNlIEIzOworCisg
bmFtZXNwYWNlIEFpciB7CiAKIC8vIFVzZSB0aGlzIHNwZWNpYWwgZm9yIGNvbnN0cnVjdGluZyBh
IEMgY2FsbC4gQXJnIDAgaXMgb2YgY291cnNlIGEgU3BlY2lhbCBhcmcgdGhhdCByZWZlcnMgdG8g
dGhlCiAvLyBDQ2FsbFNwZWNpYWwgb2JqZWN0LiBBcmcgMSBpcyB0aGUgY2FsbGVlLCBhbmQgaXQg
Y2FuIGJlIGFuIEltbVB0ciwgYSByZWdpc3Rlciwgb3IgYW4gYWRkcmVzcy4gVGhlCkBAIC04MCw2
ICs4NCw2IEBAIHByaXZhdGU6CiAgICAgUmVnaXN0ZXJTZXQgbV9lbXB0eVJlZ3M7CiB9OwogCi19
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWly
CiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJDQ2FsbGluZ0NvbnZlbnRpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJDQ2FsbGluZ0NvbnZlbnRpb24uY3BwCmluZGV4IDBhYmUxYjNmYjM1
Li43MjI4N2Q3MTlhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJDQ2FsbGluZ0NvbnZlbnRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQ0NhbGxpbmdDb252ZW50aW9uLmNwcApAQCAtMzMsNyArMzMsMTEgQEAKICNpbmNsdWRl
ICJCM0NDYWxsVmFsdWUuaCIKICNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgogCi1uYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CituYW1lc3BhY2UgSlNDIHsK
K25hbWVzcGFjZSBCMyB7IH0KK3VzaW5nIG5hbWVzcGFjZSBCMzsKKworIG5hbWVzcGFjZSBBaXIg
ewogCiBuYW1lc3BhY2UgewogCkBAIC0xMjEsNyArMTI1LDcgQEAgSW5zdCBidWlsZENDYWxsKENv
ZGUmIGNvZGUsIFZhbHVlKiBvcmlnaW4sIGNvbnN0IFZlY3RvcjxBcmc+JiBhcmd1bWVudHMpCiAg
ICAgcmV0dXJuIGluc3Q7CiB9CiAKLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKK30g
fSAvLyBuYW1lc3BhY2UgSlNDOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ0NhbGxpbmdDb252ZW50
aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsaW5nQ29udmVudGlv
bi5oCmluZGV4IDc2YWNjMjlhYmY1Li44YTMyNTdmZTE5YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDQ2FsbGluZ0NvbnZlbnRpb24uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNDYWxsaW5nQ29udmVudGlvbi5oCkBAIC0zMiw5ICsz
MiwxNSBAQAogI2luY2x1ZGUgIkIzVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAot
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFj
ZSBCMyB7IH0KK3VzaW5nIG5hbWVzcGFjZSBCMzsKIAorCisKK25hbWVzcGFjZSBCMyB7CiBjbGFz
cyBDQ2FsbFZhbHVlOworfQogCiBuYW1lc3BhY2UgQWlyIHsKIApAQCAtNDYsNiArNTIsNiBAQCBU
bXAgY0NhbGxSZXN1bHQoVHlwZSk7CiAKIEluc3QgYnVpbGRDQ2FsbChDb2RlJiwgVmFsdWUqIG9y
aWdpbiwgY29uc3QgVmVjdG9yPEFyZz4mKTsKIAotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6
OkFpcgorfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkFpcgogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJ
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ0ZHLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNGRy5oCmluZGV4IDJlNDVhZGIwNGQzLi5l
NzE3ZWNlZTU1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJD
RkcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNGRy5oCkBAIC0zMiw3
ICszMiwxMSBAQAogI2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9JbmRl
eFNldC5oPgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7
CituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBCMyB7IH0KK3VzaW5nIG5hbWVzcGFjZSBCMzsK
KworIG5hbWVzcGFjZSBBaXIgewogCiBjbGFzcyBDRkcgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKENGRyk7CkBAIC01MSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBOb2RlIHJvb3QoKSB7IHJl
dHVybiBtX2NvZGVbMF07IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgTWFwPFQ+
IG5ld01hcCgpIHsgcmV0dXJuIEluZGV4TWFwPEpTQzo6QjM6OkFpcjo6QmFzaWNCbG9jayosIFQ+
KG1fY29kZS5zaXplKCkpOyB9CisgICAgTWFwPFQ+IG5ld01hcCgpIHsgcmV0dXJuIEluZGV4TWFw
PEpTQzo6QWlyOjpCYXNpY0Jsb2NrKiwgVD4obV9jb2RlLnNpemUoKSk7IH0KIAogICAgIFN1Y2Nl
c3NvckNvbGxlY3Rpb248QmFzaWNCbG9jaywgQmFzaWNCbG9jazo6U3VjY2Vzc29yTGlzdD4gc3Vj
Y2Vzc29ycyhOb2RlIG5vZGUpIHsgcmV0dXJuIG5vZGUtPnN1Y2Nlc3NvckJsb2NrcygpOyB9CiAg
ICAgQmFzaWNCbG9jazo6UHJlZGVjZXNzb3JMaXN0JiBwcmVkZWNlc3NvcnMoTm9kZSBub2RlKSB7
IHJldHVybiBub2RlLT5wcmVkZWNlc3NvcnMoKTsgfQpAQCAtNzEsNiArNzUsNiBAQCBwcml2YXRl
OgogICAgIENvZGUmIG1fY29kZTsKIH07CiAKLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpB
aXIKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcAppbmRleCAwZDE1M2I5NTlh
Yy4uY2I0ZWQ1ZjhhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNw
cApAQCAtMzUsNyArMzUsMTEgQEAKICNpbmNsdWRlICJCM1N0YWNrU2xvdC5oIgogI2luY2x1ZGUg
PHd0Zi9MaXN0RHVtcC5oPgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNw
YWNlIEFpciB7CituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBCMyB7IH0KK3VzaW5nIG5hbWVz
cGFjZSBCMzsKKworIG5hbWVzcGFjZSBBaXIgewogCiBDb2RlOjpDb2RlKFByb2NlZHVyZSYgcHJv
YykKICAgICA6IG1fcHJvYyhwcm9jKQpAQCAtMjgyLDYgKzI4Niw2IEBAIHVuc2lnbmVkIENvZGU6
OmpzSGFzaCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotfSB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6QjM6OkFpcgorfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkFpcgogCiAjZW5kaWYgLy8g
RU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKaW5kZXgg
OTM3ZDA1MTMyMmEuLmYxODc0YzdhM2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckNvZGUuaApAQCAtMzksOSArMzksMTUgQEAKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgog
I2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIz
IHsKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIEIzIHsgfQordXNpbmcgbmFtZXNwYWNlIEIz
OwogCisKKworbmFtZXNwYWNlIEIzIHsKIGNsYXNzIFByb2NlZHVyZTsKK30KIAogI2lmIENPTVBJ
TEVSKEdDQykgJiYgQVNTRVJUX0RJU0FCTEVECiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gK
QEAgLTM1OSw3ICszNjUsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fb3B0TGV2ZWwgeyBk
ZWZhdWx0T3B0TGV2ZWwoKSB9OwogfTsKIAotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFp
cgorfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkFpcgogCiAjaWYgQ09NUElMRVIoR0NDKSAmJiBBU1NF
UlRfRElTQUJMRUQKICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckN1c3RvbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckN1c3RvbS5jcHAKaW5kZXggNDljYTU0YzI0ZWUuLjhmM2YwZTlkZjNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckN1c3RvbS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uY3BwCkBAIC0zMiw3
ICszMiwxMSBAQAogI2luY2x1ZGUgIkIzQ0NhbGxWYWx1ZS5oIgogI2luY2x1ZGUgIkIzVmFsdWVJ
bmxpbmVzLmgiCiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWly
IHsKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIEIzIHsgfQordXNpbmcgbmFtZXNwYWNlIEIz
OworCisgbmFtZXNwYWNlIEFpciB7CiAKIGJvb2wgUGF0Y2hDdXN0b206OmlzVmFsaWRGb3JtKElu
c3QmIGluc3QpCiB7CkBAIC0xODksNyArMTkzLDcgQEAgYm9vbCBXYXNtQm91bmRzQ2hlY2tDdXN0
b206OmlzVmFsaWRGb3JtKEluc3QmIGluc3QpCiB9CiAKIAotfSB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6QjM6OkFpcgorfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkFpcgogCiAjZW5kaWYgLy8gRU5BQkxF
KEIzX0pJVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJD
dXN0b20uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9tLmgKaW5kZXgg
YzZlYjljMTc3MTMuLjFkNjJmMWYxNWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckN1c3RvbS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQ3VzdG9tLmgKQEAgLTM0LDcgKzM0LDExIEBACiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMu
aCIKICNpbmNsdWRlICJCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmgiCiAKLW5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKK25hbWVzcGFjZSBKU0MgeworbmFtZXNw
YWNlIEIzIHsgfQordXNpbmcgbmFtZXNwYWNlIEIzOworCisgbmFtZXNwYWNlIEFpciB7CiAKIC8v
IFRoaXMgZGVmaW5lcyB0aGUgYmVoYXZpb3Igb2YgY3VzdG9tIGluc3RydWN0aW9ucyAtIGkuZS4g
dGhvc2Ugd2hvc2UgYmVoYXZpb3IgY2Fubm90IGJlCiAvLyBkZXNjcmliZWQgdXNpbmcgQWlyT3Bj
b2RlLm9wY29kZXMuIElmIHlvdSBkZWZpbmUgYW4gb3Bjb2RlIGFzICJjdXN0b20gRm9vIiBpbiB0
aGF0IGZpbGUsIHRoZW4KQEAgLTM1Nyw2ICszNjEsNiBAQCBzdHJ1Y3QgV2FzbUJvdW5kc0NoZWNr
Q3VzdG9tIDogcHVibGljIENvbW1vbkN1c3RvbUJhc2U8V2FzbUJvdW5kc0NoZWNrQ3VzdG9tPiB7
CiAgICAgfQogfTsKIAotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkFpcgogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRGlzYXNzZW1ibGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRGlzYXNzZW1ibGVyLmNwcAppbmRleCBmMjkxM2Q0
MDkxYS4uZjJjYWFkNWY4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyRGlzYXNzZW1ibGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckRpc2Fzc2VtYmxlci5jcHAKQEAgLTM1LDcgKzM1LDExIEBACiAjaW5jbHVkZSAiRGlzYXNz
ZW1ibGVyLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogCi1uYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBC
MyB7IH0KK3VzaW5nIG5hbWVzcGFjZSBCMzsKKworIG5hbWVzcGFjZSBBaXIgewogCiB2b2lkIERp
c2Fzc2VtYmxlcjo6c3RhcnRFbnRyeXBvaW50KENDYWxsSGVscGVycyYgaml0KQogewpAQCAtMTA5
LDYgKzExMyw2IEBAIHZvaWQgRGlzYXNzZW1ibGVyOjpkdW1wKENvZGUmIGNvZGUsIFByaW50U3Ry
ZWFtJiBvdXQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIsIGNvCiAgICAgZHVtcEFzbVJhbmdlKG1f
bGF0ZVBhdGhTdGFydCwgbV9sYXRlUGF0aEVuZCk7CiB9CiAKLX0gfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkIzOjpBaXIKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJM
RShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckRp
c2Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJEaXNhc3NlbWJs
ZXIuaAppbmRleCBjMjY5MGU1YzQ3Mi4uZDhlYTFmZDI0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRGlzYXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJEaXNhc3NlbWJsZXIuaApAQCAtMjksMTEgKzI5LDE1IEBACiAK
ICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKIAotbmFtZXNwYWNlIEpTQyB7IAorbmFtZXNwYWNl
IEpTQyB7CituYW1lc3BhY2UgQjMgeyB9Cit1c2luZyBuYW1lc3BhY2UgQjM7CisKKyAKIAogY2xh
c3MgTGlua0J1ZmZlcjsKIAotbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CituYW1lc3Bh
Y2UgQWlyIHsKIAogY2xhc3MgQmFzaWNCbG9jazsKIGNsYXNzIENvZGU7CkBAIC02MSw2ICs2NSw2
IEBAIHByaXZhdGU6CiAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBtX2xhdGVQYXRoRW5kOwogfTsK
IAotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkFpcgogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAKaW5kZXggM2FjNjc0YTJh
YTkuLmNlODliODE4MzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckVsaW1pbmF0ZURlYWRDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmNwcApAQCAtMzUsNyArMzUsMTEgQEAKICNpbmNsdWRl
ICJBaXJUbXBTZXQuaCIKICNpbmNsdWRlIDx3dGYvSW5kZXhTZXQuaD4KIAotbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworbmFtZXNwYWNlIEpTQyB7CituYW1l
c3BhY2UgQjMgeyB9Cit1c2luZyBuYW1lc3BhY2UgQjM7CisKKyBuYW1lc3BhY2UgQWlyIHsKIAog
Ym9vbCBlbGltaW5hdGVEZWFkQ29kZShDb2RlJiBjb2RlKQogewpAQCAtMTUyLDcgKzE1Niw3IEBA
IGJvb2wgZWxpbWluYXRlRGVhZENvZGUoQ29kZSYgY29kZSkKICAgICByZXR1cm4gISFyZW1vdmVk
SW5zdENvdW50OwogfQogCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCit9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmgKaW5k
ZXggMWI3MThmNjNkMTYuLjk2MjdmNzhkMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5oCkBAIC0yNyw3ICsyNywxMSBAQAog
CiAjaWYgRU5BQkxFKEIzX0pJVCkKIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5h
bWVzcGFjZSBBaXIgeworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMgeyB9Cit1c2luZyBu
YW1lc3BhY2UgQjM7CisKKyBuYW1lc3BhY2UgQWlyIHsKIAogY2xhc3MgQ29kZTsKIApAQCAtMzgs
NiArNDIsNiBAQCBjbGFzcyBDb2RlOwogCiBib29sIGVsaW1pbmF0ZURlYWRDb2RlKENvZGUmKTsK
IAotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkFpcgogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZmbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJFbWl0U2h1ZmZsZS5jcHAKaW5kZXggODgzZGM3MWJlNmMuLjhhZjk0ZjM3
OWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVtaXRTaHVm
ZmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVtaXRTaHVmZmxl
LmNwcApAQCAtMzMsMTEgKzMzLDE2IEBACiAjaW5jbHVkZSA8d3RmL0dyYXBoTm9kZVdvcmtsaXN0
Lmg+CiAjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIEIzIHsg
fQordXNpbmcgbmFtZXNwYWNlIEIzOworCisgbmFtZXNwYWNlIEFpciB7CiAKIG5hbWVzcGFjZSB7
CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOworI3VuZGVmIHZlcmJvc2UKKyNkZWZpbmUgdmVyYm9z
ZSBmYWxzZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogVG1wIGZpbmRQb3NzaWJsZVNj
cmF0Y2goQ29kZSYgY29kZSwgQmFuayBiYW5rLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKSB7CkBA
IC01NzIsNyArNTc3LDcgQEAgVmVjdG9yPEluc3Q+IGVtaXRTaHVmZmxlKAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZmbGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZmbGUuaAppbmRleCA4NmRjNTM1ZjQxNC4u
OTE3MDk2ODY1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
RW1pdFNodWZmbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVtaXRT
aHVmZmxlLmgKQEAgLTMxLDkgKzMxLDE1IEBACiAjaW5jbHVkZSAiQWlySW5zdC5oIgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CituYW1l
c3BhY2UgSlNDIHsKK25hbWVzcGFjZSBCMyB7IH0KK3VzaW5nIG5hbWVzcGFjZSBCMzsKIAorCisK
K25hbWVzcGFjZSBCMyB7CiBjbGFzcyBWYWx1ZTsKK30KIAogbmFtZXNwYWNlIEFpciB7CiAKQEAg
LTEzMCw2ICsxMzYsNiBAQCBWZWN0b3I8SW5zdD4gZW1pdFNodWZmbGUoCiAgICAgY29uc3Qgc3Rk
OjphcnJheTxBcmcsIDI+JiBncFNjcmF0Y2gsIGNvbnN0IHN0ZDo6YXJyYXk8QXJnLCAyPiYgZnBT
Y3JhdGNoLAogICAgIFZhbHVlKiBvcmlnaW4pOwogCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpC
Mzo6QWlyCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNf
SklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZp
b3VzU3BpbGxzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91
c1NwaWxscy5jcHAKaW5kZXggOWNiMTEwMWExMWYuLmM3YTQ5OTQ5YTEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAKQEAg
LTM1LDExICszNSwxNiBAQAogI2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9MaXN0RHVtcC5oPgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNl
IEFpciB7CituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBCMyB7IH0KK3VzaW5nIG5hbWVzcGFj
ZSBCMzsKKworIG5hbWVzcGFjZSBBaXIgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2Ug
PSBmYWxzZTsKKyN1bmRlZiB2ZXJib3NlCisjZGVmaW5lIHZlcmJvc2UgZmFsc2UKIAogY2xhc3Mg
Rml4T2J2aW91c1NwaWxscyB7CiBwdWJsaWM6CkBAIC02MTEsNyArNjE2LDcgQEAgdm9pZCBmaXhP
YnZpb3VzU3BpbGxzKENvZGUmIGNvZGUpCiAgICAgZml4T2J2aW91c1NwaWxscy5ydW4oKTsKIH0K
IAotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkFpcgogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuaAppbmRleCBmYjhlNDFmZTIzZi4u
ZTJiNzAxMDI5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
Rml4T2J2aW91c1NwaWxscy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
Rml4T2J2aW91c1NwaWxscy5oCkBAIC0yNyw3ICsyNywxMSBAQAogCiAjaWYgRU5BQkxFKEIzX0pJ
VCkKIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworbmFt
ZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMgeyB9Cit1c2luZyBuYW1lc3BhY2UgQjM7CisKKyBu
YW1lc3BhY2UgQWlyIHsKIAogY2xhc3MgQ29kZTsKIApAQCAtMzYsNiArNDAsNiBAQCBjbGFzcyBD
b2RlOwogLy8gY29tcHV0ZWQgZnJvbSkgYSByZWdpc3Rlci4KIHZvaWQgZml4T2J2aW91c1NwaWxs
cyhDb2RlJik7CiAKLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0
YWxscy5jcHAKaW5kZXggMDM3YzQwZmNjMjQuLjUzNjYzYzkyYzE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhQYXJ0aWFsUmVnaXN0ZXJT
dGFsbHMuY3BwCkBAIC0zOSw3ICszOSwxMSBAQAogI2luY2x1ZGUgPHd0Zi9JbmRleFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7
IG5hbWVzcGFjZSBBaXIgeworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMgeyB9Cit1c2lu
ZyBuYW1lc3BhY2UgQjM7CisKKyBuYW1lc3BhY2UgQWlyIHsKIAogbmFtZXNwYWNlIHsKIApAQCAt
MjM0LDYgKzIzOCw2IEBAIHZvaWQgZml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzKENvZGUmIGNvZGUp
CiAgICAgfQogfQogCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCit9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3Rh
bGxzLmgKaW5kZXggMDA5MzI3OTQ4YjkuLjY1ZGEyNDdhYWM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxz
LmgKQEAgLTI3LDcgKzI3LDExIEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCi1uYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CituYW1lc3BhY2UgSlNDIHsKK25h
bWVzcGFjZSBCMyB7IH0KK3VzaW5nIG5hbWVzcGFjZSBCMzsKKworIG5hbWVzcGFjZSBBaXIgewog
CiBjbGFzcyBDb2RlOwogCkBAIC00MSw2ICs0NSw2IEBAIGNsYXNzIENvZGU7CiAvLyBTZWUgIlBh
cnRpYWwgWE1NIFJlZ2lzdGVyIFN0YWxscyIgYW5kICJEZXBlbmRlbmN5IEJyZWFraW5nIElkaW9t
cyIgaW4gdGhlIG1hbnVhbC4KIHZvaWQgZml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzKENvZGUmKTsK
IAotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkFpcgogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyRml4U3BpbGxzQWZ0ZXJUZXJtaW5hbHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhTcGlsbHNBZnRlclRlcm1pbmFscy5jcHAKaW5k
ZXggOGVlM2E2N2E3YTguLjEyM2M1MGUyNzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckZpeFNwaWxsc0FmdGVyVGVybWluYWxzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFNwaWxsc0FmdGVyVGVybWluYWxzLmNwcApAQCAt
MzQsNyArMzQsMTEgQEAKICNpbmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkFp
clRtcElubGluZXMuaCIKIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFj
ZSBBaXIgeworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMgeyB9Cit1c2luZyBuYW1lc3Bh
Y2UgQjM7CisKKyBuYW1lc3BhY2UgQWlyIHsKIAogdm9pZCBmaXhTcGlsbHNBZnRlclRlcm1pbmFs
cyhDb2RlJiBjb2RlKQogewpAQCAtOTMsNyArOTcsNyBAQCB2b2lkIGZpeFNwaWxsc0FmdGVyVGVy
bWluYWxzKENvZGUmIGNvZGUpCiAgICAgICAgIGNvZGUucmVzZXRSZWFjaGFiaWxpdHkoKTsKIH0K
IAotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkFpcgogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhTcGlsbHNBZnRlclRlcm1pbmFscy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhTcGlsbHNBZnRlclRlcm1pbmFscy5oCmluZGV4
IDFhNWZjNTJjM2ZlLi5kYzRmODVjNjNlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJGaXhTcGlsbHNBZnRlclRlcm1pbmFscy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyRml4U3BpbGxzQWZ0ZXJUZXJtaW5hbHMuaApAQCAtMjcsNyAr
MjcsMTEgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIEIzIHsg
fQordXNpbmcgbmFtZXNwYWNlIEIzOworCisgbmFtZXNwYWNlIEFpciB7CiAKIGNsYXNzIENvZGU7
CiAKQEAgLTM4LDcgKzQyLDcgQEAgY2xhc3MgQ29kZTsKIC8vIFdlIGZpeCB0aGF0IGhlcmUuCiB2
b2lkIGZpeFNwaWxsc0FmdGVyVGVybWluYWxzKENvZGUmKTsKIAotfSB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6QjM6OkFpcgorfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkFpcgogCiAjZW5kaWYgLy8gRU5B
QkxFKEIzX0pJVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJGb3JtVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRm9ybVRhYmxl
LmgKaW5kZXggNmQzZTUwNDQ3MzUuLjM0ODMyYzZlNGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckZvcm1UYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyRm9ybVRhYmxlLmgKQEAgLTI5LDcgKzI5LDExIEBACiAKICNpbmNsdWRl
ICJBaXJBcmcuaCIKIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBB
aXIgeworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMgeyB9Cit1c2luZyBuYW1lc3BhY2Ug
QjM7CisKKyBuYW1lc3BhY2UgQWlyIHsKIAogc3RhdGljIGNvbnN0IHVpbnQ4X3QgZm9ybVJvbGVT
aGlmdCA9IDA7CiBzdGF0aWMgY29uc3QgdWludDhfdCBmb3JtUm9sZU1hc2sgPSAxNTsKQEAgLTYw
LDcgKzY0LDcgQEAgaW5saW5lIFdpZHRoIGRlY29kZUZvcm1XaWR0aCh1aW50OF90IHZhbHVlKQog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxXaWR0aD4oKHZhbHVlID4+IGZvcm1XaWR0aFNoaWZ0KSAm
IGZvcm1XaWR0aE1hc2spOwogfQogCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCit9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZyZXF1ZW50ZWRCbG9j
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGcmVxdWVudGVkQmxvY2suaApp
bmRleCAzN2NkMjg3MzZjOS4uNmU0OWMxYjZkYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyRnJlcXVlbnRlZEJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJGcmVxdWVudGVkQmxvY2suaApAQCAtMjksMTIgKzI5LDE2IEBACiAK
ICNpbmNsdWRlICJCM0dlbmVyaWNGcmVxdWVudGVkQmxvY2suaCIKIAotbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworbmFtZXNwYWNlIEpTQyB7CituYW1lc3Bh
Y2UgQjMgeyB9Cit1c2luZyBuYW1lc3BhY2UgQjM7CisKKyBuYW1lc3BhY2UgQWlyIHsKIAogY2xh
c3MgQmFzaWNCbG9jazsKIAogdHlwZWRlZiBHZW5lcmljRnJlcXVlbnRlZEJsb2NrPEJhc2ljQmxv
Y2s+IEZyZXF1ZW50ZWRCbG9jazsKIAotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkFpcgogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKaW5kZXggYjk3OTEw
YzRkMTMuLjgxNzEzODcxNjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckdlbmVyYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckdlbmVyYXRlLmNwcApAQCAtNTYsNyArNTYsMTEgQEAKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgi
CiAjaW5jbHVkZSA8d3RmL0luZGV4TWFwLmg+CiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
QjMgeyBuYW1lc3BhY2UgQWlyIHsKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIEIzIHsgfQor
dXNpbmcgbmFtZXNwYWNlIEIzOworCisgbmFtZXNwYWNlIEFpciB7CiAKIHZvaWQgcHJlcGFyZUZv
ckdlbmVyYXRpb24oQ29kZSYgY29kZSkKIHsKQEAgLTMwOSw2ICszMTMsNiBAQCB2b2lkIGdlbmVy
YXRlKENvZGUmIGNvZGUsIENDYWxsSGVscGVycyYgaml0KQogICAgIHBjVG9PcmlnaW5NYXAuYXBw
ZW5kSXRlbShqaXQubGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCksIE9yaWdpbigpKTsKIH0KIAot
fSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkFp
cgogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyR2VuZXJhdGUuaAppbmRleCA0MjNlZWNjZjQ4Ny4uZTI2MzcwNDM0ZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmgKQEAgLTMwLDEwICszMCwxNCBA
QAogI2luY2x1ZGUgIkIzQ29tbW9uLmgiCiAKIG5hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIEIz
IHsgfQordXNpbmcgbmFtZXNwYWNlIEIzOworCisKIAogY2xhc3MgQ0NhbGxIZWxwZXJzOwogCi1u
YW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKK25hbWVzcGFjZSBBaXIgewogCiBjbGFzcyBD
b2RlOwogCkBAIC00NSw2ICs0OSw2IEBAIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHJlcGFyZUZv
ckdlbmVyYXRpb24oQ29kZSYpOwogLy8gaW4gdGhlIHN1cHBsaWVkIGNvZGUgYXMgaXQgaXMgZ2Vu
ZXJhdGluZy4KIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZ2VuZXJhdGUoQ29kZSYsIENDYWxsSGVs
cGVycyYpOwogCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCit9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0aW9uQ29udGV4dC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0aW9uQ29udGV4dC5oCmluZGV4IDYyZmVh
MDNkNTgzLi4xOTczNjg2MzJlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJHZW5lcmF0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyR2VuZXJhdGlvbkNvbnRleHQuaApAQCAtMzQsNyArMzQsMTEgQEAKICNpbmNsdWRl
IDx3dGYvU2hhcmVkVGFzay5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworbmFtZXNwYWNlIEpTQyB7Citu
YW1lc3BhY2UgQjMgeyB9Cit1c2luZyBuYW1lc3BhY2UgQjM7CisKKyBuYW1lc3BhY2UgQWlyIHsK
IAogY2xhc3MgQ29kZTsKIApAQCAtNTQsNiArNTgsNiBAQCBwdWJsaWM6CiAgICAgQ29kZSogY29k
ZSB7IG51bGxwdHIgfTsKIH07CiAKLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKK30g
fSAvLyBuYW1lc3BhY2UgSlNDOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckhhbmRsZUNhbGxlZVNhdmVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySGFuZGxlQ2FsbGVlU2F2ZXMu
Y3BwCmluZGV4IDk2NTk1N2EyODQxLi4xZGM2NTZmMmQyMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJIYW5kbGVDYWxsZWVTYXZlcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJIYW5kbGVDYWxsZWVTYXZlcy5jcHAKQEAgLTMxLDcg
KzMxLDExIEBACiAjaW5jbHVkZSAiQWlyQ29kZS5oIgogI2luY2x1ZGUgIkFpckluc3RJbmxpbmVz
LmgiCiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKK25h
bWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIEIzIHsgfQordXNpbmcgbmFtZXNwYWNlIEIzOworCisg
bmFtZXNwYWNlIEFpciB7CiAKIHZvaWQgaGFuZGxlQ2FsbGVlU2F2ZXMoQ29kZSYgY29kZSkKIHsK
QEAgLTY5LDYgKzczLDYgQEAgdm9pZCBoYW5kbGVDYWxsZWVTYXZlcyhDb2RlJiBjb2RlKQogICAg
ICAgICBjb2RlLmFkZFN0YWNrU2xvdChieXRlU2l6ZSwgU3RhY2tTbG90S2luZDo6TG9ja2VkKSk7
CiB9CiAKLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckhhbmRsZUNhbGxlZVNhdmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckhhbmRsZUNhbGxlZVNhdmVzLmgKaW5kZXggMDk2NTgzNmQ4
Y2IuLmZiMTQwYmFhNGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckhhbmRsZUNhbGxlZVNhdmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJIYW5kbGVDYWxsZWVTYXZlcy5oCkBAIC0yNyw3ICsyNywxMSBAQAogCiAjaWYgRU5BQkxF
KEIzX0pJVCkKIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIg
eworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMgeyB9Cit1c2luZyBuYW1lc3BhY2UgQjM7
CisKKyBuYW1lc3BhY2UgQWlyIHsKIAogY2xhc3MgQ29kZTsKIApAQCAtNDIsNiArNDYsNiBAQCBj
bGFzcyBDb2RlOwogCiB2b2lkIGhhbmRsZUNhbGxlZVNhdmVzKENvZGUmKTsKIAotfSB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkFpcgogCiAjZW5k
aWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlySW5zZXJ0aW9uU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlySW5zZXJ0aW9uU2V0LmNwcAppbmRleCA0NTJkNDg4OGZkZC4uYmRlMGU4ZTUxN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zZXJ0aW9uU2V0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc2VydGlvblNldC5jcHAKQEAg
LTMxLDcgKzMxLDExIEBACiAjaW5jbHVkZSAiQWlyQmFzaWNCbG9jay5oIgogI2luY2x1ZGUgPHd0
Zi9CdWJibGVTb3J0Lmg+CiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3Bh
Y2UgQWlyIHsKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIEIzIHsgfQordXNpbmcgbmFtZXNw
YWNlIEIzOworCisgbmFtZXNwYWNlIEFpciB7CiAKIHZvaWQgSW5zZXJ0aW9uU2V0OjppbnNlcnRJ
bnN0cyhzaXplX3QgaW5kZXgsIFZlY3RvcjxJbnN0PiYmIGluc3RzKQogewpAQCAtNDUsNyArNDks
NyBAQCB2b2lkIEluc2VydGlvblNldDo6ZXhlY3V0ZShCYXNpY0Jsb2NrKiBibG9jaykKICAgICBl
eGVjdXRlSW5zZXJ0aW9ucyhibG9jay0+bV9pbnN0cywgbV9pbnNlcnRpb25zKTsKIH0KIAotfSB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkFpcgog
CiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJJbnNlcnRpb25TZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlySW5zZXJ0aW9uU2V0LmgKaW5kZXggMmYyNWZiYzM2YTAuLmM0NzlmMzk2ZmVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc2VydGlvblNldC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zZXJ0aW9uU2V0LmgKQEAg
LTMxLDcgKzMxLDExIEBACiAjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBB
aXIgeworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMgeyB9Cit1c2luZyBuYW1lc3BhY2Ug
QjM7CisKKyBuYW1lc3BhY2UgQWlyIHsKIAogY2xhc3MgQmFzaWNCbG9jazsKIGNsYXNzIENvZGU7
CkBAIC04MCw2ICs4NCw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPEluc2VydGlvbiwgOD4gbV9p
bnNlcnRpb25zOwogfTsKIAotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkFpcgogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3QuY3BwCmluZGV4IDU2NjZkYWI0YTVmLi4zMDgyNmVl
NTE3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3QuY3BwCkBAIC0zMiw3
ICszMiwxMSBAQAogI2luY2x1ZGUgIkIzVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvTGlzdER1bXAu
aD4KIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworbmFt
ZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMgeyB9Cit1c2luZyBuYW1lc3BhY2UgQjM7CisKKyBu
YW1lc3BhY2UgQWlyIHsKIAogYm9vbCBJbnN0OjpoYXNFYXJseURlZigpCiB7CkBAIC05Nyw2ICsx
MDEsNiBAQCB2b2lkIEluc3Q6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICB9CiB9
CiAKLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKK30gfSAvLyBuYW1lc3BhY2UgSlND
OjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlySW5zdC5oCmluZGV4IGYyYzBmMDJiM2NjLi42NDY2MGQwMjVmYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0LmgKQEAgLTMyLDEzICszMiwxNyBAQAogI2luY2x1ZGUg
IkNDYWxsSGVscGVycy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBCMyB7IH0KK3Vz
aW5nIG5hbWVzcGFjZSBCMzsKKworCiAKIGNsYXNzIENDYWxsSGVscGVyczsKIGNsYXNzIFJlZ2lz
dGVyU2V0OwogCiBuYW1lc3BhY2UgQjMgewotCiBjbGFzcyBWYWx1ZTsKK30KIAogbmFtZXNwYWNl
IEFpciB7CiAKQEAgLTIxNiw2ICsyMjAsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZm9yRWFjaEFy
Z0N1c3RvbShTY29wZWRMYW1iZGE8RWFjaEFyZ0NhbGxiYWNrPik7CiB9OwogCi19IH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpCMzo6QWlyCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWlyCiAKICNlbmRp
ZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJJbnN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJ
bnN0SW5saW5lcy5oCmluZGV4IDgzNWIxMDU0YzFhLi5iMWMwOWQ0OWQyMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGluZXMuaApAQCAtMzMsNyArMzMsMTEg
QEAKICNpbmNsdWRlICJBaXJTdGFja1Nsb3QuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCiAKLW5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKK25hbWVzcGFjZSBK
U0MgeworbmFtZXNwYWNlIEIzIHsgfQordXNpbmcgbmFtZXNwYWNlIEIzOworCisgbmFtZXNwYWNl
IEFpciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFRoaW5nLCB0eXBlbmFtZSBGdW5jdG9yPgogdm9p
ZCBJbnN0Ojpmb3JFYWNoKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCkBAIC0zNDksNiArMzUzLDYg
QEAgaW5saW5lIGJvb2wgaXNCcmFuY2hBdG9taWNTdHJvbmdDQVM2NFZhbGlkKGNvbnN0IEluc3Qm
IGluc3QpCiAgICAgcmV0dXJuIGlzQnJhbmNoQXRvbWljU3Ryb25nQ0FTVmFsaWQoaW5zdCk7CiB9
CiAKLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKK30gfSAvLyBuYW1lc3BhY2UgSlND
OjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpcktpbmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJLaW5kLmNwcAppbmRleCA2YmU4YTRmZTdkZS4uODVlMDJlY2EzZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyS2luZC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJLaW5kLmNwcApAQCAtMzAsNyArMzAsMTEgQEAKIAog
I2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMgeyB9
Cit1c2luZyBuYW1lc3BhY2UgQjM7CisKKyBuYW1lc3BhY2UgQWlyIHsKIAogdm9pZCBLaW5kOjpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CkBAIC00Myw3ICs0Nyw3IEBAIHZvaWQgS2lu
ZDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgICAgICBvdXQucHJpbnQoIj4iKTsK
IH0KIAotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkFpcgogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpcktpbmQuaAppbmRleCAxMjU4ZDRlZTEzNS4uZTgwZjE5ZDAzMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyS2luZC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyS2luZC5oCkBAIC0zMSw3ICszMSwxMSBAQAogI2luY2x1
ZGUgIkFpck9wY29kZS5oIgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCi1uYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CituYW1lc3BhY2UgSlNDIHsK
K25hbWVzcGFjZSBCMyB7IH0KK3VzaW5nIG5hbWVzcGFjZSBCMzsKKworIG5hbWVzcGFjZSBBaXIg
ewogCiAvLyBBaXIgb3Bjb2RlcyBhcmUgYWx3YXlzIGNhcnJpZWQgYXJvdW5kIHdpdGggc29tZSBm
bGFncy4gVGhlc2UgZmxhZ3MgYXJlIHVuZGVyc3Rvb2QgYXMgaGF2aW5nIG5vCiAvLyBtZWFuaW5n
IGlmIHRoZXkgYXJlIHNldCBmb3IgYW4gb3Bjb2RlIHRvIHdoaWNoIHRoZXkgZG8gbm90IGFwcGx5
LiBUaGlzIG1ha2VzIHNlbnNlLCBzaW5jZSBBaXIKQEAgLTgzLDcgKzg3LDcgQEAgc3RydWN0IEtp
bmQgewogICAgIGJvb2wgZWZmZWN0cyA6IDE7CiB9OwogCi19IH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpCMzo6QWlyCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUo
QjNfSklUKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxp
dmVuZXNzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckxpdmVuZXNzLmgKaW5k
ZXggMGIzM2NjYmEzODEuLjFjNjY2NDI2ZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckxpdmVuZXNzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJMaXZlbmVzcy5oCkBAIC0zMiw3ICszMiwxMSBAQAogI2luY2x1ZGUgIlN1cGVyU2Ft
cGxlci5oIgogI2luY2x1ZGUgPHd0Zi9MaXZlbmVzcy5oPgogCi1uYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBC
MyB7IH0KK3VzaW5nIG5hbWVzcGFjZSBCMzsKKworIG5hbWVzcGFjZSBBaXIgewogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBBZGFwdGVyPgogY2xhc3MgTGl2ZW5lc3MgOiBwdWJsaWMgV1RGOjpMaXZlbmVz
czxBZGFwdGVyPiB7CkBAIC01NCw2ICs1OCw2IEBAIHR5cGVkZWYgTGl2ZW5lc3M8VG1wTGl2ZW5l
c3NBZGFwdGVyPEZQPj4gRlBMaXZlbmVzczsKIHR5cGVkZWYgTGl2ZW5lc3M8VW5pZmllZFRtcExp
dmVuZXNzQWRhcHRlcj4gVW5pZmllZFRtcExpdmVuZXNzOwogdHlwZWRlZiBMaXZlbmVzczxTdGFj
a1Nsb3RMaXZlbmVzc0FkYXB0ZXI+IFN0YWNrU2xvdExpdmVuZXNzOwogCi19IH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMzo6QWlyCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWlyCiAKICNlbmRpZiAv
LyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJMaXZlbmVzc0FkYXB0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
TGl2ZW5lc3NBZGFwdGVyLmgKaW5kZXggMTg1MzFjN2I5ZTkuLmEyMDUyNzgxODZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckxpdmVuZXNzQWRhcHRlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTGl2ZW5lc3NBZGFwdGVyLmgKQEAg
LTM1LDcgKzM1LDExIEBACiAjaW5jbHVkZSAiQWlyVG1wSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0
Zi9JbmRleE1hcC5oPgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNl
IEFpciB7CituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBCMyB7IH0KK3VzaW5nIG5hbWVzcGFj
ZSBCMzsKKworIG5hbWVzcGFjZSBBaXIgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdGVyPgog
c3RydWN0IExpdmVuZXNzQWRhcHRlciB7CkBAIC0xODMsNyArMTg3LDcgQEAgc3RydWN0IFN0YWNr
U2xvdExpdmVuZXNzQWRhcHRlciA6IExpdmVuZXNzQWRhcHRlcjxTdGFja1Nsb3RMaXZlbmVzc0Fk
YXB0ZXI+IHsKICAgICBTdGFja1Nsb3QqIGluZGV4VG9WYWx1ZSh1bnNpZ25lZCBpbmRleCkgeyBy
ZXR1cm4gY29kZS5zdGFja1Nsb3RzKClbaW5kZXhdOyB9CiB9OwogCi19IH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpCMzo6QWlyCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWlyCiAKICNlbmRpZiAvLyBF
TkFCTEUoQjNfSklUKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckxvZ1JlZ2lzdGVyUHJlc3N1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJMb2dSZWdpc3RlclByZXNzdXJlLmNwcAppbmRleCBhODk0MWVkMjA3My4uZTUzMThkNjFi
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG9nUmVnaXN0
ZXJQcmVzc3VyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb2dS
ZWdpc3RlclByZXNzdXJlLmNwcApAQCAtMzMsNyArMzMsMTEgQEAKICNpbmNsdWRlICJBaXJJbnN0
SW5saW5lcy5oIgogI2luY2x1ZGUgIkFpclJlZ0xpdmVuZXNzLmgiCiAKLW5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKK25hbWVzcGFjZSBKU0MgeworbmFtZXNw
YWNlIEIzIHsgfQordXNpbmcgbmFtZXNwYWNlIEIzOworCisgbmFtZXNwYWNlIEFpciB7CiAKIHZv
aWQgbG9nUmVnaXN0ZXJQcmVzc3VyZShDb2RlJiBjb2RlKQogewpAQCAtOTcsNyArMTAxLDcgQEAg
dm9pZCBsb2dSZWdpc3RlclByZXNzdXJlKENvZGUmIGNvZGUpCiAgICAgfQogfQogCi19IH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWlyCiAKICNl
bmRpZiAvLyBFTkFCTEUoQjNfSklUKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckxvZ1JlZ2lzdGVyUHJlc3N1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyTG9nUmVnaXN0ZXJQcmVzc3VyZS5oCmluZGV4IDNmN2MzZTI0YzA1Li45Nzgy
ZGE3YjQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb2dS
ZWdpc3RlclByZXNzdXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJM
b2dSZWdpc3RlclByZXNzdXJlLmgKQEAgLTI3LDEzICsyNywxNyBAQAogCiAjaWYgRU5BQkxFKEIz
X0pJVCkKIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewor
bmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMgeyB9Cit1c2luZyBuYW1lc3BhY2UgQjM7CisK
KyBuYW1lc3BhY2UgQWlyIHsKIAogY2xhc3MgQ29kZTsKIAogLy8gRHVtcHMgdGhlIHJlZ2lzdGVy
cyB0aGF0IGFyZSB1c2VkIGF0IGVhY2ggaW5zdHJ1Y3Rpb24uCiB2b2lkIGxvZ1JlZ2lzdGVyUHJl
c3N1cmUoQ29kZSYpOwogCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCit9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3Bw
CmluZGV4IGEwMDI5ZDQzOWM5Li43NjFiN2I2YTY1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcApAQCAtNDIsMTEg
KzQyLDE2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTGlzdER1
bXAuaD4KIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewor
bmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMgeyB9Cit1c2luZyBuYW1lc3BhY2UgQjM7CisK
KyBuYW1lc3BhY2UgQWlyIHsKIAogbmFtZXNwYWNlIHsKIAotYm9vbCB2ZXJib3NlID0gZmFsc2U7
CisjdW5kZWYgdmVyYm9zZQorI2RlZmluZSB2ZXJib3NlIGZhbHNlCiAgICAgCiB9IC8vIGFub255
bW91cyBuYW1lc3BhY2UKIApAQCAtMjc3LDcgKzI4Miw3IEBAIHZvaWQgbG93ZXJBZnRlclJlZ0Fs
bG9jKENvZGUmIGNvZGUpCiAgICAgICAgIGRhdGFMb2coIkNvZGUgYWZ0ZXIgbG93ZXJBZnRlclJl
Z0FsbG9jOlxuIiwgY29kZSk7CiB9CiAKLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIK
K30gfSAvLyBuYW1lc3BhY2UgSlNDOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJl
Z0FsbG9jLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyQWZ0ZXJSZWdB
bGxvYy5oCmluZGV4IGQ4MjM0YTdlNjEyLi45NTNlYTliNTY2OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyQWZ0ZXJSZWdBbGxvYy5oCkBAIC0yNyw3
ICsyNywxMSBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMg
eyB9Cit1c2luZyBuYW1lc3BhY2UgQjM7CisKKyBuYW1lc3BhY2UgQWlyIHsKIAogY2xhc3MgQ29k
ZTsKIApAQCAtMzYsNiArNDAsNiBAQCBjbGFzcyBDb2RlOwogCiB2b2lkIGxvd2VyQWZ0ZXJSZWdB
bGxvYyhDb2RlJik7CiAKLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKK30gfSAvLyBu
YW1lc3BhY2UgSlNDOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyRW50cnlTd2l0Y2guY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckVudHJ5U3dpdGNoLmNwcAppbmRl
eCBiNTUwN2MzZjE3NS4uZjNiYzc4OWJlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyTG93ZXJFbnRyeVN3aXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJMb3dlckVudHJ5U3dpdGNoLmNwcApAQCAtMzQsNyArMzQsMTEgQEAK
ICNpbmNsdWRlICJBaXJQaGFzZVNjb3BlLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKIAot
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworbmFtZXNwYWNl
IEpTQyB7CituYW1lc3BhY2UgQjMgeyB9Cit1c2luZyBuYW1lc3BhY2UgQjM7CisKKyBuYW1lc3Bh
Y2UgQWlyIHsKIAogdm9pZCBsb3dlckVudHJ5U3dpdGNoKENvZGUmIGNvZGUpCiB7CkBAIC0xMDcs
NyArMTExLDcgQEAgdm9pZCBsb3dlckVudHJ5U3dpdGNoKENvZGUmIGNvZGUpCiAgICAgY29kZS5y
ZXNldFJlYWNoYWJpbGl0eSgpOwogfQogCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWly
Cit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyRW50cnlT
d2l0Y2guaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJFbnRyeVN3aXRj
aC5oCmluZGV4IGZmMzUwMDcyN2YyLi43NjRlMmM5ZTQwYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckVudHJ5U3dpdGNoLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckVudHJ5U3dpdGNoLmgKQEAgLTI3LDcgKzI3LDEx
IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIz
IHsgbmFtZXNwYWNlIEFpciB7CituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBCMyB7IH0KK3Vz
aW5nIG5hbWVzcGFjZSBCMzsKKworIG5hbWVzcGFjZSBBaXIgewogCiBjbGFzcyBDb2RlOwogCkBA
IC0zNiw2ICs0MCw2IEBAIGNsYXNzIENvZGU7CiAvLyB0aGUgYmFja3dhcmRzIHRyYW5zaXRpdmUg
Y2xvc3VyZSBmcm9tIGFsbCBFbnRyeVN3aXRjaGVzLgogdm9pZCBsb3dlckVudHJ5U3dpdGNoKENv
ZGUmKTsKIAotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkFpcgogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJNYWNyb3MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlck1hY3Jvcy5jcHAKaW5kZXggNWJjMjhmMGExMWIuLmNk
N2E2ODJkZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxv
d2VyTWFjcm9zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2Vy
TWFjcm9zLmNwcApAQCAtMzcsNyArMzcsMTEgQEAKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIK
ICNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsgbmFtZXNwYWNlIEFpciB7CituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBCMyB7IH0K
K3VzaW5nIG5hbWVzcGFjZSBCMzsKKworIG5hbWVzcGFjZSBBaXIgewogCiB2b2lkIGxvd2VyTWFj
cm9zKENvZGUmIGNvZGUpCiB7CkBAIC0xMzUsNyArMTM5LDcgQEAgdm9pZCBsb3dlck1hY3JvcyhD
b2RlJiBjb2RlKQogICAgIH0KIH0KIAotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkFpcgogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlck1hY3Jvcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlck1hY3Jvcy5oCmluZGV4IDJk
Y2Q3NmRmZTExLi5mZjM5MDAwMmNjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJMb3dlck1hY3Jvcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyTG93ZXJNYWNyb3MuaApAQCAtMjcsNyArMjcsMTEgQEAKIAogI2lmIEVOQUJMRShCM19K
SVQpCiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKK25h
bWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIEIzIHsgfQordXNpbmcgbmFtZXNwYWNlIEIzOworCisg
bmFtZXNwYWNlIEFpciB7CiAKIGNsYXNzIENvZGU7CiAKQEAgLTM2LDYgKzQwLDYgQEAgY2xhc3Mg
Q29kZTsKIAogdm9pZCBsb3dlck1hY3JvcyhDb2RlJik7CiAKLX0gfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkIzOjpBaXIKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJM
RShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxv
d2VyU3RhY2tBcmdzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJT
dGFja0FyZ3MuY3BwCmluZGV4IGY2M2JkNDE1MjI5Li42YTllNGU2MDA0NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlclN0YWNrQXJncy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlclN0YWNrQXJncy5jcHAKQEAgLTM2
LDcgKzM2LDExIEBACiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNpbmNsdWRlIDx3dGYv
TGlzdER1bXAuaD4KIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBB
aXIgeworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMgeyB9Cit1c2luZyBuYW1lc3BhY2Ug
QjM7CisKKyBuYW1lc3BhY2UgQWlyIHsKIAogdm9pZCBsb3dlclN0YWNrQXJncyhDb2RlJiBjb2Rl
KQogewpAQCAtMTQxLDcgKzE0NSw3IEBAIHZvaWQgbG93ZXJTdGFja0FyZ3MoQ29kZSYgY29kZSkK
ICAgICB9CiB9CiAKLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJTdGFja0FyZ3MuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJTdGFja0FyZ3MuaAppbmRleCA5YzQ5YjAz
YzgwOC4uZTc1ZjYxNjA2MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyTG93ZXJTdGFja0FyZ3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0Fpckxvd2VyU3RhY2tBcmdzLmgKQEAgLTI3LDcgKzI3LDExIEBACiAKICNpZiBFTkFCTEUoQjNf
SklUKQogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7Citu
YW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBCMyB7IH0KK3VzaW5nIG5hbWVzcGFjZSBCMzsKKwor
IG5hbWVzcGFjZSBBaXIgewogCiBjbGFzcyBDb2RlOwogCkBAIC0zNiw2ICs0MCw2IEBAIGNsYXNz
IENvZGU7CiAKIHZvaWQgbG93ZXJTdGFja0FyZ3MoQ29kZSYpOwogCi19IH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpCMzo6QWlyCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWlyCiAKICNlbmRpZiAvLyBF
TkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3BwCmluZGV4IDA0N2MwM2M5MzZlLi41ZDhiMmY5ZTJhZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcHRpbWl6ZUJsb2Nr
T3JkZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3B0aW1pemVC
bG9ja09yZGVyLmNwcApAQCAtMzQsNyArMzQsMTEgQEAKICNpbmNsdWRlICJBaXJQaGFzZVNjb3Bl
LmgiCiAjaW5jbHVkZSA8d3RmL0J1YmJsZVNvcnQuaD4KIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMg
eyB9Cit1c2luZyBuYW1lc3BhY2UgQjM7CisKKyBuYW1lc3BhY2UgQWlyIHsKIAogbmFtZXNwYWNl
IHsKIApAQCAtMTkzLDYgKzE5Nyw2IEBAIHZvaWQgb3B0aW1pemVCbG9ja09yZGVyKENvZGUmIGNv
ZGUpCiAgICAgfQogfQogCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCit9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcHRpbWl6ZUJsb2NrT3JkZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3B0aW1pemVCbG9ja09yZGVyLmgKaW5k
ZXggMzkxMWZjYzhkNGEuLjc1MTQ0NWIzMDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0Fpck9wdGltaXplQmxvY2tPcmRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyT3B0aW1pemVCbG9ja09yZGVyLmgKQEAgLTI5LDcgKzI5LDExIEBA
CiAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
QjMgeyBuYW1lc3BhY2UgQWlyIHsKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIEIzIHsgfQor
dXNpbmcgbmFtZXNwYWNlIEIzOworCisgbmFtZXNwYWNlIEFpciB7CiAKIGNsYXNzIEJhc2ljQmxv
Y2s7CiBjbGFzcyBDb2RlOwpAQCAtNDQsNiArNDgsNiBAQCBWZWN0b3I8QmFzaWNCbG9jayo+IGJs
b2Nrc0luT3B0aW1pemVkT3JkZXIoQ29kZSYpOwogCiB2b2lkIG9wdGltaXplQmxvY2tPcmRlcihD
b2RlJik7CiAKLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHAKaW5kZXggMzQzOTA4
ZWM0MTEuLjZlOTNiYTAzODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpclBhZEludGVyZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwCkBAIC0zMiw3ICszMiwxMSBAQAogI2luY2x1ZGUg
IkFpckluc2VydGlvblNldC5oIgogI2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCiAKLW5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKK25hbWVzcGFjZSBKU0Mg
eworbmFtZXNwYWNlIEIzIHsgfQordXNpbmcgbmFtZXNwYWNlIEIzOworCisgbmFtZXNwYWNlIEFp
ciB7CiAKIHZvaWQgcGFkSW50ZXJmZXJlbmNlKENvZGUmIGNvZGUpCiB7CkBAIC00Nyw3ICs1MSw3
IEBAIHZvaWQgcGFkSW50ZXJmZXJlbmNlKENvZGUmIGNvZGUpCiAgICAgfQogfQogCi19IH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWlyCiAKICNl
bmRpZiAvLyBFTkFCTEUoQjNfSklUKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuaAppbmRleCAxOGY4MDgzMmZmMS4uNTRkOTFmOTQ1M2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUGFkSW50ZXJmZXJl
bmNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQYWRJbnRlcmZlcmVu
Y2UuaApAQCAtMjcsNyArMjcsMTEgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKLW5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKK25hbWVzcGFjZSBKU0Mgewor
bmFtZXNwYWNlIEIzIHsgfQordXNpbmcgbmFtZXNwYWNlIEIzOworCisgbmFtZXNwYWNlIEFpciB7
CiAKIGNsYXNzIENvZGU7CiAKQEAgLTQyLDcgKzQ2LDcgQEAgY2xhc3MgQ29kZTsKIAogdm9pZCBw
YWRJbnRlcmZlcmVuY2UoQ29kZSYpOwogCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWly
Cit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBoYXNlSW5zZXJ0
aW9uU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUGhhc2VJbnNlcnRp
b25TZXQuY3BwCmluZGV4IDhlMDAxMmFiNzQ2Li5kYjAyMzM4M2Y3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQaGFzZUluc2VydGlvblNldC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQaGFzZUluc2VydGlvblNldC5jcHAKQEAg
LTMxLDcgKzMxLDExIEBACiAjaW5jbHVkZSAiQWlyQmFzaWNCbG9jay5oIgogI2luY2x1ZGUgPHd0
Zi9CdWJibGVTb3J0Lmg+CiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3Bh
Y2UgQWlyIHsKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIEIzIHsgfQordXNpbmcgbmFtZXNw
YWNlIEIzOworCisgbmFtZXNwYWNlIEFpciB7CiAKIHZvaWQgUGhhc2VJbnNlcnRpb25TZXQ6OmV4
ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCiB7CkBAIC0zOSw3ICs0Myw3IEBAIHZvaWQgUGhhc2VJ
bnNlcnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNCbG9jayogYmxvY2spCiAgICAgZXhlY3V0ZUluc2Vy
dGlvbnMoYmxvY2stPm1faW5zdHMsIG1faW5zZXJ0aW9ucyk7CiB9CiAKLX0gfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkIzOjpBaXIKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpBaXIKIAogI2VuZGlmIC8v
IEVOQUJMRShCM19KSVQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyUGhhc2VJbnNlcnRpb25TZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyUGhhc2VJbnNlcnRpb25TZXQuaAppbmRleCBjZWQyMjk5MjM4Yy4uZTdhYTcwZDYzZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUGhhc2VJbnNlcnRpb25T
ZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBoYXNlSW5zZXJ0aW9u
U2V0LmgKQEAgLTMxLDcgKzMxLDExIEBACiAjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5h
bWVzcGFjZSBBaXIgeworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMgeyB9Cit1c2luZyBu
YW1lc3BhY2UgQjM7CisKKyBuYW1lc3BhY2UgQWlyIHsKIAogY2xhc3MgQmFzaWNCbG9jazsKIGNs
YXNzIENvZGU7CkBAIC05MSw3ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFBoYXNlSW5z
ZXJ0aW9uLCA4PiBtX2luc2VydGlvbnM7CiB9OwogCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpC
Mzo6QWlyCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNf
SklUKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclBoYXNl
U2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQaGFzZVNjb3BlLmNw
cAppbmRleCAwNjJlYTI0ODNhMi4uMGE4MDVhMzc3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyUGhhc2VTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJQaGFzZVNjb3BlLmNwcApAQCAtMzIsNyArMzIsMTEgQEAKICNpbmNs
dWRlICJBaXJWYWxpZGF0ZS5oIgogI2luY2x1ZGUgIkIzQ29tbW9uLmgiCiAKLW5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKK25hbWVzcGFjZSBKU0MgeworbmFt
ZXNwYWNlIEIzIHsgfQordXNpbmcgbmFtZXNwYWNlIEIzOworCisgbmFtZXNwYWNlIEFpciB7CiAK
IFBoYXNlU2NvcGU6OlBoYXNlU2NvcGUoQ29kZSYgY29kZSwgY29uc3QgY2hhciogbmFtZSkKICAg
ICA6IG1fY29kZShjb2RlKQpAQCAtNTUsNiArNTksNiBAQCBQaGFzZVNjb3BlOjp+UGhhc2VTY29w
ZSgpCiAgICAgICAgIHZhbGlkYXRlKG1fY29kZSwgbV9kdW1wQmVmb3JlLmRhdGEoKSk7CiB9CiAK
LX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpB
aXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpclBoYXNlU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyUGhhc2VTY29wZS5oCmluZGV4IDcxZjc4OGZjZWRmLi5mODE2NWMyMmNkOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQaGFzZVNjb3BlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQaGFzZVNjb3BlLmgKQEAgLTMxLDcg
KzMxLDExIEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNl
IEFpciB7CituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBCMyB7IH0KK3VzaW5nIG5hbWVzcGFj
ZSBCMzsKKworIG5hbWVzcGFjZSBBaXIgewogCiBjbGFzcyBDb2RlOwogCkBAIC00OCw2ICs1Miw2
IEBAIHByaXZhdGU6CiAgICAgQ1N0cmluZyBtX2R1bXBCZWZvcmU7CiB9OwogCi19IH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpCMzo6QWlyCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWlyCiAKICNlbmRp
ZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJQcmludFNwZWNpYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJQcmludFNwZWNpYWwuY3BwCmluZGV4IGM5OTg5YjQyNWY2Li5kMGU1OGVjNTI4OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQcmludFNwZWNpYWwuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUHJpbnRTcGVjaWFsLmNwcApAQCAt
MzEsNyArMzEsMTEgQEAKIAogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyUHJpbnRlci5oIgogCi1u
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CituYW1lc3BhY2Ug
SlNDIHsKK25hbWVzcGFjZSBCMyB7IH0KK3VzaW5nIG5hbWVzcGFjZSBCMzsKKworIG5hbWVzcGFj
ZSBBaXIgewogCiBQcmludFNwZWNpYWw6OlByaW50U3BlY2lhbChQcmludGVyOjpQcmludFJlY29y
ZExpc3QqIGxpc3QpCiAgICAgOiBtX3ByaW50UmVjb3JkTGlzdChsaXN0KQpAQCAtMTA5LDcgKzEx
Myw3IEBAIHZvaWQgUHJpbnRTcGVjaWFsOjpkZWVwRHVtcEltcGwoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKICAgICBvdXQucHJpbnQoInByaW50IGZvciBkZWJ1Z2dpbmcgbG9nZ2luZy4iKTsKIH0K
IAotfSB9IC8vIG5hbWVzcGFjZSBCMzo6QWlyCit9IC8vIG5hbWVzcGFjZSBBaXIKIAogbmFtZXNw
YWNlIFByaW50ZXIgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpclByaW50U3BlY2lhbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQcmlu
dFNwZWNpYWwuaAppbmRleCBiOWE0ZDdiYzkxNy4uM2YxZTU1NzIwNDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUHJpbnRTcGVjaWFsLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJQcmludFNwZWNpYWwuaApAQCAtMzMsOSArMzMsMTMg
QEAKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7
CituYW1lc3BhY2UgQjMgeyB9Cit1c2luZyBuYW1lc3BhY2UgQjM7CisKKwogbmFtZXNwYWNlIFBy
aW50ZXIgewogCi10eXBlZGVmIFZlY3RvcjxCMzo6QWlyOjpBcmc+IEFyZ0xpc3Q7Cit0eXBlZGVm
IFZlY3RvcjxBaXI6OkFyZz4gQXJnTGlzdDsKIAogLy8gSXNTYW1lT3JSZWZlcmVuY2U6OnZhbHVl
IGlzIHRydWUgaWYgVCBpcyB0aGUgc2FtZSB0eXBlIGFzIFUgb3IgVSYuIEVsc2UsIGl0IGlzIGZh
bHNlLgogICAgIApAQCAtNDksMTkgKzUzLDE5IEBAIHRlbXBsYXRlPGNsYXNzIFQsIHR5cGVuYW1l
IFU+CiBzdHJ1Y3QgSXNTYW1lT3JSZWZlcmVuY2UgOiBwdWJsaWMgc3RkOjppc19zYW1lPGRlY2x0
eXBlKElzU2FtZU9yUmVmZXJlbmNlSGVscGVyPFQsIFU+KDApKSwgc3RkOjp0cnVlX3R5cGU+IHsg
fTsKIAogICAgIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzLCB0
eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8SXNTYW1lT3JSZWZlcmVuY2U8VCwgQjM6OkFpcjo6
VG1wPjo6dmFsdWUgfHwgSXNTYW1lT3JSZWZlcmVuY2U8VCwgUmVnPjo6dmFsdWU+PgotaW5saW5l
IHZvaWQgYXBwZW5kQWlyQXJnKEIzOjpBaXI6Okluc3QmIGluc3QsIFQmJiBhcmcpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHMsIHR5cGVuYW1lID0gc3RkOjplbmFi
bGVfaWZfdDxJc1NhbWVPclJlZmVyZW5jZTxULCBBaXI6OlRtcD46OnZhbHVlIHx8IElzU2FtZU9y
UmVmZXJlbmNlPFQsIFJlZz46OnZhbHVlPj4KK2lubGluZSB2b2lkIGFwcGVuZEFpckFyZyhBaXI6
Okluc3QmIGluc3QsIFQmJiBhcmcpCiB7CiAgICAgaW5zdC5hcmdzLmFwcGVuZChzdGQ6OmZvcndh
cmQ8VD4oYXJnKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3Vt
ZW50cywgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PCFJc1NhbWVPclJlZmVyZW5jZTxULCBC
Mzo6QWlyOjpUbXA+Ojp2YWx1ZSAmJiAhSXNTYW1lT3JSZWZlcmVuY2U8VCwgUmVnPjo6dmFsdWU+
PgotaW5saW5lIHZvaWQgYXBwZW5kQWlyQXJnKEIzOjpBaXI6Okluc3QmLCBUJiYsIGludCA9IDAp
IHsgfQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzLCB0eXBlbmFt
ZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8IUlzU2FtZU9yUmVmZXJlbmNlPFQsIEFpcjo6VG1wPjo6dmFs
dWUgJiYgIUlzU2FtZU9yUmVmZXJlbmNlPFQsIFJlZz46OnZhbHVlPj4KK2lubGluZSB2b2lkIGFw
cGVuZEFpckFyZyhBaXI6Okluc3QmLCBUJiYsIGludCA9IDApIHsgfQogCi1pbmxpbmUgdm9pZCBh
cHBlbmRBaXJBcmdzKEIzOjpBaXI6Okluc3QmKSB7IH0KK2lubGluZSB2b2lkIGFwcGVuZEFpckFy
Z3MoQWlyOjpJbnN0JikgeyB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFy
Z3VtZW50cz4KLWlubGluZSB2b2lkIGFwcGVuZEFpckFyZ3MoQjM6OkFpcjo6SW5zdCYgaW5zdCwg
VCYmIHQsIEFyZ3VtZW50cyYmLi4uIG90aGVycykKK2lubGluZSB2b2lkIGFwcGVuZEFpckFyZ3Mo
QWlyOjpJbnN0JiBpbnN0LCBUJiYgdCwgQXJndW1lbnRzJiYuLi4gb3RoZXJzKQogewogICAgIGFw
cGVuZEFpckFyZyhpbnN0LCBzdGQ6OmZvcndhcmQ8VD4odCkpOwogICAgIGFwcGVuZEFpckFyZ3Mo
aW5zdCwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4ob3RoZXJzKS4uLik7CkBAIC03Miw4ICs3Niw4
IEBAIHZvaWQgcHJpbnRBaXJBcmcoUHJpbnRTdHJlYW0mLCBDb250ZXh0Jik7CiAvLyBQcmludGVy
PEFyZyY+IGlzIG9ubHkgYSBwbGFjZS1ob2xkZXIgd2hpY2ggUHJpbnRTcGVjaWFsOjpnZW5lcmF0
ZSgpIHdpbGwgbGF0ZXIKIC8vIHJlcGxhY2Ugd2l0aCBhIFByaW50ZXIgZm9yIGEgcmVnaXN0ZXIs
IGNvbnN0YW50LCBldGMuIGFzIGFwcHJvcHJpYXRlLiAKIHRlbXBsYXRlPD4KLXN0cnVjdCBQcmlu
dGVyPEIzOjpBaXI6OlRtcD4gOiBwdWJsaWMgUHJpbnRSZWNvcmQgewotICAgIFByaW50ZXIoQjM6
OkFpcjo6VG1wJikKK3N0cnVjdCBQcmludGVyPEFpcjo6VG1wPiA6IHB1YmxpYyBQcmludFJlY29y
ZCB7CisgICAgUHJpbnRlcihBaXI6OlRtcCYpCiAgICAgICAgIDogUHJpbnRSZWNvcmQocHJpbnRB
aXJBcmcpCiAgICAgeyB9CiB9OwpAQCAtODcsNyArOTEsNyBAQCBzdHJ1Y3QgUHJpbnRlcjxSZWc+
IDogcHVibGljIFByaW50UmVjb3JkIHsKIAogfSAvLyBuYW1lc3BhY2UgUHJpbnRlcgogCi1uYW1l
c3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKK25hbWVzcGFjZSBBaXIgewogCiBjbGFzcyBQcmlu
dFNwZWNpYWwgOiBwdWJsaWMgU3BlY2lhbCB7CiBwdWJsaWM6CkBAIC0xMjcsNyArMTMxLDcgQEAg
cHJpdmF0ZToKICAgICBQcmludGVyOjpQcmludFJlY29yZExpc3QqIG1fcHJpbnRSZWNvcmRMaXN0
OwogfTsKIAotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkFpcgogCiAjZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUpCiAjZW5kaWYgLy8gRU5B
QkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
UmVnTGl2ZW5lc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJSZWdMaXZl
bmVzcy5jcHAKaW5kZXggZGZkNjcyOGIwYzQuLmViNjMwM2UwYTI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclJlZ0xpdmVuZXNzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclJlZ0xpdmVuZXNzLmNwcApAQCAtMzEsNyArMzEsMTEg
QEAKICNpbmNsdWRlICJBaXJBcmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQWlySW5zdElubGluZXMu
aCIKIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworbmFt
ZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMgeyB9Cit1c2luZyBuYW1lc3BhY2UgQjM7CisKKyBu
YW1lc3BhY2UgQWlyIHsKIAogUmVnTGl2ZW5lc3M6OlJlZ0xpdmVuZXNzKENvZGUmIGNvZGUpCiAg
ICAgOiBtX2xpdmVBdEhlYWQoY29kZS5zaXplKCkpCkBAIC0xNDUsNyArMTQ5LDcgQEAgdm9pZCBS
ZWdMaXZlbmVzczo6TG9jYWxDYWxjRm9yVW5pZmllZFRtcExpdmVuZXNzOjpleGVjdXRlKHVuc2ln
bmVkIGluc3RJbmRleCkKICAgICB9CiB9CiAKLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpB
aXIKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQp
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUmVnTGl2ZW5l
c3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUmVnTGl2ZW5lc3MuaAppbmRl
eCBjMDkwMWEwYjFmYy4uYzNiZjAwMTRlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyUmVnTGl2ZW5lc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpclJlZ0xpdmVuZXNzLmgKQEAgLTM0LDcgKzM0LDExIEBACiAjaW5jbHVkZSAiUmVn
aXN0ZXJTZXQuaCIKICNpbmNsdWRlIDx3dGYvSW5kZXhNYXAuaD4KIAotbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworbmFtZXNwYWNlIEpTQyB7CituYW1lc3Bh
Y2UgQjMgeyB9Cit1c2luZyBuYW1lc3BhY2UgQjM7CisKKyBuYW1lc3BhY2UgQWlyIHsKIAogLy8g
QWx0aG91Z2ggd2UgY291bGQgdHJpdmlhbGx5IGFkYXB0IEFpcjo6TGl2ZW5lc3M8PiB0byB3b3Jr
IHdpdGggUmVnLCB0aGlzIHdvdWxkIG5vdCBiZSBzbwogLy8gZWZmaWNpZW50LiBUaGVyZSBpcyBh
IHNtYWxsIG51bWJlciBvZiByZWdpc3RlcnMsIHNvIGl0J3MgbXVjaCBiZXR0ZXIgdG8gdXNlIGJp
dHZlY3RvcnMgZm9yCkBAIC0xMjcsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICBJbmRleE1hcDxC
YXNpY0Jsb2NrKiwgQWN0aW9uc0ZvckJvdW5kYXJ5PiBtX2FjdGlvbnM7CiB9OwogCi19IH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWlyCiAKICNl
bmRpZiAvLyBFTkFCTEUoQjNfSklUKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcAppbmRleCA4MmFiMGFjOTZjZC4u
NmU2ZWZmODhhM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
UmVwb3J0VXNlZFJlZ2lzdGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcApAQCAtMzQsNyArMzQsMTEgQEAKICNpbmNsdWRl
ICJBaXJSZWdMaXZlbmVzcy5oIgogI2luY2x1ZGUgIkFpclBoYXNlU2NvcGUuaCIKIAotbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworbmFtZXNwYWNlIEpTQyB7
CituYW1lc3BhY2UgQjMgeyB9Cit1c2luZyBuYW1lc3BhY2UgQjM7CisKKyBuYW1lc3BhY2UgQWly
IHsKIAogdm9pZCByZXBvcnRVc2VkUmVnaXN0ZXJzKENvZGUmIGNvZGUpCiB7CkBAIC04OSw3ICs5
Myw3IEBAIHZvaWQgcmVwb3J0VXNlZFJlZ2lzdGVycyhDb2RlJiBjb2RlKQogICAgIH0KIH0KIAot
fSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkFp
cgogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpclJlcG9ydFVzZWRSZWdpc3RlcnMuaAppbmRleCBlYTE3NWRjZjQ3
MC4uZDllM2IyYzk2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyUmVwb3J0VXNlZFJlZ2lzdGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyUmVwb3J0VXNlZFJlZ2lzdGVycy5oCkBAIC0yNyw3ICsyNywxMSBAQAogCiAjaWYgRU5B
QkxFKEIzX0pJVCkKIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBB
aXIgeworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMgeyB9Cit1c2luZyBuYW1lc3BhY2Ug
QjM7CisKKyBuYW1lc3BhY2UgQWlyIHsKIAogY2xhc3MgQ29kZTsKIApAQCAtMzYsNiArNDAsNiBA
QCBjbGFzcyBDb2RlOwogCiB2b2lkIHJlcG9ydFVzZWRSZWdpc3RlcnMoQ29kZSYpOwogCi19IH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWlyCiAK
ICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJTaW1wbGlmeUNGRy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpclNpbXBsaWZ5Q0ZHLmNwcAppbmRleCBjNjZmNjNmZWIyNC4uOGMwNDMwYjM2ODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU2ltcGxpZnlDRkcuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU2ltcGxpZnlDRkcuY3BwCkBA
IC0zMiwxMSArMzIsMTYgQEAKICNpbmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgogI2luY2x1ZGUg
IkFpclBoYXNlU2NvcGUuaCIKIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVz
cGFjZSBBaXIgeworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMgeyB9Cit1c2luZyBuYW1l
c3BhY2UgQjM7CisKKyBuYW1lc3BhY2UgQWlyIHsKIAogYm9vbCBzaW1wbGlmeUNGRyhDb2RlJiBj
b2RlKQogewotICAgIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworICAgICN1bmRlZiB2ZXJi
b3NlCisjZGVmaW5lIHZlcmJvc2UgZmFsc2UKICAgICAKICAgICBQaGFzZVNjb3BlIHBoYXNlU2Nv
cGUoY29kZSwgInNpbXBsaWZ5Q0ZHIik7CiAgICAgCkBAIC0xNjQsNyArMTY5LDcgQEAgYm9vbCBz
aW1wbGlmeUNGRyhDb2RlJiBjb2RlKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLX0gfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpBaXIKIAogI2Vu
ZGlmIC8vIEVOQUJMRShCM19KSVQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyU2ltcGxpZnlDRkcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyU2ltcGxpZnlDRkcuaAppbmRleCA3YWM1MTBkNGI2NC4uYzg2ZGEwOWM5NDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU2ltcGxpZnlDRkcuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNpbXBsaWZ5Q0ZHLmgKQEAgLTI3LDcgKzI3
LDExIEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsgbmFtZXNwYWNlIEFpciB7CituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBCMyB7IH0K
K3VzaW5nIG5hbWVzcGFjZSBCMzsKKworIG5hbWVzcGFjZSBBaXIgewogCiBjbGFzcyBDb2RlOwog
CkBAIC0zNSw2ICszOSw2IEBAIGNsYXNzIENvZGU7CiAKIGJvb2wgc2ltcGxpZnlDRkcoQ29kZSYp
OwogCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCit9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyU3BlY2lhbC5jcHAKaW5kZXggZTgyNTc2N2IwNGQuLjE5NTQzZjE5YjIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BlY2lhbC5jcHAKQEAgLTMxLDcg
KzMxLDExIEBACiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50
U3RyZWFtLmg+CiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWly
IHsKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIEIzIHsgfQordXNpbmcgbmFtZXNwYWNlIEIz
OworCisgbmFtZXNwYWNlIEFpciB7CiAKIGNvbnN0IGNoYXIqIGNvbnN0IFNwZWNpYWw6OmR1bXBQ
cmVmaXggPSAiJiI7CiAKQEAgLTg0LDYgKzg4LDYgQEAgdm9pZCBTcGVjaWFsOjpkZWVwRHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgIGRlZXBEdW1wSW1wbChvdXQpOwogfQogCi19IH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWlyCiAK
ICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJTcGVjaWFsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
clNwZWNpYWwuaAppbmRleCA1MDQwNTBkMmIxOC4uMzg3MGJmYWRmMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BlY2lhbC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyU3BlY2lhbC5oCkBAIC0zNCw3ICszNCwxMSBAQAogI2luY2x1
ZGUgPHd0Zi9TY29wZWRMYW1iZGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
LW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKK25hbWVzcGFj
ZSBKU0MgeworbmFtZXNwYWNlIEIzIHsgfQordXNpbmcgbmFtZXNwYWNlIEIzOworCisgbmFtZXNw
YWNlIEFpciB7CiAKIGNsYXNzIENvZGU7CiBzdHJ1Y3QgR2VuZXJhdGlvbkNvbnRleHQ7CkBAIC0x
MzYsNiArMTQwLDYgQEAgaW5saW5lIERlZXBTcGVjaWFsRHVtcCBkZWVwRHVtcChjb25zdCBTcGVj
aWFsKiBzcGVjaWFsKQogICAgIHJldHVybiBEZWVwU3BlY2lhbER1bXAoc3BlY2lhbCk7CiB9CiAK
LX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpB
aXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpclN0YWNrQWxsb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpclN0YWNrQWxsb2NhdGlvbi5jcHAKaW5kZXggMzkyMjIzY2E4ODUuLjYw
OGViMzllZDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclN0
YWNrQWxsb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJT
dGFja0FsbG9jYXRpb24uY3BwCkBAIC0zNCwxMSArMzQsMTYgQEAKICNpbmNsdWRlICJTdGFja0Fs
aWdubWVudC5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogCi1uYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFj
ZSBCMyB7IH0KK3VzaW5nIG5hbWVzcGFjZSBCMzsKKworIG5hbWVzcGFjZSBBaXIgewogCiBuYW1l
c3BhY2UgewogCi1jb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKyN1bmRlZiB2ZXJib3NlCisj
ZGVmaW5lIHZlcmJvc2UgZmFsc2UKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29sbGVjdGlvbj4KIHZv
aWQgdXBkYXRlRnJhbWVTaXplQmFzZWRPblN0YWNrU2xvdHNJbXBsKENvZGUmIGNvZGUsIGNvbnN0
IENvbGxlY3Rpb24mIGNvbGxlY3Rpb24pCkBAIC0xMzcsNyArMTQyLDcgQEAgdm9pZCB1cGRhdGVG
cmFtZVNpemVCYXNlZE9uU3RhY2tTbG90cyhDb2RlJiBjb2RlKQogICAgIHVwZGF0ZUZyYW1lU2l6
ZUJhc2VkT25TdGFja1Nsb3RzSW1wbChjb2RlLCBjb2RlLnN0YWNrU2xvdHMoKSk7CiB9CiAKLX0g
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpBaXIK
IAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyU3RhY2tBbGxvY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpclN0YWNrQWxsb2NhdGlvbi5oCmluZGV4IDZlNDk3M2ZhN2VhLi5jNDNlMDlk
NzE5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTdGFja0Fs
bG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclN0YWNrQWxs
b2NhdGlvbi5oCkBAIC0yOSw3ICsyOSwxMSBAQAogCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
Ci1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CituYW1lc3Bh
Y2UgSlNDIHsKK25hbWVzcGFjZSBCMyB7IH0KK3VzaW5nIG5hbWVzcGFjZSBCMzsKKworIG5hbWVz
cGFjZSBBaXIgewogCiBjbGFzcyBDb2RlOwogY2xhc3MgU3RhY2tTbG90OwpAQCAtNTksNyArNjMs
NyBAQCB2b2lkIGFsbG9jYXRlRXNjYXBlZFN0YWNrU2xvdHMoQ29kZSYpOwogLy8gY2FsbCBhZnRl
ciBwZXJmb3JtaW5nIHN0YWNrIGFsbG9jYXRpb24uCiB2b2lkIHVwZGF0ZUZyYW1lU2l6ZUJhc2Vk
T25TdGFja1Nsb3RzKENvZGUmKTsKIAotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkFpcgogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTdGFja1Nsb3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTdGFja1Nsb3QuY3BwCmluZGV4IDU4
Y2FjMDY1NzUwLi5iZTZmMzUxMGQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJTdGFja1Nsb3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyU3RhY2tTbG90LmNwcApAQCAtMzAsNyArMzAsMTEgQEAKIAogI2luY2x1ZGUgIkIzU3Rh
Y2tTbG90LmgiCiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWly
IHsKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIEIzIHsgfQordXNpbmcgbmFtZXNwYWNlIEIz
OworCisgbmFtZXNwYWNlIEFpciB7CiAKIHZvaWQgU3RhY2tTbG90OjpzZXRPZmZzZXRGcm9tRlAo
aW50cHRyX3QgdmFsdWUpCiB7CkBAIC02OSw2ICs3Myw2IEBAIFN0YWNrU2xvdDo6U3RhY2tTbG90
KHVuc2lnbmVkIGJ5dGVTaXplLCBTdGFja1Nsb3RLaW5kIGtpbmQsIEIzOjpTdGFja1Nsb3QqIGIz
U2xvCiAgICAgQVNTRVJUKGJ5dGVTaXplKTsKIH0KIAotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
QjM6OkFpcgorfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkFpcgogCiAjZW5kaWYgLy8gRU5BQkxFKEIz
X0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3RhY2tT
bG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclN0YWNrU2xvdC5oCmluZGV4
IDg1Yzk0YWNjODMzLi4yODA0MjlkZDU4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJTdGFja1Nsb3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpclN0YWNrU2xvdC5oCkBAIC0zNCw5ICszNCwxNSBAQAogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCi1uYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEIzIHsKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIEIzIHsgfQordXNp
bmcgbmFtZXNwYWNlIEIzOwogCisKKworbmFtZXNwYWNlIEIzIHsKIGNsYXNzIFN0YWNrU2xvdDsK
K30KIAogbmFtZXNwYWNlIEFpciB7CiAKQEAgLTExOSwxMSArMTI1LDExIEBAIGlubGluZSBEZWVw
U3RhY2tTbG90RHVtcCBkZWVwRHVtcChjb25zdCBTdGFja1Nsb3QqIHNsb3QpCiAgICAgcmV0dXJu
IERlZXBTdGFja1Nsb3REdW1wKHNsb3QpOwogfQogCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpC
Mzo6QWlyCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWlyCiAKIG5hbWVzcGFjZSBXVEYgewogCi1p
bmxpbmUgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6QjM6OkFpcjo6
U3RhY2tTbG90KiBzdGFja1Nsb3QpCitpbmxpbmUgdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiBvdXQsIEpTQzo6QWlyOjpTdGFja1Nsb3QqIHN0YWNrU2xvdCkKIHsKICAgICBvdXQucHJp
bnQocG9pbnRlckR1bXAoc3RhY2tTbG90KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpclN0YWNrU2xvdEtpbmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJTdGFja1Nsb3RLaW5kLmNwcAppbmRleCBhZjgzZGUxYjlkNi4uYjdkMGIw
MjM3NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3RhY2tT
bG90S2luZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTdGFja1Ns
b3RLaW5kLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdXNpbmcg
bmFtZXNwYWNlIEpTQzo6QjM6OkFpcjsKK3VzaW5nIG5hbWVzcGFjZSBKU0M6OkFpcjsKIAogdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFN0YWNrU2xvdEtpbmQga2luZCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3RhY2tTbG90S2lu
ZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTdGFja1Nsb3RLaW5kLmgKaW5k
ZXggOWVmMjA1NzcyYjMuLjRkMTljMDI5MDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpclN0YWNrU2xvdEtpbmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpclN0YWNrU2xvdEtpbmQuaApAQCAtMjcsNyArMjcsMTEgQEAKIAogI2lmIEVO
QUJMRShCM19KSVQpCiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2Ug
QWlyIHsKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIEIzIHsgfQordXNpbmcgbmFtZXNwYWNl
IEIzOworCisgbmFtZXNwYWNlIEFpciB7CiAKIGVudW0gY2xhc3MgU3RhY2tTbG90S2luZCA6IHVp
bnQ4X3QgewogICAgIC8vIEEgbG9ja2VkIHN0YWNrIHNsb3QgaXMgYW4gYXJlYSBvZiBzdGFjayBy
ZXF1ZXN0ZWQgYnkgdGhlIGNsaWVudC4gSXQgY2Fubm90IGJlIGtpbGxlZC4gVGhlCkBAIC01MCwx
MyArNTQsMTMgQEAgZW51bSBjbGFzcyBTdGFja1Nsb3RLaW5kIDogdWludDhfdCB7CiAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDU4NwogfTsKIAotfSB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkFpcgog
CiBuYW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgUHJpbnRTdHJlYW07CiAKLXZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYsIEpTQzo6QjM6OkFpcjo6U3RhY2tTbG90S2luZCk7Cit2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkFpcjo6U3RhY2tTbG90S2luZCk7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdURgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpclRtcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclRtcC5jcHAK
aW5kZXggNmRkYmM4YTY2ODAuLjI5ZDQ1NDVmODc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpclRtcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJUbXAuY3BwCkBAIC0zMCw3ICszMCwxMSBAQAogCiAjaW5jbHVkZSAiQWlyVG1wSW5s
aW5lcy5oIgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7
CituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBCMyB7IH0KK3VzaW5nIG5hbWVzcGFjZSBCMzsK
KworIG5hbWVzcGFjZSBBaXIgewogCiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGNvbnN0IFRtcDo6
SW5kZXhlZDxHUD46OmR1bXBQcmVmaXggPSAiJXRtcCI7CiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIq
IGNvbnN0IFRtcDo6SW5kZXhlZDxGUD46OmR1bXBQcmVmaXggPSAiJWZ0bXAiOwpAQCAtNTgsNiAr
NjIsNiBAQCB2b2lkIFRtcDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgIG91dC5w
cmludCgiJWZ0bXAiLCBmcFRtcEluZGV4KCkpOwogfQogCi19IH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpCMzo6QWlyCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUo
QjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJUbXAu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVG1wLmgKaW5kZXggMzFhNzk1NDJl
YzUuLmZhMjNiZjllOGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpclRtcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVG1wLmgKQEAg
LTMzLDcgKzMzLDExIEBACiAjaW5jbHVkZSAiUmVnLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworbmFt
ZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMgeyB9Cit1c2luZyBuYW1lc3BhY2UgQjM7CisKKyBu
YW1lc3BhY2UgQWlyIHsKIAogY2xhc3MgQXJnOwogY2xhc3MgQ29kZTsKQEAgLTMyNSwxNyArMzI5
LDE3IEBAIHN0cnVjdCBUbXBIYXNoIHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21w
YXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CiB9OwogCi19IH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpCMzo6QWlyCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWlyCiAKIG5hbWVzcGFjZSBXVEYgewog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7Ci10ZW1wbGF0ZTw+IHN0
cnVjdCBEZWZhdWx0SGFzaDxKU0M6OkIzOjpBaXI6OlRtcD4gewotICAgIHR5cGVkZWYgSlNDOjpC
Mzo6QWlyOjpUbXBIYXNoIEhhc2g7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6
OkFpcjo6VG1wPiB7CisgICAgdHlwZWRlZiBKU0M6OkFpcjo6VG1wSGFzaCBIYXNoOwogfTsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7Ci10ZW1wbGF0ZTw+IHN0cnVj
dCBIYXNoVHJhaXRzPEpTQzo6QjM6OkFpcjo6VG1wPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxK
U0M6OkIzOjpBaXI6OlRtcD4geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6
OkFpcjo6VG1wPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OkFpcjo6VG1wPiB7IH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdURgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpclRtcElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
VG1wSW5saW5lcy5oCmluZGV4IDk2NmUyOTU1NjRjLi5jMGZhM2ZhNjAxNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJUbXBJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJUbXBJbmxpbmVzLmgKQEAgLTMxLDcgKzMxLDExIEBA
CiAjaW5jbHVkZSAiQWlyQ29kZS5oIgogI2luY2x1ZGUgIkFpclRtcC5oIgogCi1uYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CituYW1lc3BhY2UgSlNDIHsKK25h
bWVzcGFjZSBCMyB7IH0KK3VzaW5nIG5hbWVzcGFjZSBCMzsKKworIG5hbWVzcGFjZSBBaXIgewog
CiBpbmxpbmUgVG1wOjpUbXAoY29uc3QgQXJnJiBhcmcpCiB7CkBAIC0xOTYsNiArMjAwLDYgQEAg
QUxXQVlTX0lOTElORSBUbXAgVG1wOjp0bXBGb3JMaW5lYXJJbmRleChDb2RlJiBjb2RlLCB1bnNp
Z25lZCBpbmRleCkKICAgICByZXR1cm4gdG1wRm9yQWJzb2x1dGVJbmRleChGUCwgaW5kZXggLSBn
cEVuZCk7CiB9CiAKLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclRtcE1hcC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJUbXBNYXAuaAppbmRleCBhMTUzOWNjNjVjZS4uNzQyOGQ4MzI1MzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVG1wTWFwLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJUbXBNYXAuaApAQCAtMzEsNyArMzEs
MTEgQEAKICNpbmNsdWRlICJBaXJUbXAuaCIKICNpbmNsdWRlIDx3dGYvSW5kZXhNYXAuaD4KIAot
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworbmFtZXNwYWNl
IEpTQyB7CituYW1lc3BhY2UgQjMgeyB9Cit1c2luZyBuYW1lc3BhY2UgQjM7CisKKyBuYW1lc3Bh
Y2UgQWlyIHsKIAogLy8gQXMgYW4gYWx0ZXJuYXRpdmUgdG8gdGhpcywgeW91IGNvdWxkIHVzZSBJ
bmRleE1hcDxUbXA6OkxpbmVhcmx5SW5kZXhlZCwgLi4uPiwgYnV0IHRoaXMgd291bGQgZmFpbAog
Ly8gYXMgc29vbiBhcyB5b3UgYWRkZWQgYSBuZXcgR1AgdG1wLgpAQCAtOTIsNyArOTYsNyBAQCBw
cml2YXRlOgogICAgIEluZGV4TWFwPFRtcDo6QWJzb2x1dGVseUluZGV4ZWQ8RlA+LCBWYWx1ZT4g
bV9mcDsKIH07CiAKLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVG1wU2V0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpclRtcFNldC5oCmluZGV4IDE2ZGQ1YzljN2JlLi4yYjlkNTQ5OTQ1
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJUbXBTZXQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclRtcFNldC5oCkBAIC0zMCw3ICsz
MCwxMSBAQAogI2luY2x1ZGUgIkFpclRtcC5oIgogI2luY2x1ZGUgPHd0Zi9JbmRleFNldC5oPgog
Ci1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CituYW1lc3Bh
Y2UgSlNDIHsKK25hbWVzcGFjZSBCMyB7IH0KK3VzaW5nIG5hbWVzcGFjZSBCMzsKKworIG5hbWVz
cGFjZSBBaXIgewogCiBjbGFzcyBUbXBTZXQgewogcHVibGljOgpAQCAtMTIyLDcgKzEyNiw3IEBA
IHByaXZhdGU6CiAgICAgSW5kZXhTZXQ8VG1wOjpBYnNvbHV0ZWx5SW5kZXhlZDxGUD4+IG1fZnA7
CiB9OwogCi19IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCit9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclRtcFdpZHRoLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyVG1wV2lkdGguY3BwCmluZGV4IDdhZTdlMmZkOGY0Li4xYWJiMTU3
YmE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJUbXBXaWR0
aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJUbXBXaWR0aC5jcHAK
QEAgLTMyLDcgKzMyLDExIEBACiAjaW5jbHVkZSAiQWlySW5zdElubGluZXMuaCIKICNpbmNsdWRl
IDx3dGYvTGlzdER1bXAuaD4KIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVz
cGFjZSBBaXIgeworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMgeyB9Cit1c2luZyBuYW1l
c3BhY2UgQjM7CisKKyBuYW1lc3BhY2UgQWlyIHsKIAogVG1wV2lkdGg6OlRtcFdpZHRoKCkKIHsK
QEAgLTUyLDcgKzU2LDggQEAgdm9pZCBUbXBXaWR0aDo6cmVjb21wdXRlKENvZGUmIGNvZGUpCiAg
ICAgLy8gU2V0IHRoaXMgdG8gdHJ1ZSB0byBjYXVzZSB0aGlzIGFuYWx5c2lzIHRvIGFsd2F5cyBy
ZXR1cm4gcGVzc2ltaXN0aWMgcmVzdWx0cy4KICAgICBjb25zdCBib29sIGJlQ2FyZWZ1bCA9IGZh
bHNlOwogCi0gICAgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CisgICAgI3VuZGVmIHZlcmJv
c2UKKyNkZWZpbmUgdmVyYm9zZSBmYWxzZQogCiAgICAgaWYgKHZlcmJvc2UpIHsKICAgICAgICAg
ZGF0YUxvZygiQ29kZSBiZWZvcmUgVG1wV2lkdGg6XG4iKTsKQEAgLTE3Nyw3ICsxODIsNyBAQCB2
b2lkIFRtcFdpZHRoOjpXaWR0aHM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBv
dXQucHJpbnQoInt1c2UgPSAiLCB1c2UsICIsIGRlZiA9ICIsIGRlZiwgIn0iKTsKIH0KIAotfSB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkFpcgog
CiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJUbXBXaWR0aC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJUbXBXaWR0aC5oCmluZGV4IGIyM2IzMjcyYTAyLi5jNzA2YzFiZWQwYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJUbXBXaWR0aC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVG1wV2lkdGguaApAQCAtMjksNyArMjksMTEgQEAK
IAogI2luY2x1ZGUgIkFpckFyZy5oIgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsg
bmFtZXNwYWNlIEFpciB7CituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBCMyB7IH0KK3VzaW5n
IG5hbWVzcGFjZSBCMzsKKworIG5hbWVzcGFjZSBBaXIgewogCiBjbGFzcyBDb2RlOwogCkBAIC0x
MDksNiArMTEzLDYgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFRtcCwgV2lkdGhzPiBtX3dpZHRo
OwogfTsKIAotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkFpcgogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVXNlQ291bnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpclVzZUNvdW50cy5oCmluZGV4IDkwYTI2OGNkNTUyLi41MDRkZmY2ZmIx
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJVc2VDb3VudHMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclVzZUNvdW50cy5oCkBAIC0z
NCw3ICszNCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xp
c3REdW1wLmg+CiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWly
IHsKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIEIzIHsgfQordXNpbmcgbmFtZXNwYWNlIEIz
OworCisgbmFtZXNwYWNlIEFpciB7CiAKIGNsYXNzIENvZGU7CiAKQEAgLTExMyw2ICsxMTcsNiBA
QCBwcml2YXRlOgogICAgIEhhc2hNYXA8VGhpbmcsIENvdW50cz4gbV9jb3VudHM7CiB9OwogCi19
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWly
CiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJWYWxpZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpclZhbGlkYXRlLmNwcAppbmRleCBmNTNmODQzNzc0Ni4uNjZhMWJjYWE5MTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVmFsaWRhdGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVmFsaWRhdGUuY3BwCkBAIC0zMiw3ICsz
MiwxMSBAQAogI2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1
cmUuaCIKIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewor
bmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQjMgeyB9Cit1c2luZyBuYW1lc3BhY2UgQjM7CisK
KyBuYW1lc3BhY2UgQWlyIHsKIAogbmFtZXNwYWNlIHsKIApAQCAtMTU0LDcgKzE1OCw3IEBAIHZv
aWQgdmFsaWRhdGUoQ29kZSYgY29kZSwgY29uc3QgY2hhciogZHVtcEJlZm9yZSkKICAgICB2YWxp
ZGF0ZXIucnVuKCk7CiB9CiAKLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKK30gfSAv
LyBuYW1lc3BhY2UgSlNDOjpBaXIKIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVmFsaWRhdGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVmFsaWRhdGUuaAppbmRleCA0NzJjNzYzNzlhNS4u
YjE3OTNmYjg1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
VmFsaWRhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclZhbGlkYXRl
LmgKQEAgLTI3LDEyICsyNywxNiBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAotbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworbmFtZXNwYWNlIEpTQyB7Citu
YW1lc3BhY2UgQjMgeyB9Cit1c2luZyBuYW1lc3BhY2UgQjM7CisKKyBuYW1lc3BhY2UgQWlyIHsK
IAogY2xhc3MgQ29kZTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCB2YWxpZGF0ZShDb2RlJiwg
Y29uc3QgY2hhciogZHVtcEJlZm9yZSA9IG51bGxwdHIpOwogCi19IH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpCMzo6QWlyCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QWlyCiAKICNlbmRpZiAvLyBFTkFC
TEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNv
ZGVfZ2VuZXJhdG9yLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2Vu
ZXJhdG9yLnJiCmluZGV4IGJjZGVlOWU2OGI5Li45YjhjODQ0ZGIwYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgpAQCAtNTE2LDcgKzUx
Niw3IEBAIGVuZAogCiB3cml0ZUgoIk9wY29kZSIpIHsKICAgICB8IG91dHAgfAotICAgIG91dHAu
cHV0cyAibmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeyIKKyAg
ICBvdXRwLnB1dHMgIm5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQWlyIHsiCiAgICAgb3V0cC5w
dXRzICJlbnVtIE9wY29kZSA6IGludDE2X3QgeyIKICAgICAkb3Bjb2Rlcy5rZXlzLmVhY2ggewog
ICAgICAgICB8IG9wY29kZSB8CkBAIC01MjUsMTEgKzUyNSwxMSBAQCB3cml0ZUgoIk9wY29kZSIp
IHsKICAgICBvdXRwLnB1dHMgIn07IgogCiAgICAgb3V0cC5wdXRzICJzdGF0aWMgY29uc3QgdW5z
aWduZWQgbnVtT3Bjb2RlcyA9ICN7JG9wY29kZXMua2V5cy5zaXplfTsiCi0gICAgb3V0cC5wdXRz
ICJ9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyIgorICAgIG91dHAucHV0cyAifSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkFpciIKICAgICAKICAgICBvdXRwLnB1dHMgIm5hbWVzcGFjZSBXVEYg
eyIKICAgICBvdXRwLnB1dHMgImNsYXNzIFByaW50U3RyZWFtOyIKLSAgICBvdXRwLnB1dHMgIkpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6QjM6
OkFpcjo6T3Bjb2RlKTsiCisgICAgb3V0cC5wdXRzICJKU19FWFBPUlRfUFJJVkFURSB2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkFpcjo6T3Bjb2RlKTsiCiAgICAgb3V0cC5w
dXRzICJ9IC8vIG5hbWVzcGFjZSBXVEYiCiB9CiAKQEAgLTY2Niw3ICs2NjYsNyBAQCB3cml0ZUgo
Ik9wY29kZVV0aWxzIikgewogICAgIG91dHAucHV0cyAiI2luY2x1ZGUgXCJBaXJDdXN0b20uaFwi
IgogICAgIG91dHAucHV0cyAiI2luY2x1ZGUgXCJBaXJJbnN0LmhcIiIKICAgICBvdXRwLnB1dHMg
IiNpbmNsdWRlIFwiQWlyRm9ybVRhYmxlLmhcIiIKLSAgICBvdXRwLnB1dHMgIm5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsiCisgICAgb3V0cC5wdXRzICJuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIEFpciB7IgogICAgIAogICAgIG91dHAucHV0cyAiaW5saW5l
IGJvb2wgb3BnZW5IaWRkZW5UcnV0aCgpIHsgcmV0dXJuIHRydWU7IH0iCiAgICAgb3V0cC5wdXRz
ICJ0ZW1wbGF0ZTx0eXBlbmFtZSBUPiIKQEAgLTc5OCw3ICs3OTgsNyBAQCB3cml0ZUgoIk9wY29k
ZVV0aWxzIikgewogICAgIG91dHAucHV0cyAifSIKICAgICBvdXRwLnB1dHMgIn0iCiAgICAgCi0g
ICAgb3V0cC5wdXRzICJ9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyIgorICAgIG91dHAu
cHV0cyAifSB9IC8vIG5hbWVzcGFjZSBKU0M6OkFpciIKIH0KIAogd3JpdGVIKCJPcGNvZGVHZW5l
cmF0ZWQiKSB7CkBAIC04MDYsNyArODA2LDcgQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7
CiAgICAgb3V0cC5wdXRzICIjaW5jbHVkZSBcIkFpckluc3RJbmxpbmVzLmhcIiIKICAgICBvdXRw
LnB1dHMgIiNpbmNsdWRlIFwid3RmL1ByaW50U3RyZWFtLmhcIiIKICAgICBvdXRwLnB1dHMgIm5h
bWVzcGFjZSBXVEYgeyIKLSAgICBvdXRwLnB1dHMgInVzaW5nIG5hbWVzcGFjZSBKU0M6OkIzOjpB
aXI7IgorICAgIG91dHAucHV0cyAidXNpbmcgbmFtZXNwYWNlIEpTQzo6QWlyOyIKICAgICBvdXRw
LnB1dHMgInZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBPcGNvZGUgb3Bjb2Rl
KSIKICAgICBvdXRwLnB1dHMgInsiCiAgICAgb3V0cC5wdXRzICIgICAgc3dpdGNoIChvcGNvZGUp
IHsiCkBAIC04MjAsNyArODIwLDcgQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAg
b3V0cC5wdXRzICIgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsiCiAgICAgb3V0cC5w
dXRzICJ9IgogICAgIG91dHAucHV0cyAifSAvLyBuYW1lc3BhY2UgV1RGIgotICAgIG91dHAucHV0
cyAibmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeyIKKyAgICBv
dXRwLnB1dHMgIm5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQWlyIHsiCiAgICAgCiAgICAgb3V0
cC5wdXRzICJ1aW50OF90IGdfZm9ybVRhYmxlWyN7JG9wY29kZXMuc2l6ZSAqIGZvcm1UYWJsZVdp
ZHRofV0gPSB7IgogICAgICRvcGNvZGVzLnZhbHVlcy5lYWNoIHsKQEAgLTEyNDEsNiArMTI0MSw2
IEBAIHdyaXRlSCgiT3Bjb2RlR2VuZXJhdGVkIikgewogICAgIG91dHAucHV0cyAicmV0dXJuIHJl
c3VsdDsiCiAgICAgb3V0cC5wdXRzICJ9IgogCi0gICAgb3V0cC5wdXRzICJ9IH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMzo6QWlyIgorICAgIG91dHAucHV0cyAifSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkFpciIKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0
YWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKaW5kZXgg
ODU0ODUwNGQwZDEuLmM0ZDA3Mzg4MmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL3Rlc3RhaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
dGVzdGFpci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgc3RhdGljIHZvaWQgdXNhZ2UoKQogI2lmIEVO
QUJMRShCM19KSVQpCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7Ci11c2luZyBuYW1lc3BhY2UgSlND
OjpCMzo6QWlyOwordXNpbmcgbmFtZXNwYWNlIEpTQzo6QWlyOwogCiB1c2luZyBKU0M6OkIzOjpG
UDsKIHVzaW5nIEpTQzo6QjM6OkdQOwpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgdGVzdFNpbXBs
ZSgpCiAKIC8vIFVzZSB0aGlzIHRvIHB1dCBhIGNvbnN0YW50IGludG8gYSByZWdpc3RlciB3aXRo
b3V0IEFpciBiZWluZyBhYmxlIHRvIHNlZSB0aGUgY29uc3RhbnQuCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgotdm9pZCBsb2FkQ29uc3RhbnRJbXBsKEJhc2ljQmxvY2sqIGJsb2NrLCBUIHZhbHVlLCBC
Mzo6QWlyOjpPcGNvZGUgbW92ZSwgVG1wIHRtcCwgVG1wIHNjcmF0Y2gpCit2b2lkIGxvYWRDb25z
dGFudEltcGwoQmFzaWNCbG9jayogYmxvY2ssIFQgdmFsdWUsIEFpcjo6T3Bjb2RlIG1vdmUsIFRt
cCB0bXAsIFRtcCBzY3JhdGNoKQogewogICAgIHN0YXRpYyBTdGF0aWNMb2NrIGxvY2s7CiAgICAg
c3RhdGljIHN0ZDo6bWFwPFQsIFQqPiogbWFwOyAvLyBJJ20gbm90IG1lc3Npbmcgd2l0aCBIYXNo
TWFwJ3MgcHJvYmxlbXMgd2l0aCBpbnRlZ2Vycy4KQEAgLTE4NDAsNyArMTg0MCw3IEBAIHZvaWQg
dGVzdEFyZ3VtZW50UmVnUGlubmVkKCkKICAgICBHUFJSZWcgcGlubmVkID0gR1BSSW5mbzo6YXJn
dW1lbnRHUFIwOwogICAgIHByb2MucGluUmVnaXN0ZXIocGlubmVkKTsKIAotICAgIEIzOjpBaXI6
OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91
bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKKyAgICBBaXI6OlNwZWNpYWwqIHBhdGNo
cG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNo
cG9pbnRTcGVjaWFsPigpKTsKIAogICAgIEIzOjpCYXNpY0Jsb2NrKiBiM1Jvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CiAgICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGIzUm9vdC0+
YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpWb2lkLCBCMzo6T3JpZ2lu
KCkpOwpAQCAtMTg3Miw3ICsxODcyLDcgQEAgdm9pZCB0ZXN0QXJndW1lbnRSZWdQaW5uZWQyKCkK
ICAgICBHUFJSZWcgcGlubmVkID0gR1BSSW5mbzo6YXJndW1lbnRHUFIwOwogICAgIHByb2MucGlu
UmVnaXN0ZXIocGlubmVkKTsKIAotICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVj
aWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVj
aWFsPigpKTsKKyAgICBBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRT
cGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKIAogICAg
IEIzOjpCYXNpY0Jsb2NrKiBiM1Jvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgQjM6OlBhdGNo
cG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGIzUm9vdC0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50
VmFsdWU+KHByb2MsIEIzOjpWb2lkLCBCMzo6T3JpZ2luKCkpOwpAQCAtMTkxMCw3ICsxOTEwLDcg
QEAgdm9pZCB0ZXN0QXJndW1lbnRSZWdQaW5uZWQzKCkKICAgICBHUFJSZWcgcGlubmVkID0gR1BS
SW5mbzo6YXJndW1lbnRHUFIwOwogICAgIHByb2MucGluUmVnaXN0ZXIocGlubmVkKTsKIAotICAg
IEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKHN0
ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKKyAgICBBaXI6OlNwZWNp
YWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8
QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKIAogICAgIEIzOjpCYXNpY0Jsb2NrKiBiM1Jvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9
IGIzUm9vdC0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpWb2lkLCBC
Mzo6T3JpZ2luKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nh
c2UuY3BwCmluZGV4IDQ3NmUzN2IzMzIzLi44Mzk1ZWZjMTRkMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNTAsNyArNTAsOSBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworI3Vu
ZGVmIHZlcmJvc2UKKyNkZWZpbmUgdmVyYm9zZSBmYWxzZQorCiAKIEFjY2Vzc0Nhc2U6OkFjY2Vz
c0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0JiBjb25kaXRpb25TZXQpCiAgICAgOiBtX3R5cGUodHlwZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCmluZGV4IGYzNGMy
NzQyMDUzLi4zZWU2MGRjZmU3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCkBAIC0zOCw3ICszOCw5IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1zdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CisjdW5kZWYgdmVyYm9z
ZQorI2RlZmluZSB2ZXJib3NlIGZhbHNlCisKIAogQ2FsbExpbmtTdGF0dXM6OkNhbGxMaW5rU3Rh
dHVzKEpTVmFsdWUgdmFsdWUpCiAgICAgOiBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vz
c0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFj
Y2Vzc0Nhc2UuY3BwCmluZGV4IDQ2MDk4NGVhY2ZkLi5hNGQ1MTlkMmYyZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlLmNwcApAQCAtMzgsNyArMzgsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIGNv
bnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworI3VuZGVmIHZlcmJvc2UKKyNkZWZpbmUgdmVyYm9z
ZSBmYWxzZQorCiAKIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OkdldHRlclNldHRlckFjY2Vzc0Nh
c2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQq
IGFkZGl0aW9uYWxTZXQsIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSkKICAgICA6IEJhc2Uodm0s
IG93bmVyLCBhY2Nlc3NUeXBlLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQ
cm94eSwgYWRkaXRpb25hbFNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbnN0cnVjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RydWN0aW9uLmgKaW5kZXggZmUxMDUxMjU3M2EuLjgxZjQzNTBjNjUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaApAQCAtNjAsNyArNjAsNyBAQCBz
dHJ1Y3QgSW5zdHJ1Y3Rpb24gewogICAgICAgICB1LmpzQ2VsbC5jbGVhcigpOwogICAgIH0KICAg
ICAgICAgCi0gICAgSW5zdHJ1Y3Rpb24oT3Bjb2RlIG9wY29kZSkKKyAgICBJbnN0cnVjdGlvbihK
U0M6Ok9wY29kZSBvcGNvZGUpCiAgICAgewogI2lmICFFTkFCTEUoQ09NUFVURURfR09UT19PUENP
REVTKQogICAgICAgICAvLyBXZSBoYXZlIHRvIGluaXRpYWxpemUgb25lIG9mIHRoZSBwb2ludGVy
IG1lbWJlcnMgdG8gZW5zdXJlIHRoYXQKQEAgLTExOSw3ICsxMTksNyBAQCBzdHJ1Y3QgSW5zdHJ1
Y3Rpb24gewogICAgIEluc3RydWN0aW9uKGJvb2wqIHByZWRpY2F0ZVBvaW50ZXIpIHsgdS5wcmVk
aWNhdGVQb2ludGVyID0gcHJlZGljYXRlUG9pbnRlcjsgfQogCiAgICAgdW5pb24gewotICAgICAg
ICBPcGNvZGUgb3Bjb2RlOworICAgICAgICBKU0M6Ok9wY29kZSBvcGNvZGU7CiAgICAgICAgIGlu
dCBvcGVyYW5kOwogICAgICAgICB1bnNpZ25lZCB1bnNpZ25lZFZhbHVlOwogICAgICAgICBXcml0
ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZT4gc3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5j
cHAKaW5kZXggNjE5ZWE1ZDljYjQuLjE1MDkzMGUyOTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dC5jcHAKQEAgLTE4Miw3ICsxODIsOCBAQCBib29sIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
Ojppc1ZhbGlkQW5kV2F0Y2hhYmxlKCkgY29uc3QKIAogbmFtZXNwYWNlIHsKIAotYm9vbCB2ZXJi
b3NlID0gZmFsc2U7CisjdW5kZWYgdmVyYm9zZQorI2RlZmluZSB2ZXJib3NlIGZhbHNlCiAKIE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uIGdlbmVyYXRlQ29uZGl0aW9uKAogICAgIFZNJiB2bSwgSlND
ZWxsKiBvd25lciwgSlNPYmplY3QqIG9iamVjdCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgUHJv
cGVydHlDb25kaXRpb246OktpbmQgY29uZGl0aW9uS2luZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4IGQyZDg5ZDE1
ZTA5Li5mYmZmZmU3YWRlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC00Myw3ICs0Myw5IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1zdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CisjdW5kZWYgdmVy
Ym9zZQorI2RlZmluZSB2ZXJib3NlIGZhbHNlCisKIAogdm9pZCBBY2Nlc3NHZW5lcmF0aW9uUmVz
dWx0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcAppbmRleCA0MjNiYzIx
MGVkNC4uN2VlN2I1OWViZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcApAQCAtMzIsNyArMzIsOSBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotc3RhdGljIGJvb2wgdmVyYm9zZSA9IGZhbHNlOworI3VuZGVmIHZlcmJvc2UK
KyNkZWZpbmUgdmVyYm9zZSBmYWxzZQorCiAKIHZvaWQgUHJvcGVydHlDb25kaXRpb246OmR1bXBJ
bkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0CiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmNwcAppbmRleCAyMTg3NzUxNzZmMi4uN2JiMWM3NWJiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtMzUs
NyArMzUsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCiAKLXN0YXRpYyBj
b25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKyN1bmRlZiB2ZXJib3NlCisjZGVmaW5lIHZlcmJv
c2UgZmFsc2UKKwogCiBTdHJ1Y3R1cmVTdHViSW5mbzo6U3RydWN0dXJlU3R1YkluZm8oQWNjZXNz
VHlwZSBhY2Nlc3NUeXBlKQogICAgIDogY2FsbFNpdGVJbmRleChVSU5UX01BWCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmlu
ZGV4IDQ2NWQ0ZDEyNzMyLi4wMWMwODdjYWQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC0yNzQsNyArMjc0LDkg
QEAgdm9pZCBVbmxpbmtlZENvZGVCbG9jazo6YWRkRXhwcmVzc2lvbkluZm8odW5zaWduZWQgaW5z
dHJ1Y3Rpb25PZmZzZXQsCiAKIGJvb2wgVW5saW5rZWRDb2RlQmxvY2s6OnR5cGVQcm9maWxlckV4
cHJlc3Npb25JbmZvRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIHVu
c2lnbmVkJiBzdGFydERpdm90LCB1bnNpZ25lZCYgZW5kRGl2b3QpCiB7Ci0gICAgc3RhdGljIGNv
bnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworICAgICN1bmRlZiB2ZXJib3NlCisjZGVmaW5lIHZl
cmJvc2UgZmFsc2UKKwogICAgIGlmICghbV9yYXJlRGF0YSkgewogICAgICAgICBpZiAodmVyYm9z
ZSkKICAgICAgICAgICAgIGRhdGFMb2dGKCJEb24ndCBoYXZlIGFzc2lnbm1lbnQgaW5mbyBmb3Ig
b2Zmc2V0OiV1XG4iLCBieXRlY29kZU9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAppbmRleCAx
NDgzODE4OGUzZi4uNTYzMTMxZjBkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcApAQCAtNTAsNyAr
NTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAK
LWJvb2wgdmVyYm9zZSA9IGZhbHNlOworI3VuZGVmIHZlcmJvc2UKKyNkZWZpbmUgdmVyYm9zZSBm
YWxzZQogCiBjbGFzcyBBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKaW5kZXggYTBiZjc3MjMxY2IuLjg1YmUwMGNlZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtODEsNyArODEsOCBAQCBO
T19SRVRVUk5fRFVFX1RPX0NSQVNIIE5FVkVSX0lOTElORSB2b2lkIGNyYXNoKCkKIAogfSAvLyBh
bm9ueW1vdXMgbmFtZXNwYWNlCiAKLXN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsK
KyN1bmRlZiB2ZXJib3NlCisjZGVmaW5lIHZlcmJvc2UgZmFsc2UKIAogY2xhc3MgQ29uc3RhbnRC
dWZmZXJLZXkgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDU0VQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNl
LmNwcAppbmRleCA1OTY4OTc0NTI3YS4uOGM2NDM0MWZiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCkBAIC00OCw3ICs0OCw4IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7CisjdW5kZWYgdmVyYm9zZQorI2RlZmluZSB2ZXJib3NlIGZhbHNlCiAKIGNsYXNzIElt
cHVyZURhdGFTbG90IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbXB1cmVEYXRhU2xvdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2VEb21pbmF0ZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZURvbWluYXRlcy5oCmluZGV4IGFh
NTBlZGVjMmIwLi5jNzg1ZjBhZjg1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdFZGdlRG9taW5hdGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdFZGdlRG9taW5hdGVzLmgKQEAgLTMyLDcgKzMyLDggQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKIAogY2xhc3MgRWRnZURvbWluYXRlcyB7Ci0gICAgc3RhdGljIGNvbnN0IGJv
b2wgdmVyYm9zZSA9IGZhbHNlOworICAgICN1bmRlZiB2ZXJib3NlCisjZGVmaW5lIHZlcmJvc2Ug
ZmFsc2UKICAgICAKIHB1YmxpYzoKICAgICBFZGdlRG9taW5hdGVzKEdyYXBoJiBncmFwaCwgQmFz
aWNCbG9jayogYmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4
IDk0MjRlNTk0N2RhLi5hZmI4NjVlN2VjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAKQEAgLTEwMzcsNyArMTAzNyw4IEBAIEJ5dGVjb2RlS2lsbHMmIEdyYXBoOjpraWxs
c0ZvcihJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKIAogYm9vbCBHcmFwaDo6aXNM
aXZlSW5CeXRlY29kZShWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luKQogewotICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKyAgICAjdW5k
ZWYgdmVyYm9zZQorI2RlZmluZSB2ZXJib3NlIGZhbHNlCiAgICAgCiAgICAgaWYgKHZlcmJvc2Up
CiAgICAgICAgIGRhdGFMb2coIkNoZWNraW5nIG9mIG9wZXJhbmQgaXMgbGl2ZTogIiwgb3BlcmFu
ZCwgIlxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxh
Y2VBYnN0cmFjdFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFj
ZUFic3RyYWN0U3RhdGUuY3BwCmluZGV4IDFkMjBkMWQ0Y2E1Li4zOWI0MDc1NDdmMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0
ZS5jcHAKQEAgLTM3LDcgKzM3LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogCi1zdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CisjdW5kZWYgdmVyYm9zZQor
I2RlZmluZSB2ZXJib3NlIGZhbHNlCiAKIEluUGxhY2VBYnN0cmFjdFN0YXRlOjpJblBsYWNlQWJz
dHJhY3RTdGF0ZShHcmFwaCYgZ3JhcGgpCiAgICAgOiBtX2dyYXBoKGdyYXBoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmlu
Z1BoYXNlLmNwcAppbmRleCBmYzQxN2Q3YzEyYi4uZjg1NjhkYWZhMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlckNoZWNrQ29tYmluaW5n
UGhhc2UuY3BwCkBAIC00MSw3ICs0MSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKIAogbmFtZXNwYWNlIHsKIAotc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwor
I3VuZGVmIHZlcmJvc2UKKyNkZWZpbmUgdmVyYm9zZSBmYWxzZQogCiBlbnVtIFJhbmdlS2luZCB7
CiAgICAgSW52YWxpZFJhbmdlS2luZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKaW5kZXgg
MDdiNmFjMzQ4MmYuLjU0YzIyNTkyMDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcApA
QCAtNDIsNyArNDIsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVz
cGFjZSB7CiAKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworI3VuZGVmIHZlcmJvc2UKKyNk
ZWZpbmUgdmVyYm9zZSBmYWxzZQogY29uc3QgdW5zaWduZWQgZ2l2ZVVwVGhyZXNob2xkID0gNTA7
CiAKIGludDY0X3QgY2xhbXBlZFN1bUltcGwoKSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnZhbGlkYXRpb25Qb2ludElu
amVjdGlvblBoYXNlLmNwcAppbmRleCBlOWZiZDM1NDhmYi4uZTRlYWNlNGRlZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rp
b25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnZhbGlkYXRp
b25Qb2ludEluamVjdGlvblBoYXNlLmNwcApAQCAtMzgsNyArMzgsOCBAQAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogCiBjbGFzcyBJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBo
YXNlIDogcHVibGljIFBoYXNlIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFs
c2U7CisgICAgI3VuZGVmIHZlcmJvc2UKKyNkZWZpbmUgdmVyYm9zZSBmYWxzZQogICAgIAogcHVi
bGljOgogICAgIEludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uUGhhc2UoR3JhcGgmIGdyYXBoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCmluZGV4IDc1ZWVmYTll
NzA3Li5iNDk4NmQwZmYzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdMSUNNUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBo
YXNlLmNwcApAQCAtNjAsNyArNjAsOCBAQCBzdHJ1Y3QgTG9vcERhdGEgewogfSAvLyBhbm9ueW1v
dXMgbmFtZXNwYWNlCiAKIGNsYXNzIExJQ01QaGFzZSA6IHB1YmxpYyBQaGFzZSB7Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworICAgICN1bmRlZiB2ZXJib3NlCisjZGVm
aW5lIHZlcmJvc2UgZmFsc2UKICAgICAKIHB1YmxpYzoKICAgICBMSUNNUGhhc2UoR3JhcGgmIGdy
YXBoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNb3ZIaW50UmVt
b3ZhbFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTW92SGludFJlbW92
YWxQaGFzZS5jcHAKaW5kZXggOWYzNDRiMzdkY2QuLmEwYzZjMzUzMGIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01vdkhpbnRSZW1vdmFsUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTW92SGludFJlbW92YWxQaGFzZS5jcHAKQEAg
LTQyLDcgKzQyLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3Bh
Y2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsKKyN1bmRlZiB2ZXJib3NlCisjZGVmaW5lIHZl
cmJvc2UgZmFsc2UKIAogY2xhc3MgTW92SGludFJlbW92YWxQaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05hdHVy
YWxMb29wcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05hdHVyYWxMb29wcy5j
cHAKaW5kZXggNDgwY2YwZWQ4ODMuLjg1ZWQzNmFiMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05hdHVyYWxMb29wcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuY3BwCkBAIC01NSw3ICs1NSw4IEBAIE5hdHVyYWxM
b29wczo6TmF0dXJhbExvb3BzKEdyYXBoJiBncmFwaCkKICAgICAvLyBibG9ja3MgdG8gdGhlaXIg
bG9vcCBoZWFkZXJzLCB3aGljaCBnaXZlcyB1cyBhbGwgb2YgdGhlIGJsb2NrcyBpbiB0aGUKICAg
ICAvLyBsb29wIGJvZHkuCiAgICAgCi0gICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZh
bHNlOworICAgICN1bmRlZiB2ZXJib3NlCisjZGVmaW5lIHZlcmJvc2UgZmFsc2UKICAgICAKICAg
ICBpZiAodmVyYm9zZSkgewogICAgICAgICBkYXRhTG9nKCJEb21pbmF0b3JzOlxuIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5r
aW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0
aW9uU2lua2luZ1BoYXNlLmNwcAppbmRleCA4YTg5NjMxZDUxZi4uNjI0NWI0OWZjNmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtp
bmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxv
Y2F0aW9uU2lua2luZ1BoYXNlLmNwcApAQCAtNDgsNyArNDgsOCBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOwor
I3VuZGVmIHZlcmJvc2UKKyNkZWZpbmUgdmVyYm9zZSBmYWxzZQogCiAvLyBJbiBvcmRlciB0byBz
aW5rIG9iamVjdCBjeWNsZXMsIHdlIHVzZSBhIHBvaW50cy10byBhbmFseXNpcyBjb3VwbGVkCiAv
LyB3aXRoIGFuIGVzY2FwZSBhbmFseXNpcy4gVGhpcyBhbmFseXNpcyBpcyBhY3R1YWxseSBzaW1p
bGFyIHRvIGFuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50
b21JbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50
b21JbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggZGNjMWM5NzY5ODYuLmI3ZGMyNWVjMTRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21JbnNlcnRpb25QaGFz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tSW5zZXJ0aW9u
UGhhc2UuY3BwCkBAIC00Myw3ICs0Myw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKIAogbmFtZXNwYWNlIHsKIAotYm9vbCB2ZXJib3NlID0gZmFsc2U7CisjdW5kZWYgdmVyYm9z
ZQorI2RlZmluZSB2ZXJib3NlIGZhbHNlCiAKIGNsYXNzIFBoYW50b21JbnNlcnRpb25QaGFzZSA6
IHB1YmxpYyBQaGFzZSB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCmluZGV4IGFjMzcxMjcwZGVhLi45ZTI0
MmYxZjcwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFj
a1NpbmtpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRT
dGFja1NpbmtpbmdQaGFzZS5jcHAKQEAgLTQyLDcgKzQyLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsKKyN1
bmRlZiB2ZXJib3NlCisjZGVmaW5lIHZlcmJvc2UgZmFsc2UKIAogY2xhc3MgUHV0U3RhY2tTaW5r
aW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCmluZGV4IGNkZTA3NDAwN2M5
Li4yZjFjMmYwYjdjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
U0FDb252ZXJzaW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U1NBQ29udmVyc2lvblBoYXNlLmNwcApAQCAtMzksNyArMzksOCBAQAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogCiBjbGFzcyBTU0FDb252ZXJzaW9uUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewotICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKyAgICAjdW5kZWYg
dmVyYm9zZQorI2RlZmluZSB2ZXJib3NlIGZhbHNlCiAgICAgCiBwdWJsaWM6CiAgICAgU1NBQ29u
dmVyc2lvblBoYXNlKEdyYXBoJiBncmFwaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCmluZGV4IDJmOGQ4YWY3NTNmLi5lMGJhMjRmNzQy
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1Bo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhh
c2UuY3BwCkBAIC0zNyw3ICszNyw4IEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAKIGNsYXNzIFNTQUxvd2VyaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewotICAgIHN0YXRpYyBj
b25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKyAgICAjdW5kZWYgdmVyYm9zZQorI2RlZmluZSB2
ZXJib3NlIGZhbHNlCiAgICAgCiBwdWJsaWM6CiAgICAgU1NBTG93ZXJpbmdQaGFzZShHcmFwaCYg
Z3JhcGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCmluZGV4IDAyYzc3YTQ0ODk5Li5kMThkZWIxYTlmYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTkyODgsNyArOTI4OCw4IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRCaW5hcnlTd2l0Y2hTdHJpbmdSZWN1cnNlKAogICAg
IHVuc2lnbmVkIG51bUNoZWNrZWQsIHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQsIEdQUlJl
ZyBidWZmZXIsIEdQUlJlZyBsZW5ndGgsCiAgICAgR1BSUmVnIHRlbXAsIHVuc2lnbmVkIGFscmVh
ZHlDaGVja2VkTGVuZ3RoLCBib29sIGNoZWNrZWRFeGFjdExlbmd0aCkKIHsKLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CisgICAgI3VuZGVmIHZlcmJvc2UKKyNkZWZpbmUg
dmVyYm9zZSBmYWxzZQogICAgIAogICAgIGlmICh2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2co
IldlJ3JlIGRvd24gdG8gdGhlIGZvbGxvd2luZyBjYXNlcywgYWxyZWFkeUNoZWNrZWRMZW5ndGgg
PSAiLCBhbHJlYWR5Q2hlY2tlZExlbmd0aCwgIjpcbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAKaW5kZXggMDNjNTAyZmM4ODAuLmUy
NTIyYTBlZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNr
TGF5b3V0UGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tM
YXlvdXRQaGFzZS5jcHAKQEAgLTM2LDcgKzM2LDggQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKIAogY2xhc3MgU3RhY2tMYXlvdXRQaGFzZSA6IHB1YmxpYyBQaGFzZSB7Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworICAgICN1bmRlZiB2ZXJib3NlCisj
ZGVmaW5lIHZlcmJvc2UgZmFsc2UKICAgICAKIHB1YmxpYzoKICAgICBTdGFja0xheW91dFBoYXNl
KEdyYXBoJiBncmFwaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggNGZhYjZmNTAzZTAuLjY5
Y2I2NGJhZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3Jl
QmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAtNDMsNyArNDMsOCBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9z
ZSA9IGZhbHNlOworI3VuZGVmIHZlcmJvc2UKKyNkZWZpbmUgdmVyYm9zZSBmYWxzZQogCiBlbnVt
IGNsYXNzIFBoYXNlTW9kZSB7CiAgICAgLy8gRG9lcyBvbmx5IGEgbG9jYWwgYW5hbHlzaXMgZm9y
IHN0b3JlIGJhcnJpZXIgaW5zZXJ0aW9uIGFuZCBhc3N1bWVzIHRoYXQgcG9pbnRlcnMgbGl2ZQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlv
blBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rp
b25QaGFzZS5jcHAKaW5kZXggOTVhZTE5YmEzYTMuLjg5ZGQ2NGM4OWZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5j
cHAKQEAgLTQ1LDcgKzQ1LDggQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAog
Y2xhc3MgU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7Ci0gICAgc3RhdGlj
IGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworICAgICN1bmRlZiB2ZXJib3NlCisjZGVmaW5l
IHZlcmJvc2UgZmFsc2UKICAgICAKIHB1YmxpYzoKICAgICBTdHJlbmd0aFJlZHVjdGlvblBoYXNl
KEdyYXBoJiBncmFwaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCmluZGV4IGUzYzUyYWNhOWRhLi4yODUzZDE5ZDIw
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2Fy
ZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NG
b3J3YXJkaW5nUGhhc2UuY3BwCkBAIC00MCw3ICs0MCw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAotYm9vbCB2ZXJib3NlID0gZmFsc2U7CisjdW5k
ZWYgdmVyYm9zZQorI2RlZmluZSB2ZXJib3NlIGZhbHNlCiAKIGNsYXNzIFZhcmFyZ3NGb3J3YXJk
aW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAKaW5k
ZXggMzllMjk2YTNkNmQuLmY3NGRlMzQxMzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAKQEAgLTQ1
LDcgKzQ1LDggQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogY2xhc3MgV2F0
Y2hwb2ludENvbGxlY3Rpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7Ci0gICAgc3RhdGljIGNvbnN0
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworICAgICN1bmRlZiB2ZXJib3NlCisjZGVmaW5lIHZlcmJv
c2UgZmFsc2UKICAgICAKIHB1YmxpYzoKICAgICBXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlKEdy
YXBoJiBncmFwaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29t
cGlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCmluZGV4
IGZkMDkxNDU2Zjc1Li5mMTNhYzhmMmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDb21waWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENvbXBpbGUuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUs
IFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9pbnRSZXN1bHQpCiAgICAgVk0mIHZtID0gZ3JhcGgu
bV92bTsKIAogICAgIGlmIChzaG91bGREdW1wRGlzYXNzZW1ibHkoKSkKLSAgICAgICAgc3RhdGUu
cHJvYy0+Y29kZSgpLnNldERpc2Fzc2VtYmxlcihzdGQ6Om1ha2VfdW5pcXVlPEIzOjpBaXI6OkRp
c2Fzc2VtYmxlcj4oKSk7CisgICAgICAgIHN0YXRlLnByb2MtPmNvZGUoKS5zZXREaXNhc3NlbWJs
ZXIoc3RkOjptYWtlX3VuaXF1ZTxBaXI6OkRpc2Fzc2VtYmxlcj4oKSk7CiAKICAgICB7CiAgICAg
ICAgIEdyYXBoU2FmZXBvaW50IHNhZmVwb2ludChzdGF0ZS5ncmFwaCwgc2FmZXBvaW50UmVzdWx0
KTsKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9p
bnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgICAgICBzdGF0ZS5maW5hbGl6ZXItPmIz
Q29kZUxpbmtCdWZmZXItPmVudHJ5cG9pbnQoKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKICAgICBz
dGF0ZS5qaXRDb2RlLT5pbml0aWFsaXplQjNCeXByb2R1Y3RzKHN0YXRlLnByb2MtPnJlbGVhc2VC
eXByb2R1Y3RzKCkpOwogCi0gICAgaWYgKEIzOjpBaXI6OkRpc2Fzc2VtYmxlciogZGlzYXNzZW1i
bGVyID0gc3RhdGUucHJvYy0+Y29kZSgpLmRpc2Fzc2VtYmxlcigpKSB7CisgICAgaWYgKEFpcjo6
RGlzYXNzZW1ibGVyKiBkaXNhc3NlbWJsZXIgPSBzdGF0ZS5wcm9jLT5jb2RlKCkuZGlzYXNzZW1i
bGVyKCkpIHsKICAgICAgICAgUHJpbnRTdHJlYW0mIG91dCA9IFdURjo6ZGF0YUZpbGUoKTsKIAog
ICAgICAgICBvdXQucHJpbnQoIkdlbmVyYXRlZCAiLCBzdGF0ZS5ncmFwaC5tX3BsYW4ubW9kZSwg
IiBjb2RlIGZvciAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShzdGF0ZS5ncmFwaC5tX2NvZGVCbG9j
aywgSklUQ29kZTo6RlRMSklUKSwgIiwgaW5zdHJ1Y3Rpb24gY291bnQgPSAiLCBzdGF0ZS5ncmFw
aC5tX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpLCAiOlxuIik7CkBAIC0yMjEsNyArMjIx
LDcgQEAgdm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVw
b2ludFJlc3VsdCkKICAgICAgICAgICAgIHByaW50ZWRWYWx1ZXMuYWRkKHZhbHVlKTsKICAgICAg
ICAgfTsKIAotICAgICAgICBhdXRvIGZvckVhY2hJbnN0ID0gWyZdIChCMzo6QWlyOjpJbnN0JiBp
bnN0KSB7CisgICAgICAgIGF1dG8gZm9yRWFjaEluc3QgPSBbJl0gKEFpcjo6SW5zdCYgaW5zdCkg
ewogICAgICAgICAgICAgcHJpbnRCM1ZhbHVlKGluc3Qub3JpZ2luKTsKICAgICAgICAgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKaW5kZXggOWRkMzNjMDQwOTEuLjljOTFl
MzcxNGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKQEAgLTgyLDcgKzgy
LDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgU3RyaW5nUHJpbnRTdHJlYW0g
b3V0OwogICAgICAgICBOb2RlKiBsYXN0Tm9kZSA9IDA7CiAgICAgICAgIGZvciAoc2l6ZV90IGJs
b2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRl
eCkgewotICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBncmFwaC5ibG9jayhibG9ja0lu
ZGV4KTsKKyAgICAgICAgICAgIGF1dG8qIGJsb2NrID0gZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7
CiAgICAgICAgICAgICBpZiAoIWJsb2NrKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvY2F0
aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG9jYXRpb24uY3BwCmluZGV4
IGFjOGYyM2VmOGQ0Li4yYmMyMDRkNzAzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb2NhdGlvbi5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBGVEwgewogCiB1c2luZyBuYW1lc3BhY2UgQjM7CiAKLUxvY2F0aW9uIExvY2F0aW9uOjpmb3JW
YWx1ZVJlcChjb25zdCBWYWx1ZVJlcCYgcmVwKQorTG9jYXRpb24gTG9jYXRpb246OmZvclZhbHVl
UmVwKGNvbnN0IEIzOjpWYWx1ZVJlcCYgcmVwKQogewogICAgIHN3aXRjaCAocmVwLmtpbmQoKSkg
ewogICAgIGNhc2UgVmFsdWVSZXA6OlJlZ2lzdGVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9TUkV4aXQuaAppbmRleCBkMTc5MDliMGFkMC4uNDU5YmViMGU3YzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCkBAIC01MSwxMCArNTEsMTEgQEAgY2xhc3MgVHJhY2tl
ZFJlZmVyZW5jZXM7CiAKIG5hbWVzcGFjZSBCMyB7CiBjbGFzcyBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXM7Cit9IC8vIG5hbWVzcGFjZSBCMworCiBuYW1lc3BhY2UgQWlyIHsKIHN0cnVjdCBHZW5l
cmF0aW9uQ29udGV4dDsKIH0gLy8gbmFtZXNwYWNlIEFpcgotfSAvLyBuYW1lc3BhY2UgQjMKIAog
bmFtZXNwYWNlIERGRyB7CiBzdHJ1Y3QgTm9kZU9yaWdpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0dDSW5jb21pbmdSZWZDb3VudGVkSW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvR0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVzLmgKaW5kZXgg
YTFhOTFlMjAzOTYuLjZlNmM3MDcxYTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9HQ0luY29taW5nUmVmQ291bnRlZElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9HQ0luY29taW5nUmVmQ291bnRlZElubGluZXMuaApAQCAtNTksNyArNTks
OSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyRnVuY3Rp
b25UeXBlPgogYm9vbCBHQ0luY29taW5nUmVmQ291bnRlZDxUPjo6ZmlsdGVySW5jb21pbmdSZWZl
cmVuY2VzKEZpbHRlckZ1bmN0aW9uVHlwZSYgZmlsdGVyRnVuY3Rpb24pCiB7Ci0gICAgY29uc3Qg
Ym9vbCB2ZXJib3NlID0gZmFsc2U7CisgICAgI3VuZGVmIHZlcmJvc2UKKyNkZWZpbmUgdmVyYm9z
ZSBmYWxzZQorCiAgICAgCiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkZpbHRl
cmluZyBpbmNvbWluZyByZWZlcmVuY2VzLlxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCmluZGV4IGE5MDlkZDA3YzRiLi4yODYzNmI5NmY1YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAKQEAgLTIxNTQsNyArMjE1NCw5IEBAIHZvaWQgSGVhcDo6bm90aWZ5SW5jcmVt
ZW50YWxTd2VlcGVyKCkKIAogdm9pZCBIZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGltaXRzKCkKIHsK
LSAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CisgICAgI3VuZGVmIHZlcmJv
c2UKKyNkZWZpbmUgdmVyYm9zZSBmYWxzZQorCiAgICAgCiAgICAgaWYgKHZlcmJvc2UpIHsKICAg
ICAgICAgZGF0YUxvZygiXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtpbmdDb25zdHJhaW50U2V0LmNwcAppbmRleCAwMWMwNmU3NWM1Yi4uN2VlOWU2YjZkZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50
U2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWlu
dFNldC5jcHAKQEAgLTEwNiwxNSArMTA2LDE1IEBAIHZvaWQgTWFya2luZ0NvbnN0cmFpbnRTZXQ6
OmRpZFN0YXJ0TWFya2luZygpCiAgICAgbV9pdGVyYXRpb24gPSAxOwogfQogCi12b2lkIE1hcmtp
bmdDb25zdHJhaW50U2V0OjphZGQoQ1N0cmluZyBhYmJyZXZpYXRlZE5hbWUsIENTdHJpbmcgbmFt
ZSwgRnVuY3Rpb248dm9pZChTbG90VmlzaXRvciYsIGNvbnN0IFZpc2l0aW5nVGltZW91dCYpPiBm
dW5jdGlvbiwgQ29uc3RyYWludFZvbGF0aWxpdHkgdm9sYXRpbGl0eSkKK3ZvaWQgTWFya2luZ0Nv
bnN0cmFpbnRTZXQ6OmFkZChDU3RyaW5nIGFiYnJldmlhdGVkTmFtZSwgQ1N0cmluZyBuYW1lLCA6
OkZ1bmN0aW9uPHZvaWQoU2xvdFZpc2l0b3ImLCBjb25zdCBWaXNpdGluZ1RpbWVvdXQmKT4gZnVu
Y3Rpb24sIENvbnN0cmFpbnRWb2xhdGlsaXR5IHZvbGF0aWxpdHkpCiB7CiAgICAgYWRkKHN0ZDo6
bWFrZV91bmlxdWU8TWFya2luZ0NvbnN0cmFpbnQ+KFdURk1vdmUoYWJicmV2aWF0ZWROYW1lKSwg
V1RGTW92ZShuYW1lKSwgV1RGTW92ZShmdW5jdGlvbiksIHZvbGF0aWxpdHkpKTsKIH0KIAogdm9p
ZCBNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKAogICAgIENTdHJpbmcgYWJicmV2aWF0ZWROYW1l
LCBDU3RyaW5nIG5hbWUsCi0gICAgRnVuY3Rpb248dm9pZChTbG90VmlzaXRvciYsIGNvbnN0IFZp
c2l0aW5nVGltZW91dCYpPiBleGVjdXRlRnVuY3Rpb24sCi0gICAgRnVuY3Rpb248ZG91YmxlKFNs
b3RWaXNpdG9yJik+IHF1aWNrV29ya0VzdGltYXRlRnVuY3Rpb24sCisgICAgOjpGdW5jdGlvbjx2
b2lkKFNsb3RWaXNpdG9yJiwgY29uc3QgVmlzaXRpbmdUaW1lb3V0Jik+IGV4ZWN1dGVGdW5jdGlv
biwKKyAgICA6OkZ1bmN0aW9uPGRvdWJsZShTbG90VmlzaXRvciYpPiBxdWlja1dvcmtFc3RpbWF0
ZUZ1bmN0aW9uLAogICAgIENvbnN0cmFpbnRWb2xhdGlsaXR5IHZvbGF0aWxpdHkpCiB7CiAgICAg
YWRkKHN0ZDo6bWFrZV91bmlxdWU8TWFya2luZ0NvbnN0cmFpbnQ+KFdURk1vdmUoYWJicmV2aWF0
ZWROYW1lKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShleGVjdXRlRnVuY3Rpb24pLCBXVEZNb3Zl
KHF1aWNrV29ya0VzdGltYXRlRnVuY3Rpb24pLCB2b2xhdGlsaXR5KSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9TdWJzcGFjZS5jcHAKaW5kZXggODNhNGZkYzZmNWMuLjQwMWFlNzVjYTYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwCkBAIC00MCw3ICs0MCw3IEBA
IG5hbWVzcGFjZSB7CiAvLyB0aGlzIGNhbGxiYWNrLiBJZiB5b3Ugd3JvdGUgdGhpcyBhcyBhIG5v
cm1hbCBmdW5jdGlvbiB0aGVuIHRoZSBjYWxsZWUgd291bGQgYmUgc3BlY2lhbGl6ZWQgZm9yCiAv
LyB0aGUgZnVuY3Rpb24ncyB0eXBlIGFuZCBpdCB3b3VsZCBoYXZlIGluZGlyZWN0IGNhbGxzIHRv
IHRoYXQgZnVuY3Rpb24uIEFuZCB1bmxpa2UgYSBsYW1iZGEsIGl0J3MKIC8vIHBvc3NpYmxlIHRv
IG1hcmsgdGhpcyBBTFdBWVNfSU5MSU5FLgotc3RydWN0IERlc3Ryb3lGdW5jIHsKK3N0cnVjdCBE
ZXN0cm95RnVuY1N1YnNwYWNlICB7CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIG9wZXJhdG9yKCko
Vk0mIHZtLCBKU0NlbGwqIGNlbGwpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoY2VsbC0+
c3RydWN0dXJlSUQoKSk7CkBAIC03OSwxMiArNzksMTIgQEAgU3Vic3BhY2U6On5TdWJzcGFjZSgp
CiAKIHZvaWQgU3Vic3BhY2U6OmZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmIGJsb2Nr
LCBGcmVlTGlzdCogZnJlZUxpc3QpCiB7Ci0gICAgYmxvY2suZmluaXNoU3dlZXBLbm93aW5nU3Vi
c3BhY2UoZnJlZUxpc3QsIERlc3Ryb3lGdW5jKCkpOworICAgIGJsb2NrLmZpbmlzaFN3ZWVwS25v
d2luZ1N1YnNwYWNlKGZyZWVMaXN0LCBEZXN0cm95RnVuY1N1YnNwYWNlICgpKTsKIH0KIAogdm9p
ZCBTdWJzcGFjZTo6ZGVzdHJveShWTSYgdm0sIEpTQ2VsbCogY2VsbCkKIHsKLSAgICBEZXN0cm95
RnVuYygpKHZtLCBjZWxsKTsKKyAgICBEZXN0cm95RnVuY1N1YnNwYWNlICgpKHZtLCBjZWxsKTsK
IH0KIAogLy8gVGhlIHJlYXNvbiB3aHkgd2UgZGlzdGluZ3Vpc2ggYmV0d2VlbiBhbGxvY2F0ZSBh
bmQgdHJ5QWxsb2NhdGUgaXMgdG8gbWluaW1pemUgdGhlIG51bWJlciBvZgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggNGQ2MWY0OTEyYmEuLmIzZGUwZmNjNDA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTI1OSw3ICsyNTksOSBAQCB2b2lkIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudDo6cmVsZWFzZU9iamVjdEdyb3VwKEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBvYmplYwogCiB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5
cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYgbG9jYXRpb25zLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0
aW9uPj4mIHR5cGVEZXNjcmlwdGlvbnMpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9z
ZSA9IGZhbHNlOworICAgICN1bmRlZiB2ZXJib3NlCisjZGVmaW5lIHZlcmJvc2UgZmFsc2UKKwog
CiAgICAgdHlwZURlc2NyaXB0aW9ucyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj46OmNyZWF0ZSgpOwogICAg
IGlmICghbV92bS50eXBlUHJvZmlsZXIoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggZTM0OTJmY2FkNGUuLmUyM2MxZGY4
M2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKQEAgLTMzNywxMyArMzM3LDEzIEBAIEludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIo
KQogCiAjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKICNpZiAhVVNFKExMSU5UX0VN
QkVEREVEX09QQ09ERV9JRCkgfHwgIUFTU0VSVF9ESVNBQkxFRAotSGFzaE1hcDxPcGNvZGUsIE9w
Y29kZUlEPiYgSW50ZXJwcmV0ZXI6Om9wY29kZUlEVGFibGUoKQorSGFzaE1hcDxKU0M6Ok9wY29k
ZSwgT3Bjb2RlSUQ+JiBJbnRlcnByZXRlcjo6b3Bjb2RlSURUYWJsZSgpCiB7Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4+IG9wY29kZUlEVGFibGU7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8SlNDOjpPcGNvZGUsIE9wY29kZUlE
Pj4gb3Bjb2RlSURUYWJsZTsKIAogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXpl
S2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVLZXksIFsmXSB7Ci0gICAgICAgIGNv
bnN0IE9wY29kZSogb3Bjb2RlVGFibGUgPSBMTEludDo6b3Bjb2RlTWFwKCk7CisgICAgICAgIGNv
bnN0IEpTQzo6T3Bjb2RlKiBvcGNvZGVUYWJsZSA9IExMSW50OjpvcGNvZGVNYXAoKTsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE5VTUJFUl9PRl9CWVRFQ09ERV9JRFM7ICsraSkK
ICAgICAgICAgICAgIG9wY29kZUlEVGFibGUuZ2V0KCkuYWRkKG9wY29kZVRhYmxlW2ldLCBzdGF0
aWNfY2FzdDxPcGNvZGVJRD4oaSkpOwogICAgIH0pOwpAQCAtNDY1LDcgKzQ2NSw3IEBAIHZvaWQg
SW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAjZW5kaWYK
IAogI2lmICFBU1NFUlRfRElTQUJMRUQKLWJvb2wgSW50ZXJwcmV0ZXI6OmlzT3Bjb2RlKE9wY29k
ZSBvcGNvZGUpCitib29sIEludGVycHJldGVyOjppc09wY29kZShKU0M6Ok9wY29kZSBvcGNvZGUp
CiB7CiAjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKICAgICByZXR1cm4gb3Bjb2Rl
ICE9IEhhc2hUcmFpdHM8T3Bjb2RlPjo6ZW1wdHlWYWx1ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDdhYjM2NTZjNzEwLi5jNzM1
MGYxNjg2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmgKQEAgLTk5LDE0ICs5OSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQ0xv
b3BTdGFjayYgY2xvb3BTdGFjaygpIHsgcmV0dXJuIG1fY2xvb3BTdGFjazsgfQogI2VuZGlmCiAg
ICAgICAgIAotICAgICAgICBzdGF0aWMgaW5saW5lIE9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQp
OworICAgICAgICBzdGF0aWMgaW5saW5lIEpTQzo6T3Bjb2RlIGdldE9wY29kZShPcGNvZGVJRCk7
CiAKLSAgICAgICAgc3RhdGljIGlubGluZSBPcGNvZGVJRCBnZXRPcGNvZGVJRChPcGNvZGUpOwor
ICAgICAgICBzdGF0aWMgaW5saW5lIE9wY29kZUlEIGdldE9wY29kZUlEKEpTQzo6T3Bjb2RlKTsK
ICAgICAgICAgc3RhdGljIGlubGluZSBPcGNvZGVJRCBnZXRPcGNvZGVJRChjb25zdCBJbnN0cnVj
dGlvbiYpOwogICAgICAgICBzdGF0aWMgaW5saW5lIE9wY29kZUlEIGdldE9wY29kZUlEKGNvbnN0
IFVubGlua2VkSW5zdHJ1Y3Rpb24mKTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICAgICAg
c3RhdGljIGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKKyAgICAgICAgc3RhdGljIGJvb2wgaXNPcGNv
ZGUoSlNDOjpPcGNvZGUpOwogI2VuZGlmCiAKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlUHJvZ3Jh
bShjb25zdCBTb3VyY2VDb2RlJiwgQ2FsbEZyYW1lKiwgSlNPYmplY3QqIHRoaXNPYmopOwpAQCAt
MTQ5LDcgKzE0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoQ09N
UFVURURfR09UT19PUENPREVTKQogI2lmICFVU0UoTExJTlRfRU1CRURERURfT1BDT0RFX0lEKSB8
fCAhQVNTRVJUX0RJU0FCTEVECi0gICAgICAgIHN0YXRpYyBIYXNoTWFwPE9wY29kZSwgT3Bjb2Rl
SUQ+JiBvcGNvZGVJRFRhYmxlKCk7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlELgorICAgICAg
ICBzdGF0aWMgSGFzaE1hcDxKU0M6Ok9wY29kZSwgT3Bjb2RlSUQ+JiBvcGNvZGVJRFRhYmxlKCk7
IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlELgogI2VuZGlmIC8vICFVU0UoTExJTlRfRU1CRURE
RURfT1BDT0RFX0lEKSB8fCAhQVNTRVJUX0RJU0FCTEVECiAjZW5kaWYgLy8gRU5BQkxFKENPTVBV
VEVEX0dPVE9fT1BDT0RFUykKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oCmluZGV4IGNiYjYwNTM3ZWEyLi4x
Mzg2YzdkMGY1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlcklubGluZXMuaApAQCAtMzMsMTIgKzMzLDEyIEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1pbmxpbmUgT3Bjb2RlIEludGVycHJldGVyOjpnZXRPcGNvZGUoT3Bjb2RlSUQg
aWQpCitpbmxpbmUgSlNDOjpPcGNvZGUgSW50ZXJwcmV0ZXI6OmdldE9wY29kZShPcGNvZGVJRCBp
ZCkKIHsKICAgICByZXR1cm4gTExJbnQ6OmdldE9wY29kZShpZCk7CiB9CiAKLWlubGluZSBPcGNv
ZGVJRCBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoT3Bjb2RlIG9wY29kZSkKK2lubGluZSBPcGNv
ZGVJRCBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoSlNDOjpPcGNvZGUgb3Bjb2RlKQogewogI2lm
IEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCiAgICAgQVNTRVJUKGlzT3Bjb2RlKG9wY29k
ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRv
d0NoaWNrZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0No
aWNrZW4uY3BwCmluZGV4IDBmN2U5Y2IwYzA1Li40MjZjMjI3N2NkZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2VuLmNwcApAQCAtMzMs
NyArMzMsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9z
ZSA9IGZhbHNlOworI3VuZGVmIHZlcmJvc2UKKyNkZWZpbmUgdmVyYm9zZSBmYWxzZQorCiAKIHZv
aWQgU2hhZG93Q2hpY2tlbjo6UGFja2V0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0JpbmFyeVN3aXRjaC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0JpbmFyeVN3aXRjaC5jcHAKaW5kZXggZjNkZGNm
Y2E5MjEuLmIwMDNkYWY0MGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0JpbmFyeVN3aXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9CaW5hcnlT
d2l0Y2guY3BwCkBAIC0zMyw3ICszMyw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMg
Y29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CisjdW5kZWYgdmVyYm9zZQorI2RlZmluZSB2ZXJi
b3NlIGZhbHNlCisKIAogc3RhdGljIHVuc2lnbmVkIGdsb2JhbENvdW50ZXI7IC8vIFdlIHVzZSBh
IGRpZmZlcmVudCBzZWVkIGV2ZXJ5IHRpbWUgd2UgYXJlIGludm9rZWQuCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuaAppbmRleCBmZjUyZTk1NjFmOS4u
MDUzMWUxYWU1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZy
YW1lU2h1ZmZsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNo
dWZmbGVyLmgKQEAgLTMzLDYgKzMzLDkgQEAKICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorI3VuZGVmIHZlcmJvc2UKKyNkZWZpbmUgdmVyYm9zZSBm
YWxzZQorCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ2FsbEZyYW1lU2h1ZmZsZXIgewpAQCAt
MTg1LDcgKzE4OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHByZXBhcmVGb3JTbG93UGF0aCgpOwog
CiBwcml2YXRlOgotICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKIAogICAg
IENDYWxsSGVscGVycyYgbV9qaXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAKaW5kZXggOGI2MTVhMWEzYTUuLjUxZjljMzVkYzRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtNDgsNyArNDgsNyBAQAogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAKIEluc3RydWN0aW9uKiBEYXRhOjpzX2V4Y2VwdGlv
bkluc3RydWN0aW9ucyA9IDA7Ci1PcGNvZGUgRGF0YTo6c19vcGNvZGVNYXBbbnVtT3Bjb2RlSURz
XSA9IHsgfTsKK0pTQzo6T3Bjb2RlIERhdGE6OnNfb3Bjb2RlTWFwW251bU9wY29kZUlEc10gPSB7
IH07CiBPcGNvZGVTdGF0c0FycmF5KiBEYXRhOjpzX29wY29kZVN0YXRzQXJyYXkgPSBudWxscHRy
OwogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIERhdGE6OmR1bXBT
dGF0cygpCiAgICAgYXV0byBzdGF0c0NvcHkgPSAqc19vcGNvZGVTdGF0c0FycmF5OwogICAgIHN0
ZDo6c29ydChzdGF0c0NvcHkuYmVnaW4oKSwgc3RhdHNDb3B5LmVuZCgpLCBjb21wYXJlU3RhdHMp
OwogCi0gICAgZGF0YUxvZygiT3Bjb2RlIHN0YXRzOlxuIik7CisgICAgZGF0YUxvZygiSlNDOjpP
cGNvZGUgc3RhdHM6XG4iKTsKICAgICB1bnNpZ25lZCBpID0gMDsKICAgICBmb3IgKGF1dG8mIHN0
YXRzIDogc3RhdHNDb3B5KSB7CiAgICAgICAgIGlmIChzdGF0cy5jb3VudCB8fCBzdGF0cy5zbG93
UGF0aENvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCmluZGV4IDQ0
MWEyY2ZjNmRhLi44Njc2NjkwNWI2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dERhdGEuaApAQCAtNjYsMTQgKzY2LDE0IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgc2F2
ZVN0YXRzKCk7CiAKICAgICBzdGF0aWMgSW5zdHJ1Y3Rpb24qIHNfZXhjZXB0aW9uSW5zdHJ1Y3Rp
b25zOwotICAgIHN0YXRpYyBPcGNvZGUgc19vcGNvZGVNYXBbbnVtT3Bjb2RlSURzXTsKKyAgICBz
dGF0aWMgSlNDOjpPcGNvZGUgc19vcGNvZGVNYXBbbnVtT3Bjb2RlSURzXTsKICAgICBzdGF0aWMg
T3Bjb2RlU3RhdHNBcnJheSogc19vcGNvZGVTdGF0c0FycmF5OwogCiAgICAgZnJpZW5kIHZvaWQg
aW5pdGlhbGl6ZSgpOwogCiAgICAgZnJpZW5kIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVj
dGlvbnMoKTsKLSAgICBmcmllbmQgT3Bjb2RlKiBvcGNvZGVNYXAoKTsKLSAgICBmcmllbmQgT3Bj
b2RlIGdldE9wY29kZShPcGNvZGVJRCk7CisgICAgZnJpZW5kIEpTQzo6T3Bjb2RlKiBvcGNvZGVN
YXAoKTsKKyAgICBmcmllbmQgSlNDOjpPcGNvZGUgZ2V0T3Bjb2RlKE9wY29kZUlEKTsKICAgICBm
cmllbmQgdm9pZCogZ2V0Q29kZVB0cihPcGNvZGVJRCk7CiB9OwogCkBAIC04NCwxMiArODQsMTIg
QEAgaW5saW5lIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQogICAgIHJldHVy
biBEYXRhOjpzX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKIH0KICAgICAKLWlubGluZSBPcGNvZGUq
IG9wY29kZU1hcCgpCitpbmxpbmUgSlNDOjpPcGNvZGUqIG9wY29kZU1hcCgpCiB7CiAgICAgcmV0
dXJuIERhdGE6OnNfb3Bjb2RlTWFwOwogfQogCi1pbmxpbmUgT3Bjb2RlIGdldE9wY29kZShPcGNv
ZGVJRCBpZCkKK2lubGluZSBKU0M6Ok9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQgaWQpCiB7CiAj
aWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKICAgICByZXR1cm4gRGF0YTo6c19vcGNv
ZGVNYXBbaWRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwCmluZGV4IGEwZjA5ZDRjNGU1Li5lNTIzZjE5ODYwYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcApA
QCAtNjYsNyArNjYsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOjpMTEludDsKIC8vIEhlcmUgaXMg
YSB0YWJsZSB0byBzaG93IGV4YW1wbGVzIG9mIGhvdyBlYWNoIG9mIHRoZSBtYW5pZmVzdGF0aW9u
IG9mIHRoZQogLy8gb3Bjb2RlcyBhcmUgbmFtZWQ6CiAvLwotLy8gICBUeXBlOiAgICAgICAgICAg
ICAgICAgICAgICAgIE9wY29kZSAgICAgICAgICAgIFRyYW1wb2xpbmUgR2x1ZQorLy8gICBUeXBl
OiAgICAgICAgICAgICAgICAgICAgICAgIEpTQzo6T3Bjb2RlICAgICAgICAgICAgVHJhbXBvbGlu
ZSBHbHVlCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09PT09ICAgICAgICAg
ICAgPT09PT09PT09PT09PT09CiAvLyAgIFtJbiB0aGUgbGxpbnQgLmFzbSBmaWxlc10KIC8vICAg
bGxpbnQgbGFiZWxzOiAgICAgICAgICAgICAgICBsbGludF9vcF9lbnRlciAgICBsbGludF9wcm9n
cmFtX3Byb2xvZ3VlCkBAIC0yMzcsNyArMjM3LDcgQEAgc3RydWN0IENMb29wUmVnaXN0ZXIgewog
ICAgICAgICBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkSlNWYWx1ZTsKICAgICAgICAgZG91YmxlIGNh
c3RUb0RvdWJsZTsKICNlbmRpZgotICAgICAgICBPcGNvZGUgb3Bjb2RlOworICAgICAgICBKU0M6
Ok9wY29kZSBvcGNvZGU7CiAgICAgfTsKIAogICAgIG9wZXJhdG9yIEV4ZWNTdGF0ZSooKSB7IHJl
dHVybiBleGVjU3RhdGU7IH0KQEAgLTI3MCw3ICsyNzAsNyBAQCBKU1ZhbHVlIENMb29wOjpleGVj
dXRlKE9wY29kZUlEIGVudHJ5T3Bjb2RlSUQsIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzLCBWTSog
dm0sCiAgICAgLy8gYXJlIGF0IHBsYXkuCiAgICAgaWYgKFVOTElLRUxZKGlzSW5pdGlhbGl6YXRp
b25QYXNzKSkgewogI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCi0gICAgICAgIE9w
Y29kZSogb3Bjb2RlTWFwID0gTExJbnQ6Om9wY29kZU1hcCgpOworICAgICAgICBKU0M6Ok9wY29k
ZSogb3Bjb2RlTWFwID0gTExJbnQ6Om9wY29kZU1hcCgpOwogICAgICAgICAjZGVmaW5lIE9QQ09E
RV9FTlRSWShfX29wY29kZSwgbGVuZ3RoKSBcCiAgICAgICAgICAgICBvcGNvZGVNYXBbX19vcGNv
ZGVdID0gYml0d2lzZV9jYXN0PHZvaWQqPigmJl9fb3Bjb2RlKTsKICAgICAgICAgRk9SX0VBQ0hf
T1BDT0RFX0lEKE9QQ09ERV9FTlRSWSkKQEAgLTM1Niw3ICszNTYsNyBAQCBKU1ZhbHVlIENMb29w
OjpleGVjdXRlKE9wY29kZUlEIGVudHJ5T3Bjb2RlSUQsIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNz
LCBWTSogdm0sCiAgICAgLy8gSW50ZXJwcmV0ZXIgdmFyaWFibGVzIGZvciB2YWx1ZSBwYXNzaW5n
IGJldHdlZW4gb3Bjb2RlcyBhbmQvb3IgaGVscGVyczoKICAgICBOYXRpdmVGdW5jdGlvbiBuYXRp
dmVGdW5jID0gMDsKICAgICBKU1ZhbHVlIGZ1bmN0aW9uUmV0dXJuVmFsdWU7Ci0gICAgT3Bjb2Rl
IG9wY29kZSA9IGdldE9wY29kZShlbnRyeU9wY29kZUlEKTsKKyAgICBKU0M6Ok9wY29kZSBvcGNv
ZGUgPSBnZXRPcGNvZGUoZW50cnlPcGNvZGVJRCk7CiAKICNkZWZpbmUgUFVTSChjbG9vcFJlZykg
XAogICAgIGRvIHsgXApAQCAtMzc5LDcgKzM3OSw3IEBAIEpTVmFsdWUgQ0xvb3A6OmV4ZWN1dGUo
T3Bjb2RlSUQgZW50cnlPcGNvZGVJRCwgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MsIFZNKiB2bSwK
ICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogI2RlZmluZSBGRVRDSF9PUENPREUoKSBwYy5vcGNvZGUK
ICNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpCi0jZGVmaW5lIEZFVENIX09QQ09ERSgpICpiaXR3aXNl
X2Nhc3Q8T3Bjb2RlKj4ocGNCYXNlLmk4cCArIHBjLmkgKiA4KQorI2RlZmluZSBGRVRDSF9PUENP
REUoKSAqYml0d2lzZV9jYXN0PEpTQzo6T3Bjb2RlKj4ocGNCYXNlLmk4cCArIHBjLmkgKiA4KQog
I2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKICNkZWZpbmUgTkVYVF9JTlNUUlVDVElPTigpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApp
bmRleCBkZTAyYjdkZjdkYi4uZTNhODA3OWRiZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTEzNjIsNyArMTM2Miw5IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQXBwZW5kTWVt
Y3B5KEV4ZWNTdGF0ZSogZXhlYykKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXJyYXlQcm90
b3R5cGUuY29uc3RydWN0b3IgV2F0Y2hwb2ludCAtLS0tLS0tLS0tLS0tLS0tLS0KIAotc3RhdGlj
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworI3VuZGVmIHZlcmJvc2UKKyNkZWZpbmUgdmVyYm9zZSBm
YWxzZQorCiAKIGNsYXNzIEFycmF5UHJvdG90eXBlQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5V2F0
Y2hwb2ludCA6IHB1YmxpYyBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRC
YXNlIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAppbmRl
eCAyYmNkZjE1Njc3OS4uOGIzODUzNzMzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvci5jcHAKQEAgLTEyNSw5ICsxMjUsOSBAQCBKU09iamVjdCogY3JlYXRlRXJyb3IoRXhl
Y1N0YXRlKiBleGVjLCBFcnJvclR5cGUgZXJyb3JUeXBlLCBjb25zdCBTdHJpbmcmIG1lc3NhZwog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi1jbGFzcyBGaW5kRmlyc3RDYWxsZXJGcmFtZVdpdGhD
b2RlYmxvY2tGdW5jdG9yIHsKK2NsYXNzIEZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9j
a0Z1bmN0b3JFcnJvciB7CiBwdWJsaWM6Ci0gICAgRmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29k
ZWJsb2NrRnVuY3RvcihDYWxsRnJhbWUqIHN0YXJ0Q2FsbEZyYW1lKQorICAgIEZpbmRGaXJzdENh
bGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3JFcnJvcihDYWxsRnJhbWUqIHN0YXJ0Q2FsbEZy
YW1lKQogICAgICAgICA6IG1fc3RhcnRDYWxsRnJhbWUoc3RhcnRDYWxsRnJhbWUpCiAgICAgICAg
ICwgbV9mb3VuZENhbGxGcmFtZShudWxscHRyKQogICAgICAgICAsIG1fZm91bmRTdGFydENhbGxG
cmFtZShmYWxzZSkKQEAgLTE4Miw3ICsxODIsNyBAQCBib29sIGFkZEVycm9ySW5mb0FuZEdldEJ5
dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBKU09iamVjdCogb2JqLCBibwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0KSB7Ci0gICAgICAgICAgICBG
aW5kRmlyc3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yIGZ1bmN0b3IoZXhlYyk7Cisg
ICAgICAgICAgICBGaW5kRmlyc3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yRXJyb3Ig
ZnVuY3RvcihleGVjKTsKICAgICAgICAgICAgIFN0YWNrVmlzaXRvcjo6dmlzaXQodm0udG9wQ2Fs
bEZyYW1lLCAmdm0sIGZ1bmN0b3IpOwogICAgICAgICAgICAgY2FsbEZyYW1lID0gZnVuY3Rvci5m
b3VuZENhbGxGcmFtZSgpOwogICAgICAgICAgICAgdW5zaWduZWQgc3RhY2tJbmRleCA9IGZ1bmN0
b3IuaW5kZXgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxDb2xsYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0
b3IuY3BwCmluZGV4IDdjYmU1NGVmZDAyLi4zY2ViMTQ5ZDkxYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCkBAIC00Niw3ICs0Niw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gSW50bENvbGxhdG9yOjpzX2luZm8gPSB7
ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEludGxDb2xsYXRvcikgfTsKIAotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHJlbGV2
YW50RXh0ZW5zaW9uS2V5c1szXSA9IHsgImNvIiwgImtuIiwgImtmIiB9Oworc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IHJlbGV2YW50RXh0ZW5zaW9uS2V5c0NvbGxhdG9yWzNdID0geyAiY28iLCAi
a24iLCAia2YiIH07CiBzdGF0aWMgY29uc3Qgc2l6ZV90IGluZGV4T2ZFeHRlbnNpb25LZXlDbyA9
IDA7CiBzdGF0aWMgY29uc3Qgc2l6ZV90IGluZGV4T2ZFeHRlbnNpb25LZXlLbiA9IDE7CiBzdGF0
aWMgY29uc3Qgc2l6ZV90IGluZGV4T2ZFeHRlbnNpb25LZXlLZiA9IDI7CkBAIC0yNTcsMTAgKzI1
NywxMCBAQCB2b2lkIEludGxDb2xsYXRvcjo6aW5pdGlhbGl6ZUNvbGxhdG9yKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgbG9jYWxlcywgSlNWYWx1ZQogICAgICAgICBvcHQuYWRkKEFTQ0lJTGl0
ZXJhbCgia2YiKSwgY2FzZUZpcnN0KTsKICAgICB9CiAKLSAgICAvLyAxNy4gTGV0IHJlbGV2YW50
RXh0ZW5zaW9uS2V5cyBiZSB0aGUgdmFsdWUgb2YgJUNvbGxhdG9yJS5bW3JlbGV2YW50RXh0ZW5z
aW9uS2V5c11dLgotICAgIC8vIDE4LiBMZXQgciBiZSBSZXNvbHZlTG9jYWxlKCVDb2xsYXRvciUu
W1thdmFpbGFibGVMb2NhbGVzXV0sIHJlcXVlc3RlZExvY2FsZXMsIG9wdCwgcmVsZXZhbnRFeHRl
bnNpb25LZXlzLCBsb2NhbGVEYXRhKS4KKyAgICAvLyAxNy4gTGV0IHJlbGV2YW50RXh0ZW5zaW9u
S2V5c0NvbGxhdG9yIGJlIHRoZSB2YWx1ZSBvZiAlQ29sbGF0b3IlLltbcmVsZXZhbnRFeHRlbnNp
b25LZXlzQ29sbGF0b3JdXS4KKyAgICAvLyAxOC4gTGV0IHIgYmUgUmVzb2x2ZUxvY2FsZSglQ29s
bGF0b3IlLltbYXZhaWxhYmxlTG9jYWxlc11dLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHQsIHJlbGV2
YW50RXh0ZW5zaW9uS2V5c0NvbGxhdG9yLCBsb2NhbGVEYXRhKS4KICAgICBhdXRvJiBhdmFpbGFi
bGVMb2NhbGVzID0gc3RhdGUuanNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPmludGxDb2xsYXRv
ckF2YWlsYWJsZUxvY2FsZXMoKTsKLSAgICBhdXRvIHJlc3VsdCA9IHJlc29sdmVMb2NhbGUoc3Rh
dGUsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIG9wdCwgcmVsZXZhbnRFeHRl
bnNpb25LZXlzLCBXVEZfQVJSQVlfTEVOR1RIKHJlbGV2YW50RXh0ZW5zaW9uS2V5cyksIGxvY2Fs
ZURhdGEpOworICAgIGF1dG8gcmVzdWx0ID0gcmVzb2x2ZUxvY2FsZShzdGF0ZSwgYXZhaWxhYmxl
TG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0LCByZWxldmFudEV4dGVuc2lvbktleXNDb2xs
YXRvciwgV1RGX0FSUkFZX0xFTkdUSChyZWxldmFudEV4dGVuc2lvbktleXNDb2xsYXRvciksIGxv
Y2FsZURhdGEpOwogCiAgICAgLy8gMTkuIFNldCBjb2xsYXRvci5bW2xvY2FsZV1dIHRvIHRoZSB2
YWx1ZSBvZiByLltbbG9jYWxlXV0uCiAgICAgbV9sb2NhbGUgPSByZXN1bHQuZ2V0KEFTQ0lJTGl0
ZXJhbCgibG9jYWxlIikpOwpAQCAtMjcwLDExICsyNzAsMTEgQEAgdm9pZCBJbnRsQ29sbGF0b3I6
OmluaXRpYWxpemVDb2xsYXRvcihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIGxvY2FsZXMsIEpT
VmFsdWUKICAgICB9CiAKICAgICAvLyAyMC4gTGV0IGsgYmUgMC4KLSAgICAvLyAyMS4gTGV0IGxl
blZhbHVlIGJlIEdldChyZWxldmFudEV4dGVuc2lvbktleXMsICJsZW5ndGgiKS4KKyAgICAvLyAy
MS4gTGV0IGxlblZhbHVlIGJlIEdldChyZWxldmFudEV4dGVuc2lvbktleXNDb2xsYXRvciwgImxl
bmd0aCIpLgogICAgIC8vIDIyLiBMZXQgbGVuIGJlIFRvTGVuZ3RoKGxlblZhbHVlKS4KICAgICAv
LyAyMy4gUmVwZWF0IHdoaWxlIGsgPCBsZW46CiAgICAgLy8gYS4gTGV0IFBrIGJlIFRvU3RyaW5n
KGspLgotICAgIC8vIGIuIExldCBrZXkgYmUgR2V0KHJlbGV2YW50RXh0ZW5zaW9uS2V5cywgUGsp
LgorICAgIC8vIGIuIExldCBrZXkgYmUgR2V0KHJlbGV2YW50RXh0ZW5zaW9uS2V5c0NvbGxhdG9y
LCBQaykuCiAgICAgLy8gYy4gUmV0dXJuSWZBYnJ1cHQoa2V5KS4KICAgICAvLyBkLiBJZiBrZXkg
aXMgImNvIiwgdGhlbgogICAgIC8vICAgIGkuIExldCBwcm9wZXJ0eSBiZSAiY29sbGF0aW9uIi4K
QEAgLTQ3MCw3ICs0NzAsNyBAQCBKU09iamVjdCogSW50bENvbGxhdG9yOjpyZXNvbHZlZE9wdGlv
bnMoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAvLyBjb25zdHJ1Y3RlZCBieSBhbiBvYmplY3QgbGl0
ZXJhbCBhc3NpZ25pbmcgdG8gZWFjaCBvZiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgdGhlCiAg
ICAgLy8gdmFsdWUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJuYWwgc2xvdCBvZiB0aGlzIENv
bGxhdG9yIG9iamVjdCAoc2VlIDEwLjQpOiBsb2NhbGUsCiAgICAgLy8gdXNhZ2UsIHNlbnNpdGl2
aXR5LCBpZ25vcmVQdW5jdHVhdGlvbiwgY29sbGF0aW9uLCBhcyB3ZWxsIGFzIHRob3NlIHByb3Bl
cnRpZXMgc2hvd24KLSAgICAvLyBpbiBUYWJsZSAxIHdob3NlIGtleXMgYXJlIGluY2x1ZGVkIGlu
IHRoZSAlQ29sbGF0b3IlW1tyZWxldmFudEV4dGVuc2lvbktleXNdXQorICAgIC8vIGluIFRhYmxl
IDEgd2hvc2Uga2V5cyBhcmUgaW5jbHVkZWQgaW4gdGhlICVDb2xsYXRvciVbW3JlbGV2YW50RXh0
ZW5zaW9uS2V5c0NvbGxhdG9yXV0KICAgICAvLyBpbnRlcm5hbCBzbG90IG9mIHRoZSBzdGFuZGFy
ZCBidWlsdC1pbiBvYmplY3QgdGhhdCBpcyB0aGUgaW5pdGlhbCB2YWx1ZSBvZgogICAgIC8vIElu
dGwuQ29sbGF0b3IuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXQuY3BwCmluZGV4IGRjZTFkYWY5MmQ5Li45YzY3ZTQ2OWNjYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0lu
Zm8gSW50bERhdGVUaW1lRm9ybWF0OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxEYXRlVGltZUZvcm1h
dCkgfTsKIAotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHJlbGV2YW50RXh0ZW5zaW9uS2V5c1sy
XSA9IHsgImNhIiwgIm51IiB9Oworc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHJlbGV2YW50RXh0
ZW5zaW9uS2V5c0RURlsyXSA9IHsgImNhIiwgIm51IiB9Owogc3RhdGljIGNvbnN0IHNpemVfdCBp
bmRleE9mRXh0ZW5zaW9uS2V5Q2EgPSAwOwogc3RhdGljIGNvbnN0IHNpemVfdCBpbmRleE9mRXh0
ZW5zaW9uS2V5TnUgPSAxOwogCkBAIC0xODksNyArMTg5LDcgQEAgc3RhdGljIFN0cmluZyBjYW5v
bmljYWxpemVUaW1lWm9uZU5hbWUoY29uc3QgU3RyaW5nJiB0aW1lWm9uZU5hbWUpCiAgICAgcmV0
dXJuIGNhbm9uaWNhbDsKIH0KIAotc3RhdGljIFZlY3RvcjxTdHJpbmc+IGxvY2FsZURhdGEoY29u
c3QgU3RyaW5nJiBsb2NhbGUsIHNpemVfdCBrZXlJbmRleCkKK3N0YXRpYyBWZWN0b3I8U3RyaW5n
PiBsb2NhbGVEYXRhRFRGKGNvbnN0IFN0cmluZyYgbG9jYWxlLCBzaXplX3Qga2V5SW5kZXgpCiB7
CiAgICAgVmVjdG9yPFN0cmluZz4ga2V5TG9jYWxlRGF0YTsKICAgICBzd2l0Y2ggKGtleUluZGV4
KSB7CkBAIC00NDgsOSArNDQ4LDkgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxp
emVEYXRlVGltZUZvcm1hdChFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUgbG9jYWwKICAgICBsb2Nh
bGVPcHQuYWRkKHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZU1hdGNoZXIuc3RyaW5nKCksIGxvY2Fs
ZU1hdGNoZXIpOwogCiAgICAgLy8gMTEuIExldCBsb2NhbGVEYXRhIGJlIHRoZSB2YWx1ZSBvZiAl
RGF0ZVRpbWVGb3JtYXQlLltbbG9jYWxlRGF0YV1dLgotICAgIC8vIDEyLiBMZXQgciBiZSBSZXNv
bHZlTG9jYWxlKCAlRGF0ZVRpbWVGb3JtYXQlLltbYXZhaWxhYmxlTG9jYWxlc11dLCByZXF1ZXN0
ZWRMb2NhbGVzLCBvcHQsICVEYXRlVGltZUZvcm1hdCUuW1tyZWxldmFudEV4dGVuc2lvbktleXNd
XSwgbG9jYWxlRGF0YSkuCisgICAgLy8gMTIuIExldCByIGJlIFJlc29sdmVMb2NhbGUoICVEYXRl
VGltZUZvcm1hdCUuW1thdmFpbGFibGVMb2NhbGVzXV0sIHJlcXVlc3RlZExvY2FsZXMsIG9wdCwg
JURhdGVUaW1lRm9ybWF0JS5bW3JlbGV2YW50RXh0ZW5zaW9uS2V5c0RURl1dLCBsb2NhbGVEYXRh
KS4KICAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4gYXZhaWxhYmxlTG9jYWxlcyA9IGV4ZWMuanND
YWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPmludGxEYXRlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2Fs
ZXMoKTsKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiByZXNvbHZlZCA9IHJlc29sdmVMb2Nh
bGUoZXhlYywgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgbG9jYWxlT3B0LCBy
ZWxldmFudEV4dGVuc2lvbktleXMsIFdURl9BUlJBWV9MRU5HVEgocmVsZXZhbnRFeHRlbnNpb25L
ZXlzKSwgbG9jYWxlRGF0YSk7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcmVzb2x2ZWQg
PSByZXNvbHZlTG9jYWxlKGV4ZWMsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMs
IGxvY2FsZU9wdCwgcmVsZXZhbnRFeHRlbnNpb25LZXlzRFRGLCBXVEZfQVJSQVlfTEVOR1RIKHJl
bGV2YW50RXh0ZW5zaW9uS2V5c0RURiksIGxvY2FsZURhdGFEVEYpOwogCiAgICAgLy8gMTMuIFNl
dCBkYXRlVGltZUZvcm1hdC5bW2xvY2FsZV1dIHRvIHRoZSB2YWx1ZSBvZiByLltbbG9jYWxlXV0u
CiAgICAgbV9sb2NhbGUgPSByZXNvbHZlZC5nZXQodm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLnN0
cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdC5jcHAKaW5kZXggMjI0NzQ3OWJhNDQuLjdhNDU1ZmQ5ZWI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtODgs
NyArODgsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX2JvdW5kRm9ybWF0KTsKIH0KIAotc3RhdGljIFZlY3RvcjxTdHJpbmc+IGxvY2FsZURhdGEo
Y29uc3QgU3RyaW5nJiBsb2NhbGUsIHNpemVfdCBrZXlJbmRleCkKK3N0YXRpYyBWZWN0b3I8U3Ry
aW5nPiBsb2NhbGVEYXRhTkYoY29uc3QgU3RyaW5nJiBsb2NhbGUsIHNpemVfdCBrZXlJbmRleCkK
IHsKICAgICAvLyA5LjEgSW50ZXJuYWwgc2xvdHMgb2YgU2VydmljZSBDb25zdHJ1Y3RvcnMgJiAx
MS4yLjMgSW50ZXJuYWwgc2xvdHMgKEVDTUEtNDAyIDIuMCkKICAgICBBU1NFUlRfVU5VU0VEKGtl
eUluZGV4LCAha2V5SW5kZXgpOyAvLyBUaGUgaW5kZXggb2YgdGhlIGV4dGVuc2lvbiBrZXkgIm51
IiBpbiByZWxldmFudEV4dGVuc2lvbktleXMgaXMgMC4KQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lk
IEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoRXhlY1N0YXRlJiBzdGF0
ZSwgSlNWYWx1ZSBsb2NhbGVzLAogICAgIC8vIDExLiBMZXQgbG9jYWxlRGF0YSBiZSAlTnVtYmVy
Rm9ybWF0JS5bW2xvY2FsZURhdGFdXS4KICAgICAvLyAxMi4gTGV0IHIgYmUgUmVzb2x2ZUxvY2Fs
ZSglTnVtYmVyRm9ybWF0JS5bW2F2YWlsYWJsZUxvY2FsZXNdXSwgcmVxdWVzdGVkTG9jYWxlcywg
b3B0LCAlTnVtYmVyRm9ybWF0JS5bW3JlbGV2YW50RXh0ZW5zaW9uS2V5c11dLCBsb2NhbGVEYXRh
KS4KICAgICBhdXRvJiBhdmFpbGFibGVMb2NhbGVzID0gc3RhdGUuanNDYWxsZWUoKS0+Z2xvYmFs
T2JqZWN0KCktPmludGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCk7Ci0gICAgYXV0byBy
ZXN1bHQgPSByZXNvbHZlTG9jYWxlKHN0YXRlLCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRM
b2NhbGVzLCBvcHQsIHJlbGV2YW50RXh0ZW5zaW9uS2V5cywgV1RGX0FSUkFZX0xFTkdUSChyZWxl
dmFudEV4dGVuc2lvbktleXMpLCBsb2NhbGVEYXRhKTsKKyAgICBhdXRvIHJlc3VsdCA9IHJlc29s
dmVMb2NhbGUoc3RhdGUsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIG9wdCwg
cmVsZXZhbnRFeHRlbnNpb25LZXlzLCBXVEZfQVJSQVlfTEVOR1RIKHJlbGV2YW50RXh0ZW5zaW9u
S2V5cyksIGxvY2FsZURhdGFORik7CiAKICAgICAvLyAxMy4gU2V0IG51bWJlckZvcm1hdC5bW2xv
Y2FsZV1dIHRvIHRoZSB2YWx1ZSBvZiByLltbbG9jYWxlXV0uCiAgICAgbV9sb2NhbGUgPSByZXN1
bHQuZ2V0KEFTQ0lJTGl0ZXJhbCgibG9jYWxlIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3RTdWJzcGFjZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdFN1YnNwYWNlLmNw
cAppbmRleCAwMjNjNjAwMjhmMi4uMzAzNmY2YzdmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0U3Vic3BhY2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0U3Vic3Bh
Y2UuY3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2Ugewog
Ci1zdHJ1Y3QgRGVzdHJveUZ1bmMgeworc3RydWN0IERlc3Ryb3lGdW5jRGVzdHJ1Y3RpYmxlT2Jq
ZWN0U3Vic3BhY2UgIHsKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgb3BlcmF0b3IoKShWTSYsIEpT
Q2VsbCogY2VsbCkgY29uc3QKICAgICB7CiAgICAgICAgIHN0YXRpY19jYXN0PEpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0Kj4oY2VsbCktPmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZS5kZXN0cm95KGNlbGwp
OwpAQCAtNTQsMTIgKzU0LDEyIEBAIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0U3Vic3BhY2U6On5KU0Rl
c3RydWN0aWJsZU9iamVjdFN1YnNwYWNlKCkKIAogdm9pZCBKU0Rlc3RydWN0aWJsZU9iamVjdFN1
YnNwYWNlOjpmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiBoYW5kbGUsIEZyZWVMaXN0
KiBmcmVlTGlzdCkKIHsKLSAgICBoYW5kbGUuZmluaXNoU3dlZXBLbm93aW5nU3Vic3BhY2UoZnJl
ZUxpc3QsIERlc3Ryb3lGdW5jKCkpOworICAgIGhhbmRsZS5maW5pc2hTd2VlcEtub3dpbmdTdWJz
cGFjZShmcmVlTGlzdCwgRGVzdHJveUZ1bmNEZXN0cnVjdGlibGVPYmplY3RTdWJzcGFjZSAoKSk7
CiB9CiAKIHZvaWQgSlNEZXN0cnVjdGlibGVPYmplY3RTdWJzcGFjZTo6ZGVzdHJveShWTSYgdm0s
IEpTQ2VsbCogY2VsbCkKIHsKLSAgICBEZXN0cm95RnVuYygpKHZtLCBjZWxsKTsKKyAgICBEZXN0
cm95RnVuY0Rlc3RydWN0aWJsZU9iamVjdFN1YnNwYWNlICgpKHZtLCBjZWxsKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3Vic3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdFN1YnNwYWNlLmNwcAppbmRl
eCAwYWYyMGJhODYyMS4uMGQzZTUxY2Y3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3RTdWJzcGFjZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdFN1
YnNwYWNlLmNwcApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNl
IHsKIAotc3RydWN0IERlc3Ryb3lGdW5jIHsKK3N0cnVjdCBEZXN0cm95RnVuY1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0U3Vic3BhY2UgIHsKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgb3BlcmF0b3Io
KShWTSYsIEpTQ2VsbCogY2VsbCkgY29uc3QKICAgICB7CiAgICAgICAgIHN0YXRpY19jYXN0PEpT
U2VnbWVudGVkVmFyaWFibGVPYmplY3QqPihjZWxsKS0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxl
LmRlc3Ryb3koY2VsbCk7CkBAIC01NCwxMiArNTQsMTIgQEAgSlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdFN1YnNwYWNlOjp+SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdFN1YnNwYWNlKCkKIAogdm9p
ZCBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3Vic3BhY2U6OmZpbmlzaFN3ZWVwKE1hcmtlZEJs
b2NrOjpIYW5kbGUmIGhhbmRsZSwgRnJlZUxpc3QqIGZyZWVMaXN0KQogewotICAgIGhhbmRsZS5m
aW5pc2hTd2VlcEtub3dpbmdTdWJzcGFjZShmcmVlTGlzdCwgRGVzdHJveUZ1bmMoKSk7CisgICAg
aGFuZGxlLmZpbmlzaFN3ZWVwS25vd2luZ1N1YnNwYWNlKGZyZWVMaXN0LCBEZXN0cm95RnVuY1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0U3Vic3BhY2UgKCkpOwogfQogCiB2b2lkIEpTU2VnbWVudGVk
VmFyaWFibGVPYmplY3RTdWJzcGFjZTo6ZGVzdHJveShWTSYgdm0sIEpTQ2VsbCogY2VsbCkKIHsK
LSAgICBEZXN0cm95RnVuYygpKHZtLCBjZWxsKTsKKyAgICBEZXN0cm95RnVuY1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0U3Vic3BhY2UgKCkodm0sIGNlbGwpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nU3Vi
c3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdTdWJzcGFj
ZS5jcHAKaW5kZXggOWIxMzhkNjg0ZWYuLmUxMDZmYzllMjNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ1N1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ1N1YnNwYWNlLmNwcApAQCAtMzQsNyArMzQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIHsKIAotc3RydWN0IERlc3Ryb3lGdW5j
IHsKK3N0cnVjdCBEZXN0cm95RnVuY0pTT2JqZWN0U3Vic3BhY2UgIHsKICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgb3BlcmF0b3IoKShWTSYsIEpTQ2VsbCogY2VsbCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oY2VsbCktPkpTU3RyaW5nOjp+SlNTdHJpbmcoKTsK
QEAgLTU0LDEyICs1NCwxMiBAQCBKU1N0cmluZ1N1YnNwYWNlOjp+SlNTdHJpbmdTdWJzcGFjZSgp
CiAKIHZvaWQgSlNTdHJpbmdTdWJzcGFjZTo6ZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRs
ZSYgaGFuZGxlLCBGcmVlTGlzdCogZnJlZUxpc3QpCiB7Ci0gICAgaGFuZGxlLmZpbmlzaFN3ZWVw
S25vd2luZ1N1YnNwYWNlKGZyZWVMaXN0LCBEZXN0cm95RnVuYygpKTsKKyAgICBoYW5kbGUuZmlu
aXNoU3dlZXBLbm93aW5nU3Vic3BhY2UoZnJlZUxpc3QsIERlc3Ryb3lGdW5jSlNPYmplY3RTdWJz
cGFjZSAoKSk7CiB9CiAKIHZvaWQgSlNTdHJpbmdTdWJzcGFjZTo6ZGVzdHJveShWTSYgdm0sIEpT
Q2VsbCogY2VsbCkKIHsKLSAgICBEZXN0cm95RnVuYygpKHZtLCBjZWxsKTsKKyAgICBEZXN0cm95
RnVuY0pTT2JqZWN0U3Vic3BhY2UgKCkodm0sIGNlbGwpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxHZXR0ZXJG
dW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsR2V0dGVyRnVu
Y3Rpb24uY3BwCmluZGV4IDNmNmYyODIxNTNlLi40ODg0YWE4YTFjYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbEdldHRlckZ1bmN0aW9uLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsR2V0dGVyRnVuY3Rpb24uY3BwCkBAIC0z
MywxNCArMzMsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBOdWxsR2V0
dGVyRnVuY3Rpb246OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShOdWxsR2V0dGVyRnVuY3Rpb24pIH07CiAK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZXR1cm5VbmRlZmluZWQo
RXhlY1N0YXRlKikKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZXR1
cm5VbmRlZmluZWRHZXR0ZXIoRXhlY1N0YXRlKikKIHsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCiBDYWxsVHlwZSBOdWxsR2V0dGVyRnVuY3Rpb246Omdl
dENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKLSAgICBjYWxsRGF0YS5u
YXRpdmUuZnVuY3Rpb24gPSBjYWxsUmV0dXJuVW5kZWZpbmVkOworICAgIGNhbGxEYXRhLm5hdGl2
ZS5mdW5jdGlvbiA9IGNhbGxSZXR1cm5VbmRlZmluZWRHZXR0ZXI7CiAgICAgcmV0dXJuIENhbGxU
eXBlOjpIb3N0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TnVsbFNldHRlckZ1bmN0aW9uLmNwcAppbmRleCA1MGM1YjgwZGNmOS4uNTkzMmY2OGQ0ODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0
aW9uLmNwcApAQCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgYm9vbCBjYWxsZXJJc1N0cmljdChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIGl0ZXIuY2FsbGVySXNTdHJpY3QoKTsKIH0KIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJldHVyblVuZGVmaW5lZChFeGVj
U3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUmV0
dXJuVW5kZWZpbmVkU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTgy
LDcgKzgyLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJldHVy
blVuZGVmaW5lZChFeGVjU3RhdGUqIGV4ZWMpCiAKIENhbGxUeXBlIE51bGxTZXR0ZXJGdW5jdGlv
bjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogewotICAgIGNhbGxE
YXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxSZXR1cm5VbmRlZmluZWQ7CisgICAgY2FsbERhdGEu
bmF0aXZlLmZ1bmN0aW9uID0gY2FsbFJldHVyblVuZGVmaW5lZFNldHRlcjsKICAgICByZXR1cm4g
Q2FsbFR5cGU6Okhvc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcAppbmRleCAzZGNhZWFhZmU1Yi4uNTNiNGUw
MzEwM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VE
ZWZlcnJlZFRpbWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9t
aXNlRGVmZXJyZWRUaW1lci5jcHAKQEAgLTM0LDcgKzM0LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLXN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKyN1bmRlZiB2ZXJib3NlCisj
ZGVmaW5lIHZlcmJvc2UgZmFsc2UKKwogCiBQcm9taXNlRGVmZXJyZWRUaW1lcjo6UHJvbWlzZURl
ZmVycmVkVGltZXIoVk0mIHZtKQogICAgIDogQmFzZSgmdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcAppbmRleCBlMzE1YzQxMmI5My4uZTBmZDEx
YTMxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9m
aWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVy
LmNwcApAQCAtMzIsNyArMzIsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIGNvbnN0
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworI3VuZGVmIHZlcmJvc2UKKyNkZWZpbmUgdmVyYm9zZSBm
YWxzZQorCiAKIFR5cGVQcm9maWxlcjo6VHlwZVByb2ZpbGVyKCkKICAgICA6IG1fbmV4dFVuaXF1
ZVZhcmlhYmxlSUQoMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVQcm9maWxlckxvZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBl
UHJvZmlsZXJMb2cuY3BwCmluZGV4IDg1YzQ5ZDA0NmJhLi5jZGM1N2E0ODcwNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwCkBAIC0z
Nyw3ICszNyw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgY29uc3QgYm9vbCB2ZXJi
b3NlID0gZmFsc2U7CisjdW5kZWYgdmVyYm9zZQorI2RlZmluZSB2ZXJib3NlIGZhbHNlCisKIAog
dm9pZCBUeXBlUHJvZmlsZXJMb2c6OmluaXRpYWxpemVMb2coKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNwcAppbmRleCA1NDI2ZDk4ZGU2Ni4uNzg4OTk0
NDI4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZp
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuY3Bw
CkBAIC00MDksNyArNDA5LDggQEAgdm9pZCBIZWFwVmVyaWZpZXI6OmNoZWNrSWZSZWNvcmRlZChI
ZWFwQ2VsbCogY2VsbCkKIHsKICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAgY29uc3QgY2hh
ciogY29uc3QgcHJlZml4ID0gIiAgIjsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0g
dHJ1ZTsKKyN1bmRlZiB2ZXJib3NlCisjZGVmaW5lIHZlcmJvc2UgZmFsc2UKIAogICAgIGZvciAo
aW50IGN5Y2xlSW5kZXggPSAwOyBjeWNsZUluZGV4ID4gLW1fbnVtYmVyT2ZDeWNsZXM7IGN5Y2xl
SW5kZXgtLSkgewogICAgICAgICBHQ0N5Y2xlJiBjeWNsZSA9IGN5Y2xlRm9ySW5kZXgoY3ljbGVJ
bmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdl
bmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRv
ci5jcHAKaW5kZXggNzZkYzRhNDk5YTMuLmU1ODY4NTRjOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC03Niw3ICs3Niw5IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiB1c2luZyBuYW1lc3BhY2UgQjM7CiAK
IG5hbWVzcGFjZSB7Ci1jb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKyN1bmRlZiB2ZXJib3Nl
CisjZGVmaW5lIHZlcmJvc2UgZmFsc2UKKwogfQogCiBjbGFzcyBCM0lSR2VuZXJhdG9yIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAppbmRleCA1MGZlYjczMGIw
MC4uOTM4OTIwZjIzNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CQlFQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxh
bi5jcHAKQEAgLTQ5LDcgKzQ5LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNt
IHsKIAotc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworI3VuZGVmIHZlcmJvc2UK
KyNkZWZpbmUgdmVyYm9zZSBmYWxzZQorCiAKIEJCUVBsYW46OkJCUVBsYW4oVk0qIHZtLCBSZWY8
TW9kdWxlSW5mb3JtYXRpb24+IGluZm8sIEFzeW5jV29yayB3b3JrLCBDb21wbGV0aW9uVGFzayYm
IHRhc2spCiAgICAgOiBCYXNlKHZtLCBXVEZNb3ZlKGluZm8pLCBXVEZNb3ZlKHRhc2spKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVy
LmNwcAppbmRleCBlODZmZDQ3OTkwZS4uNzJlYjg0NGZmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCkBAIC00Miw3
ICs0Miw5IEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCiBuYW1lc3BhY2Ug
ewotc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworI3VuZGVmIHZlcmJvc2UKKyNk
ZWZpbmUgdmVyYm9zZSBmYWxzZQorCiB9CiAKIHN0YXRpYyBTdGF0aWNMb2NrIGNvZGVMb2NhdGlv
bnNMb2NrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0
aW9uUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJz
ZXIuaAppbmRleCBkOGQxZGVkMzIwMy4uMzdkZmQ2ODUxZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCkBAIC01OSw3ICs1OSw5IEBAIHB1
YmxpYzoKICAgICBzaXplX3QgY3VycmVudE9wY29kZVN0YXJ0aW5nT2Zmc2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9jdXJyZW50T3Bjb2RlU3RhcnRpbmdPZmZzZXQ7IH0KIAogcHJpdmF0ZToKLSAgICBz
dGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CisgICAgI3VuZGVmIHZlcmJvc2UKKyNk
ZWZpbmUgdmVyYm9zZSBmYWxzZQorCiAKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBwYXJzZUJvZHkoKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBw
YXJzZUV4cHJlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21NZW1vcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5j
cHAKaW5kZXggMmQzNmU4MGNkM2IuLjMwYmRiMjIyZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtTWVtb3J5LmNwcApAQCAtNDUsNyArNDUsOCBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIFdhc20gewogLy8gRklYTUU6IExpbWl0IHNsb3cgbWVtb3J5IHNpemUuIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA4MjUKIAogbmFtZXNwYWNlIHsK
LWNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKKyN1bmRlZiB2ZXJib3NlCisjZGVmaW5l
IHZlcmJvc2UgZmFsc2UKIAogTkVWRVJfSU5MSU5FIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9p
ZCB3ZWJBc3NlbWJseUNvdWxkbnRHZXRGYXN0TWVtb3J5KCkgeyBDUkFTSCgpOyB9CiBORVZFUl9J
TkxJTkUgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIHdlYkFzc2VtYmx5Q291bGRudFVubWFw
TWVtb3J5KCkgeyBDUkFTSCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtT01HUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01H
UGxhbi5jcHAKaW5kZXggOTU3NmM5OGY2NmUuLjcwMTViMzAxMGMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCkBAIC00OCw3ICs0OCw5IEBACiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKLXN0YXRpYyBjb25zdCBib29sIHZlcmJvc2Ug
PSBmYWxzZTsKKyN1bmRlZiB2ZXJib3NlCisjZGVmaW5lIHZlcmJvc2UgZmFsc2UKKwogCiBPTUdQ
bGFuOjpPTUdQbGFuKFJlZjxNb2R1bGU+IG1vZHVsZSwgdWludDMyX3QgZnVuY3Rpb25JbmRleCwg
TWVtb3J5TW9kZSBtb2RlLCBDb21wbGV0aW9uVGFzayYmIHRhc2spCiAgICAgOiBCYXNlKG51bGxw
dHIsIG1ha2VSZWYoY29uc3RfY2FzdDxNb2R1bGVJbmZvcm1hdGlvbiY+KG1vZHVsZS0+bW9kdWxl
SW5mb3JtYXRpb24oKSkpLCBXVEZNb3ZlKHRhc2spKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVBsYW4uY3BwCmluZGV4IDAyMDJmYTJlZjZiLi44NzQ4MGQzODAwNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcApAQCAtNDgsNyArNDgsOSBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCi1zdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7CisjdW5kZWYgdmVyYm9zZQorI2RlZmluZSB2ZXJib3NlIGZhbHNlCisKIAogUGxhbjo6
UGxhbihWTSogdm0sIFJlZjxNb2R1bGVJbmZvcm1hdGlvbj4gaW5mbywgQ29tcGxldGlvblRhc2sm
JiB0YXNrKQogICAgIDogbV9tb2R1bGVJbmZvcm1hdGlvbihXVEZNb3ZlKGluZm8pKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAppbmRleCBiMjI5OGQ2NWNi
YS4uNjNiNmUwMzlmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21TaWduYXR1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWdu
YXR1cmUuY3BwCkBAIC0zNiw3ICszNiw5IEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdh
c20gewogCiBuYW1lc3BhY2UgewotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CisjdW5kZWYg
dmVyYm9zZQorI2RlZmluZSB2ZXJib3NlIGZhbHNlCisKIH0KIAogU3RyaW5nIFNpZ25hdHVyZTo6
dG9TdHJpbmcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVdvcmtsaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlz
dC5jcHAKaW5kZXggNzZhODdhYzFiNDcuLjliNzc5MGNlNjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKQEAgLTMzLDcgKzMzLDkgQEAKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAotc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9
IGZhbHNlOworI3VuZGVmIHZlcmJvc2UKKyNkZWZpbmUgdmVyYm9zZSBmYWxzZQorCiAKIGNvbnN0
IGNoYXIqIFdvcmtsaXN0Ojpwcmlvcml0eVN0cmluZyhQcmlvcml0eSBwcmlvcml0eSkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2Rl
QmxvY2tTdWJzcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFz
c2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UuY3BwCmluZGV4IDFhNDIzZDBlMzQzLi4zNjA0NzNlMjky
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eUNvZGVCbG9ja1N1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2UuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgewogCi1zdHJ1Y3QgRGVzdHJveUZ1bmMgeworc3Ry
dWN0IERlc3Ryb3lGdW5jV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZSAgewogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBvcGVyYXRvcigpKFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdAogICAgIHsK
ICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ZpbmFsPEpTV2ViQXNzZW1ibHlDb2RlQmxv
Y2s+Ojp2YWx1ZSwgIk90aGVyd2lzZSwgdGhpcyBjb2RlIHdvdWxkIG5vdCBiZSBjb3JyZWN0LiIp
OwpAQCAtNTgsMTIgKzU4LDEyIEBAIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZTo6fkpT
V2ViQXNzZW1ibHlDb2RlQmxvY2tTdWJzcGFjZSgpCiAKIHZvaWQgSlNXZWJBc3NlbWJseUNvZGVC
bG9ja1N1YnNwYWNlOjpmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiBoYW5kbGUsIEZy
ZWVMaXN0KiBmcmVlTGlzdCkKIHsKLSAgICBoYW5kbGUuZmluaXNoU3dlZXBLbm93aW5nU3Vic3Bh
Y2UoZnJlZUxpc3QsIERlc3Ryb3lGdW5jKCkpOworICAgIGhhbmRsZS5maW5pc2hTd2VlcEtub3dp
bmdTdWJzcGFjZShmcmVlTGlzdCwgRGVzdHJveUZ1bmNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNw
YWNlICgpKTsKIH0KIAogdm9pZCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrU3Vic3BhY2U6OmRlc3Ry
b3koVk0mIHZtLCBKU0NlbGwqIGNlbGwpCiB7Ci0gICAgRGVzdHJveUZ1bmMoKSh2bSwgY2VsbCk7
CisgICAgRGVzdHJveUZ1bmNXZWJBc3NlbWJseUNvZGVCbG9ja1N1YnNwYWNlICgpKHZtLCBjZWxs
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320438</attachid>
            <date>2017-09-11 10:03:59 -0700</date>
            <delta_ts>2017-09-11 10:29:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176076-20170911100249.patch</filename>
            <type>text/plain</type>
            <size>207108</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZTc0NjlmMTA3MThiMTAzNTBlODI5N2ZmZGY0NDgxZTFkODUyY2JhLi4wMzM1ZTU1NzIyZjJjYzll
MjE5NGYyNGNjYzA2MjEwNzFjNjEyNzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMjkgQEAKKzIwMTctMDktMTEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgRG8gdW5pZmllZCBzb3VyY2UgYnVpbGRzIGZvciBKU0MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjA3NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEpTQyBidWlsZHMgd2l0
aCBDTWFrZSBsb2NhbGx5LgorCisgICAgICAgIFRoaW5ncyB0byBkbzoKKworICAgICAgICBNYWtl
IHN1cmUgWGNvZGUgc3RpbGwgYnVpbGRzLgorICAgICAgICBNb3ZlIGJ1bmRsZXIgdG8gZ2VuZXJh
bCBzY3JpcHQuCisgICAgICAgIE1ha2UgZGVwZW5kZW5jaWVzIGFjdHVhbGx5IHdvcmsgaW4gQ01h
a2UuIENNYWtlIHNlZW1zIHRvLCByZWFzb25hYmx5LCB0aGluIHRoYXQgY3BwIGZpbGVzIGFyZSB0
aGVpciBvd24gdHJhbnNsYXRpb24gdW5pdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBiMy9CM0NoZWNrU3BlY2lhbC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpDaGVj
a1NwZWNpYWw6OmZvckVhY2hBcmcpOgorICAgICAgICAoSlNDOjpCMzo6Q2hlY2tTcGVjaWFsOjpn
ZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Om51bUIzQXJncyk6IERlbGV0ZWQuCisg
ICAgICAgICogYjMvQjNEdXBsaWNhdGVUYWlscy5jcHA6CisgICAgICAgICogYjMvQjNFbGltaW5h
dGVDb21tb25TdWJleHByZXNzaW9ucy5jcHA6CisgICAgICAgICogYjMvQjNGaXhTU0EuY3BwOgor
ICAgICAgICAoSlNDOjpCMzo6ZGVtb3RlVmFsdWVzKToKKyAgICAgICAgKiBiMy9CM0ZvbGRQYXRo
Q29uc3RhbnRzLmNwcDoKKyAgICAgICAgKiBiMy9CM0luZmVyU3dpdGNoZXMuY3BwOgorICAgICAg
ICAqIGIzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwOgorICAgICAgICAoKTog
RGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpMb3dlclRvQWlyOjpMb3dlclRvQWlyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6cnVuKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6c2hvdWxkQ29weVByb3BhZ2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OkFyZ1Byb21pc2UpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjpzd2FwKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6
b3BlcmF0b3I9KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
QXJnUHJvbWlzZTo6fkFyZ1Byb21pc2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjpzZXRUcmFwcyk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OnRtcCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6Om9wZXJhdG9yIGJvb2wg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQ
cm9taXNlOjpraW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6cGVlayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OmNvbnN1bWUpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjppbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dG1wKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dG1wUHJvbWlzZSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNhbkJlSW50ZXJuYWwpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpjb21taXRJbnRlcm5hbCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyb3NzZXNJbnRlcmZl
cmVuY2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzY2Fs
ZUZvclNobCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmVm
ZmVjdGl2ZUFkZHIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
OjphZGRyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJh
cHBpbmdJbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
bG9hZFByb21pc2VBbnlPcGNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpsb2FkUHJvbWlzZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okxvd2VyVG9BaXI6OmltbSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6OmJpdEltbSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OmJpdEltbTY0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fp
cjo6aW1tT3JUbXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
Ojp0cnlPcGNvZGVGb3JUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6b3Bjb2RlRm9yVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okxvd2VyVG9BaXI6OmFwcGVuZFVuT3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjpwcmVmZXJSaWdodEZvclJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZEJpbk9wKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kU2hpZnQpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0cnlBcHBlbmRTdG9yZVVuT3ApOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0cnlBcHBlbmRTdG9yZUJpbk9w
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRlU3Rv
cmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzdG9yZU9w
Y29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVu
ZFN0b3JlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bW92
ZUZvclR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpy
ZWxheGVkTW92ZUZvclR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpwcmludCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OmFwcGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OmFwcGVuZFRyYXBwaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJU
b0Fpcjo6ZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bmV3QmxvY2spOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzcGxpdEJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6ZW5zdXJlU3BlY2lhbCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmVuc3VyZUNoZWNrU3BlY2lhbCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmZpbGxTdGFja21hcCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZUdlbmVyaWNDb21w
YXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRl
QnJhbmNoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3Jl
YXRlQ29tcGFyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OmNyZWF0ZVNlbGVjdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OnRyeUFwcGVuZExlYSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6OmFwcGVuZFg4NkRpdik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6OmFwcGVuZFg4NlVEaXYpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjpsb2FkTGlua09wY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OnN0b3JlQ29uZE9wY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZENBUyk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFZvaWRBdG9taWMpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRHZW5lcmFsQXRvbWljKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG93ZXIpOiBEZWxldGVk
LgorICAgICAgICAqIGIzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwOgorICAgICAgICAoSlNDOjpC
Mzo6UGF0Y2hwb2ludFNwZWNpYWw6OmdlbmVyYXRlKToKKyAgICAgICAgKiBiMy9CM1JlZHVjZURv
dWJsZVRvRmxvYXQuY3BwOgorICAgICAgICAoSlNDOjpCMzo6cmVkdWNlRG91YmxlVG9GbG9hdCk6
CisgICAgICAgICogYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHA6CisgICAgICAgICogYjMvQjNTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMuY3BwOgorICAgICAgICAqIGIzL0IzU3RhY2ttYXBTcGVjaWFs
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlN0YWNrbWFwU3BlY2lhbDo6cmVwc0ltcGwpOgorICAg
ICAgICAoSlNDOjpCMzo6U3RhY2ttYXBTcGVjaWFsOjpyZXBGb3JBcmcpOgorICAgICAgICAqIGIz
L2Fpci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6YWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZyk6CisgICAgICAgICogYjMvYWly
L0FpckVtaXRTaHVmZmxlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6ZW1pdFNodWZmbGUp
OgorICAgICAgICAqIGIzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcDoKKyAgICAgICAgKiBi
My9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
bG93ZXJBZnRlclJlZ0FsbG9jKToKKyAgICAgICAgKiBiMy9haXIvQWlyU3RhY2tBbGxvY2F0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6YXR0ZW1wdEFzc2lnbm1lbnQpOgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjphc3NpZ24pOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVERkdTdGF0dXNlcyk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVt
aXRET01KSVRHZXR0ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0LmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6Cisg
ICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcyk6CisgICAgICAgIChKU0M6
OlBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Qcm9w
ZXJ0eUNvbmRpdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjppc1N0
aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCBjb25zdCk6CisgICAgICAg
ICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0Vs
aW1pbmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OkRlbGF5ZWRTZXRMb2NhbDo6RGVs
YXllZFNldExvY2FsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5p
bmdDb3N0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lubGluZUNhbGwp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBsYW5Mb2FkKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6c3RvcmUpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6bGlua0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bGlua0Js
b2Nrcyk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
SW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0
cmFjdFN0YXRlOjptZXJnZSk6CisgICAgICAgICogZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmlu
Z1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFz
ZTo6aGFuZGxlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRp
b25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR01vdkhpbnRSZW1vdmFsUGhhc2UuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHUGhhbnRvbUluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
UHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhh
c2UuY3BwOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXAuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OkFic3RyYWN0SGVhcDo6Y29tcHV0ZSk6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9z
aXRvcnk6OmRlY29yYXRlTWVtb3J5KToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5OjpkZWNvcmF0ZUNDYWxsUmVhZCk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVDQ2FsbFdyaXRlKToKKyAgICAgICAgKEpTQzo6RlRM
OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZVBhdGNocG9pbnRSZWFkKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZVBhdGNocG9pbnRX
cml0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3Jh
dGVGZW5jZVJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6
OmRlY29yYXRlRmVuY2VXcml0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVw
b3NpdG9yeTo6ZGVjb3JhdGVGZW5jZWRBY2Nlc3MpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3Ry
YWN0SGVhcFJlcG9zaXRvcnk6OmNvbXB1dGVSYW5nZXNBbmREZWNvcmF0ZUluc3RydWN0aW9ucyk6
CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgor
ICAgICAgICAqIGhlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwOgorICAgICAgICAoSlNDOjpN
YXJraW5nQ29uc3RyYWludFNldDo6YWRkKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9TaGFkb3dD
aGlja2VuLmNwcDoKKyAgICAgICAgKEpTQzo6U2hhZG93Q2hpY2tlbjo6dXBkYXRlKToKKyAgICAg
ICAgKiBqaXQvQmluYXJ5U3dpdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6QmluYXJ5U3dpdGNoOjpC
aW5hcnlTd2l0Y2gpOgorICAgICAgICAoSlNDOjpCaW5hcnlTd2l0Y2g6OmJ1aWxkKToKKyAgICAg
ICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6bG9h
ZFN0YXRzKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnNhdmVTdGF0cyk6CisgICAgICAg
ICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFycmF5UHJvdG90
eXBlOjp0cnlJbml0aWFsaXplU3BlY2llc1dhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBcnJh
eVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ6OmhhbmRsZUZpcmUp
OgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkZp
bmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3I6OkZpbmRGaXJzdENhbGxlckZy
YW1lV2l0aENvZGVibG9ja0Z1bmN0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGaW5kRmly
c3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjpvcGVyYXRvcigpKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2NrRnVuY3Rvcjo6
Zm91bmRDYWxsRnJhbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGaW5kRmlyc3RD
YWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjppbmRleCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJ
bnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCk6CisgICAgICAgICog
cnVudGltZS9Qcm9taXNlRGVmZXJyZWRUaW1lci5jcHA6CisgICAgICAgIChKU0M6OlByb21pc2VE
ZWZlcnJlZFRpbWVyOjpkb1dvcmspOgorICAgICAgICAoSlNDOjpQcm9taXNlRGVmZXJyZWRUaW1l
cjo6YWRkUGVuZGluZ1Byb21pc2UpOgorICAgICAgICAoSlNDOjpQcm9taXNlRGVmZXJyZWRUaW1l
cjo6Y2FuY2VsUGVuZGluZ1Byb21pc2UpOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVByb2ZpbGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVByb2ZpbGVyOjppbnNlcnROZXdMb2NhdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwOgorICAgICAgICAoSlNDOjpUeXBl
UHJvZmlsZXJMb2c6OnByb2Nlc3NMb2dFbnRyaWVzKToKKyAgICAgICAgKiBydW50aW1lL1dlYWtN
YXBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwRGVsZXRlKToK
KyAgICAgICAgKEpTQzo6cHJvdG9GdW5jV2Vha01hcEdldCk6CisgICAgICAgIChKU0M6OnByb3Rv
RnVuY1dlYWtNYXBIYXMpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwU2V0KToKKyAg
ICAgICAgKEpTQzo6Z2V0V2Vha01hcERhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
V2Vha1NldFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtTZXREZWxl
dGUpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrU2V0SGFzKToKKyAgICAgICAgKEpTQzo6
cHJvdG9GdW5jV2Vha1NldEFkZCk6CisgICAgICAgIChKU0M6OmdldFdlYWtNYXBEYXRhKTogRGVs
ZXRlZC4KKyAgICAgICAgKiB0ZXN0UmVnRXhwLmNwcDoKKyAgICAgICAgKHRlc3RPbmVSZWdFeHAp
OgorICAgICAgICAocnVuRnJvbUZpbGVzKToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlKToKKyAgICAgICAg
KiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6bW92
ZVRvU3RhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpwYXJzZUFuZFZhbGlkYXRl
TW9kdWxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6cHJlcGFyZSk6CisgICAgICAg
IChKU0M6Oldhc206OkJCUVBsYW46OmNvbXBpbGVGdW5jdGlvbnMpOgorICAgICAgICAoSlNDOjpX
YXNtOjpCQlFQbGFuOjpjb21wbGV0ZSk6CisgICAgICAgICogd2FzbS9XYXNtRmF1bHRTaWduYWxI
YW5kbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6dHJhcEhhbmRsZXIpOgorICAgICAgICAq
IHdhc20vV2FzbU9NR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjpPTUdQ
bGFuKToKKyAgICAgICAgKEpTQzo6V2FzbTo6T01HUGxhbjo6d29yayk6CisgICAgICAgICogd2Fz
bS9XYXNtUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlBsYW46OmZhaWwpOgorICAgICAg
ICAqIHdhc20vV2FzbVNpZ25hdHVyZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlNpZ25hdHVy
ZUluZm9ybWF0aW9uOjphZG9wdCk6CisgICAgICAgICogd2FzbS9XYXNtV29ya2xpc3QuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpXb3JrbGlzdDo6ZW5xdWV1ZSk6CisKIDIwMTctMDgtMjUgIERh
bmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIERlbWFyY2F0ZSBjb2Rl
IGFkZGVkIGR1ZSB0byBsYWNrIG9mIE5TRE1JIGZvciBhZ2dyZWdhdGVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE5OGY5MDRh
NzlhZTg1MzQyNjE1MzhmOGRlYWY0ZTU1YWJjNWU3MmMuLjk2NzJhZWQyMDVmOTk0YmEzZmEyMjA3
ZDZkN2Y2YzljNDNjZDRjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDktMTEgIEtlaXRo
IE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgRG8gdW5pZmllZCBz
b3VyY2UgYnVpbGRzIGZvciBKU0MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NjA3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuaDoKKwogMjAxNy0wOC0yNSAgRGFuaWVsIEJh
dGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgRGVtYXJjYXRlIGNvZGUgYWRkZWQg
ZHVlIHRvIGxhY2sgb2YgTlNETUkgZm9yIGFnZ3JlZ2F0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCA2ZDA4NTkxNTQwOTMyZTAxNzA2ZmRkZWUyNDQ2NmE4Zjc1ZTg3MTJl
Li5lNDVkNzM3N2U4YzBhMzk0NGJjNmU5Y2YzMzM3Yjk2NmU3Njc1ZDM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMDE3LDYgKzEwMTcsNzQgQEAgc2V0KEphdmFTY3Jp
cHRDb3JlX1NPVVJDRVMKICAgICB5YXJyL1lhcnJTeW50YXhDaGVja2VyLmNwcAogKQogCitzZXQo
X3VuaWZpZWRTb3VyY2VDb3VudCAwKQorbGlzdChTT1JUIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMp
CitsaXN0KExFTkdUSCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTIEphdmFTY3JpcHRDb3JlX1NPVVJD
RV9DT1VOVCkKK21hdGgoRVhQUiBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VfQ09VTlQgIiR7SmF2YVNj
cmlwdENvcmVfU09VUkNFX0NPVU5UfSAtIDEiKQorbGlzdChHRVQgSmF2YVNjcmlwdENvcmVfU09V
UkNFUyAwIF9maXJzdFNvdXJjZUZpbGUpCitnZXRfZmlsZW5hbWVfY29tcG9uZW50KF91bmlmaWVk
U291cmNlQ3VycmVudERpcmVjdG9yeSAke19maXJzdFNvdXJjZUZpbGV9IERJUkVDVE9SWSkKK2Zv
cmVhY2ggKF9pbmRleCBSQU5HRSAke0phdmFTY3JpcHRDb3JlX1NPVVJDRV9DT1VOVH0pCisgICAg
bWF0aChFWFBSIF9uZXdVbmlmaWVkU291cmNlRmlsZSAiJHtfaW5kZXh9ICUgOCIpCisgICAgbGlz
dChHRVQgSmF2YVNjcmlwdENvcmVfU09VUkNFUyAke19pbmRleH0gX3NvdXJjZUZpbGUpCisgICAg
Z2V0X2ZpbGVuYW1lX2NvbXBvbmVudChfdW5pZmllZFNvdXJjZUZpbGVEaXJlY3RvcnkgJHtfc291
cmNlRmlsZX0gRElSRUNUT1JZKQorCisgICAgaWYgKChOT1QgJHtfbmV3VW5pZmllZFNvdXJjZUZp
bGV9KSBPUiAoTk9UICgke191bmlmaWVkU291cmNlRmlsZURpcmVjdG9yeX0gU1RSRVFVQUwgJHtf
dW5pZmllZFNvdXJjZUN1cnJlbnREaXJlY3Rvcnl9KSkpCisgICAgICAgIHNldChfdW5pZmllZFNv
dXJjZUN1cnJlbnREaXJlY3RvcnkgJHtfdW5pZmllZFNvdXJjZUZpbGVEaXJlY3Rvcnl9KQorICAg
ICAgICBtYXRoKEVYUFIgX3VuaWZpZWRTb3VyY2VDb3VudCAiJHtfdW5pZmllZFNvdXJjZUNvdW50
fSArIDEiKQorICAgICAgICBzZXQoX3VuaWZpZWRTb3VyY2VOYW1lICIke0RFUklWRURfU09VUkNF
U19ESVJ9L0phdmFTY3JpcHRDb3JlL1VuaWZpZWRTb3VyY2Uke191bmlmaWVkU291cmNlQ291bnR9
LmNwcCIpCisgICAgICAgIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1VOSUZJRURfU09VUkNF
UyAke191bmlmaWVkU291cmNlTmFtZX0pCisgICAgZW5kaWYgKCkKKworICAgIGZpbGUoQVBQRU5E
ICR7X3VuaWZpZWRTb3VyY2VOYW1lfSAiIikKKyAgICBpZiAoJHtfc291cmNlRmlsZX0gTUFUQ0hF
UyAiLioobW18YykkIikKKyAgICAgIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1VOSUZJRURf
U09VUkNFUyAke19zb3VyY2VGaWxlfSkKKyAgICBlbHNlICgpCisgICAgICAjICAgICAgZ2V0X2Zp
bGVuYW1lX2NvbXBvbmVudChfc291cmNlRmlsZSAke19zb3VyY2VGaWxlfSBOQU1FKQorICAgICAg
ZmlsZShBUFBFTkQgJHtfdW5pZmllZFNvdXJjZU5hbWV9ICIjaW5jbHVkZSBcIiR7X3NvdXJjZUZp
bGV9XCJcbiIpCisgICAgZW5kaWYgKCkKK2VuZGZvcmVhY2ggKCkKKworc2V0KEphdmFTY3JpcHRD
b3JlX1NPVVJDRVMgJHtKYXZhU2NyaXB0Q29yZV9VTklGSUVEX1NPVVJDRVN9KQorbWVzc2FnZSgk
e0phdmFTY3JpcHRDb3JlX1NPVVJDRVN9KQorCisjIHNldChfdW5pZmllZFNvdXJjZUNvdW50IDAp
CisjIGxpc3QoU09SVCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTKQorIyBsaXN0KExFTkdUSCBKYXZh
U2NyaXB0Q29yZV9TT1VSQ0VTIEphdmFTY3JpcHRDb3JlX1NPVVJDRV9DT1VOVCkKKyMgbWF0aChF
WFBSIEphdmFTY3JpcHRDb3JlX1NPVVJDRV9DT1VOVCAiJHtKYXZhU2NyaXB0Q29yZV9TT1VSQ0Vf
Q09VTlR9IC0gMSIpCisjIGxpc3QoR0VUIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMgMCBfZmlyc3RT
b3VyY2VGaWxlKQorIyBtZXNzYWdlKCR7X2ZpcnN0U291cmNlRmlsZX0pCisjIGdldF9maWxlbmFt
ZV9jb21wb25lbnQoX3VuaWZpZWRTb3VyY2VDdXJyZW50RGlyZWN0b3J5ICR7X2ZpcnN0U291cmNl
RmlsZX0gRElSRUNUT1JZKQorIyBmb3JlYWNoIChfaW5kZXggUkFOR0UgJHtKYXZhU2NyaXB0Q29y
ZV9TT1VSQ0VfQ09VTlR9KQorIyAgICAgbWF0aChFWFBSIF9uZXdVbmlmaWVkU291cmNlRmlsZSAi
JHtfaW5kZXh9ICUgOCIpCisjICAgICBsaXN0KEdFVCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTICR7
X2luZGV4fSBfc291cmNlRmlsZSkKKyMgICAgIGdldF9maWxlbmFtZV9jb21wb25lbnQoX3VuaWZp
ZWRTb3VyY2VGaWxlRGlyZWN0b3J5ICR7X3NvdXJjZUZpbGV9IERJUkVDVE9SWSkKKyMgICAgIG1l
c3NhZ2UoJHtfdW5pZmllZFNvdXJjZUN1cnJlbnREaXJlY3Rvcnl9KQorIyAgICAgbWVzc2FnZSgk
e191bmlmaWVkU291cmNlRmlsZURpcmVjdG9yeX0pCisjICAgICBpZigoJHtfdW5pZmllZFNvdXJj
ZUZpbGVEaXJlY3Rvcnl9IFNUUkVRVUFMICR7X3VuaWZpZWRTb3VyY2VDdXJyZW50RGlyZWN0b3J5
fSkpCisjICAgICAgIG1lc3NhZ2UodHJ1ZSkKKyMgICAgIGVsc2UgKCkKKyMgICAgICAgbWVzc2Fn
ZShmYWxzZSkKKyMgICAgIGVuZGlmICgpCisKKyMgICAgIGlmICgoTk9UICR7X25ld1VuaWZpZWRT
b3VyY2VGaWxlfSkgT1IgKE5PVCAoJHtfdW5pZmllZFNvdXJjZUZpbGVEaXJlY3Rvcnl9IFNUUkVR
VUFMICR7X3VuaWZpZWRTb3VyY2VDdXJyZW50RGlyZWN0b3J5fSkpKQorIyAgICAgICAgIHNldChf
dW5pZmllZFNvdXJjZUN1cnJlbnREaXJlY3RvcnkgJHtfdW5pZmllZFNvdXJjZUZpbGVEaXJlY3Rv
cnl9KQorIyAgICAgICAgIG1hdGgoRVhQUiBfdW5pZmllZFNvdXJjZUNvdW50ICIke191bmlmaWVk
U291cmNlQ291bnR9ICsgMSIpCisjICAgICAgICAgc2V0KF91bmlmaWVkU291cmNlTmFtZSAiJHtE
RVJJVkVEX1NPVVJDRVNfRElSfS9KYXZhU2NyaXB0Q29yZS9VbmlmaWVkU291cmNlJHtfdW5pZmll
ZFNvdXJjZUNvdW50fS5jcHAiKQorIyAgICAgICAgIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3Jl
X1VOSUZJRURfU09VUkNFUyAke191bmlmaWVkU291cmNlTmFtZX0pCisjICAgICBlbmRpZiAoKQor
CisjICAgICBsaXN0KEdFVCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTICR7X2luZGV4fSBfc291cmNl
RmlsZSkKKyMgICAgIGlmICgke19zb3VyY2VGaWxlfSBNQVRDSEVTICIuKihtbXxjfGgpJCIpCisj
ICAgICAgIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1VOSUZJRURfU09VUkNFUyAke19zb3Vy
Y2VGaWxlfSkKKyMgICAgIGVsc2UgKCkKKyMgICAgICAgV0VCS0lUX0FERF9TT1VSQ0VfREVQRU5E
RU5DSUVTKCR7X3VuaWZpZWRTb3VyY2VOYW1lfSAke19zb3VyY2VGaWxlfSkKKyMgICAgICAgZmls
ZShBUFBFTkQgJHtfdW5pZmllZFNvdXJjZU5hbWV9ICIjaW5jbHVkZSBcIiR7X3NvdXJjZUZpbGV9
XCJcbiIpCisjICAgICBlbmRpZiAoKQorIyBlbmRmb3JlYWNoICgpCisKKyMgc2V0KEphdmFTY3Jp
cHRDb3JlX1NPVVJDRVMgJHtKYXZhU2NyaXB0Q29yZV9VTklGSUVEX1NPVVJDRVN9KQorIyBtZXNz
YWdlKCR7SmF2YVNjcmlwdENvcmVfU09VUkNFU30pCisKICMgRXh0cmEgZmxhZ3MgZm9yIGNvbXBp
bGUgc291cmNlcyBjYW4gZ28gaGVyZS4KIGlmIChOT1QgTVNWQykKICAgICBzZXRfc291cmNlX2Zp
bGVzX3Byb3BlcnRpZXMocnVudGltZS9Qcm94eU9iamVjdC5jcHAgUFJPUEVSVElFUyBDT01QSUxF
X0ZMQUdTIC1mbm8tb3B0aW1pemUtc2libGluZy1jYWxscykKQEAgLTEzMzYsNiArMTQwNCw3IEBA
IGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBNQUlOX0RFUEVOREVOQ1kgJHtDTUFLRV9DVVJSRU5U
X1NPVVJDRV9ESVJ9L2NyZWF0ZV9yZWdleF90YWJsZXMKICAgICBDT01NQU5EICR7UFlUSE9OX0VY
RUNVVEFCTEV9ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9jcmVhdGVfcmVnZXhfdGFibGVz
ID4gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9SZWdFeHBKaXRUYWJsZXMu
aAogICAgIFZFUkJBVElNKQorbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUyAke0RF
UklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L1JlZ0V4cEppdFRhYmxlcy5oKQogV0VC
S0lUX0FERF9TT1VSQ0VfREVQRU5ERU5DSUVTKCR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS95
YXJyL1lhcnJQYXR0ZXJuLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9
L1JlZ0V4cEppdFRhYmxlcy5oKQogCiBhZGRfY3VzdG9tX2NvbW1hbmQoCkBAIC0xMzU2LDYgKzE0
MjUsNyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgREVQRU5EUyAke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0vcGFyc2VyL0tleXdvcmRzLnRhYmxlCiAgICAgQ09NTUFORCAke1BZVEhPTl9F
WEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vS2V5d29yZExvb2t1cEdlbmVy
YXRvci5weSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vcGFyc2VyL0tleXdvcmRzLnRhYmxl
ID4gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9LZXl3b3JkTG9va3VwLmgK
ICAgICBWRVJCQVRJTSkKK2xpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMgJHtERVJJ
VkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9LZXl3b3JkTG9va3VwLmgpCiBXRUJLSVRf
QUREX1NPVVJDRV9ERVBFTkRFTkNJRVMoJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3BhcnNl
ci9MZXhlci5jcHAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9LZXl3b3Jk
TG9va3VwLmgpCiAKIApAQCAtMTUwMyw3ICsxNTczLDcgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAog
ICAgIFdPUktJTkdfRElSRUNUT1JZICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJ
Un0KICkKIAotbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfU09VUkNFUworbGlzdChBUFBFTkQg
SmF2YVNjcmlwdENvcmVfSEVBREVSUwogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRD
T1JFX0RJUn0vQWlyT3Bjb2RlLmgKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09S
RV9ESVJ9L0Fpck9wY29kZUdlbmVyYXRlZC5oCiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQ2hlY2tTcGVjaWFsLmNwcAppbmRleCBiZWI4NzkyODU4OGZkNWI2ZDczMTBmN2YzNDg1YmMx
NzViYTNkYmZmLi43YzUzNzJhYzVlMjcxMTQxOTkzZjc4YmUxNjgzZTA5MzE4NTNjODk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAKQEAgLTM2LDExICsz
NiwxMyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAotdXNpbmcgbmFtZXNw
YWNlIEFpcjsKK3VzaW5nIEluc3QgPSBBaXI6Okluc3Q7Cit1c2luZyBBcmcgPSBBaXI6OkFyZzsK
K3VzaW5nIEdlbmVyYXRpb25Db250ZXh0ID0gQWlyOjpHZW5lcmF0aW9uQ29udGV4dDsKIAogbmFt
ZXNwYWNlIHsKIAotdW5zaWduZWQgbnVtQjNBcmdzKEIzOjpLaW5kIGtpbmQpCit1bnNpZ25lZCBu
dW1CM0FyZ3MoS2luZCBraW5kKQogewogICAgIHN3aXRjaCAoa2luZC5vcGNvZGUoKSkgewogICAg
IGNhc2UgQ2hlY2tBZGQ6CkBAIC0xMDgsNiArMTEwLDcgQEAgSW5zdCBDaGVja1NwZWNpYWw6Omhp
ZGRlbkJyYW5jaChjb25zdCBJbnN0JiBpbnN0KSBjb25zdAogCiB2b2lkIENoZWNrU3BlY2lhbDo6
Zm9yRWFjaEFyZyhJbnN0JiBpbnN0LCBjb25zdCBTY29wZWRMYW1iZGE8SW5zdDo6RWFjaEFyZ0Nh
bGxiYWNrPiYgY2FsbGJhY2spCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICBzdGQ6
Om9wdGlvbmFsPFdpZHRoPiBvcHRpb25hbERlZkFyZ1dpZHRoOwogICAgIEluc3QgaGlkZGVuID0g
aGlkZGVuQnJhbmNoKGluc3QpOwogICAgIGhpZGRlbi5mb3JFYWNoQXJnKApAQCAtMTU2LDYgKzE1
OSw3IEBAIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IENoZWNrU3BlY2lhbDo6c2hvdWxkVHJ5QWxp
YXNpbmdEZWYoSW5zdCYgaW5zdCkKIAogQ0NhbGxIZWxwZXJzOjpKdW1wIENoZWNrU3BlY2lhbDo6
Z2VuZXJhdGUoSW5zdCYgaW5zdCwgQ0NhbGxIZWxwZXJzJiBqaXQsIEdlbmVyYXRpb25Db250ZXh0
JiBjb250ZXh0KQogeworICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgQ0NhbGxIZWxwZXJz
OjpKdW1wIGZhaWwgPSBoaWRkZW5CcmFuY2goaW5zdCkuZ2VuZXJhdGUoaml0LCBjb250ZXh0KTsK
ICAgICBBU1NFUlQoZmFpbC5pc1NldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzRHVwbGljYXRlVGFpbHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzRHVwbGljYXRlVGFpbHMuY3BwCmluZGV4IGZkNjU3OTBlOTljMmZlYWQ0ZjVmYmI5ZWFmNjBj
MWE3NWM5MzIyNTUuLmNmZjQ0YTRjMWUwMDkxZWJhNGE3ODNiMzhmMzVhM2JkY2VkMWJjZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0R1cGxpY2F0ZVRhaWxzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNEdXBsaWNhdGVUYWlscy5jcHAKQEAgLTQ0
LDcgKzQ0LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5hbWVzcGFjZSB7
CiAKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEIzRHVwbGljYXRlVGFp
bHNJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNs
YXNzIER1cGxpY2F0ZVRhaWxzIHsKIHB1YmxpYzoKQEAgLTk0LDcgKzk2LDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGRlbW90ZVZhbHVlcyhtX3Byb2MsIHZh
bHVlc1RvRGVtb3RlKTsKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKEIzRHVw
bGljYXRlVGFpbHNJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiUHJv
Y2VkdXJlIGFmdGVyIHZhbHVlIGRlbW90aW9uOlxuIik7CiAgICAgICAgICAgICBkYXRhTG9nKG1f
cHJvYyk7CiAgICAgICAgIH0KQEAgLTExNiw3ICsxMTgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAvLyBwb2ludC4KICAgICAgICAgICAgIGNhbmRpZGF0ZXMucmVtb3ZlKGJsb2NrKTsKIAotICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNEdXBsaWNhdGVUYWlsc0lu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkR1cGxpY2F0aW5nICIs
ICp0YWlsLCAiIGludG8gIiwgKmJsb2NrLCAiXG4iKTsKIAogICAgICAgICAgICAgYmxvY2stPnJl
bW92ZUxhc3QobV9wcm9jKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAppbmRleCAxYWU0MzU1NjE1
MTdlOTFjMDllNjY4YzY5ZWFmYzE1NGE3NDhiZGU2Li45YTJlOThhYTQzODU2MjgwMDlmMTJhNDQ1
MjRhNGQxYWZmNTVmOWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNF
bGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCkBAIC01Myw3ICs1Myw5
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBuYW1lc3BhY2UgewogCi1jb25z
dCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBCM0VsaW1pbmF0ZUNvbW1vblN1YmV4
cHJlc3Npb25zSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwor
fQogCiAvLyBGSVhNRTogV2UgY291bGQgdHJlYXQgUGF0Y2hwb2ludHMgd2l0aCBhIG5vbi1lbXB0
eSBzZXQgb2YgcmVhZHMgYXMgYSAibWVtb3J5IHZhbHVlIiBhbmQgc29tZWhvdwogLy8gZWxpbWlu
YXRlIHJlZHVuZGFudCBvbmVzLiBXZSB3b3VsZCBuZWVkIHNvbWUgd2F5IG9mIGRldGVybWluaW5n
IGlmIHR3byBwYXRjaHBvaW50cyBhcmUgcmVwbGFjYWJsZS4KQEAgLTE2MCw3ICsxNjIsNyBAQCBw
dWJsaWM6CiAKICAgICBib29sIHJ1bigpCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgIGRhdGFMb2coIkIzIGJlZm9yZSBDU0U6XG4iLCBtX3Byb2MpOwogICAg
ICAgICAKICAgICAgICAgbV9wcm9jLnJlc2V0VmFsdWVPd25lcnMoKTsKQEAgLTE4OCw3ICsxOTAs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGRhdGEubWVtb3J5VmFsdWVzQXRUYWls
LmFkZChtZW1vcnkpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiQmxvY2sgIiwgKmJsb2NrLCAiOiAi
LCBkYXRhLCAiXG4iKTsKICAgICAgICAgfQogCkBAIC0xOTYsNyArMTk4LDcgQEAgcHVibGljOgog
ICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IHBvc3RPcmRlciA9IG1fcHJvYy5ibG9ja3NJblBv
c3RPcmRlcigpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBwb3N0T3JkZXIuc2l6ZSgpOyBp
LS07KSB7CiAgICAgICAgICAgICBtX2Jsb2NrID0gcG9zdE9yZGVyW2ldOwotICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNz
aW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvb2tpbmcg
YXQgIiwgKm1fYmxvY2ssICI6XG4iKTsKIAogICAgICAgICAgICAgbV9kYXRhID0gSW1wdXJlQmxv
Y2tEYXRhKCk7CkBAIC0yMjIsNyArMjI0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9pbnNl
cnRpb25TZXQuZXhlY3V0ZShibG9jayk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodmVyYm9z
ZSkKKyAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkIzIGFmdGVyIENTRTpcbiIsIG1fcHJvYyk7
CiAKICAgICAgICAgcmV0dXJuIG1fY2hhbmdlZDsKQEAgLTQ4Nyw3ICs0ODksNyBAQCBwcml2YXRl
OgogICAgICAgICAvLyBleHBlbnNpdmUsIGJ1dCBpbiB0aGUgb3ZlcndoZWxtaW5nIG1ham9yaXR5
IG9mIGNhc2VzIGl0IHdpbGwgYWxtb3N0IGltbWVkaWF0ZWx5IGhpdCBhbiAKICAgICAgICAgLy8g
b3BlcmF0aW9uIHRoYXQgaW50ZXJmZXJlcy4KIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgICAgIGRhdGFMb2coKm1fdmFsdWUsICI6IGxvb2tpbmcgZm9yd2FyZCBmb3Igc3Rv
cmVzIHRvICIsICpwdHIsICIuLi5cbiIpOwogCiAgICAgICAgIC8vIEZpcnN0IHNlYXJjaCBmb3J3
YXJkIGluIHRoaXMgYmFzaWMgYmxvY2suCkBAIC01NTcsNyArNTU5LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgaWYgKG1hdGNoZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJl
eHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiRWxpbWlu
YXRpbmcgIiwgKm1fdmFsdWUsICIgZHVlIHRvICIsIHBvaW50ZXJMaXN0RHVtcChtYXRjaGVzKSwg
IlxuIik7CiAgICAgICAgIAogICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwpAQCAtNTY2LDcgKzU2
OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBNZW1vcnlWYWx1ZSogZG9taW5hdGluZ01hdGNo
ID0gbWF0Y2hlc1swXTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZG9taW5hdG9ycy5k
b21pbmF0ZXMoZG9taW5hdGluZ01hdGNoLT5vd25lciwgbV9ibG9jaykpOwogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNv
bW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0
YUxvZygiICAgIEVsaW1pbmF0aW5nIHVzaW5nICIsICpkb21pbmF0aW5nTWF0Y2gsICJcbiIpOwog
ICAgICAgICAgICAgVmVjdG9yPFZhbHVlKj4gZXh0cmFWYWx1ZXM7CiAgICAgICAgICAgICBpZiAo
VmFsdWUqIHZhbHVlID0gcmVwbGFjZShkb21pbmF0aW5nTWF0Y2gsIGV4dHJhVmFsdWVzKSkgewpA
QCAtNTkwLDcgKzU5Miw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgVmFyaWFibGVWYWx1ZSogZ2V0
ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhcmlhYmxlVmFsdWU+KAogICAgICAgICAgICAgbV9p
bmRleCwgR2V0LCBtX3ZhbHVlLT5vcmlnaW4oKSwgdmFyaWFibGUpOwotICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBJbnNlcnRpbmcgZ2V0IG9mIHZh
bHVlOiAiLCAqZ2V0LCAiXG4iKTsKICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0
eShnZXQpOwogICAgICAgICAgICAgCkBAIC02MTUsMjMgKzYxNywyMyBAQCBwcml2YXRlOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlcj4KICAgICBNZW1vcnlNYXRjaGVzIGZpbmRNZW1vcnlW
YWx1ZShWYWx1ZSogcHRyLCBIZWFwUmFuZ2UgcmFuZ2UsIGNvbnN0IEZpbHRlciYgZmlsdGVyKQog
ICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1v
blN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCpt
X3ZhbHVlLCAiOiBsb29raW5nIGJhY2t3YXJkIGZvciAiLCAqcHRyLCAiLi4uXG4iKTsKICAgICAg
ICAgCiAgICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkg
ewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNFbGltaW5hdGVD
b21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRh
dGFMb2coIiAgICBHaXZpbmcgdXAgYmVjYXVzZSBmZW5jZXMuXG4iKTsKICAgICAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChNZW1vcnlWYWx1ZSog
bWF0Y2ggPSBtX2RhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmZpbmQocHRyLCBmaWx0ZXIpKSB7Ci0g
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1v
blN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiICAgIEZvdW5kICIsICptYXRjaCwgIiBsb2NhbGx5LlxuIik7CiAgICAgICAgICAgICByZXR1
cm4geyBtYXRjaCB9OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fZGF0YS53cml0ZXMub3Zl
cmxhcHMocmFuZ2UpKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlm
IChCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiICAgIEdpdmluZyB1cCBiZWNhdXNlIG9mIHdyaXRlcy5cbiIp
OwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQpAQCAtNjQyLDI3ICs2NDQsMjcg
QEAgcHJpdmF0ZToKICAgICAgICAgTWVtb3J5TWF0Y2hlcyBtYXRjaGVzOwogCiAgICAgICAgIHdo
aWxlIChCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnBvcCgpKSB7Ci0gICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Np
b25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIExvb2tp
bmcgYXQgIiwgKmJsb2NrLCAiXG4iKTsKIAogICAgICAgICAgICAgSW1wdXJlQmxvY2tEYXRhJiBk
YXRhID0gbV9pbXB1cmVCbG9ja0RhdGFbYmxvY2tdOwogCiAgICAgICAgICAgICBNZW1vcnlWYWx1
ZSogbWF0Y2ggPSBkYXRhLm1lbW9yeVZhbHVlc0F0VGFpbC5maW5kKHB0ciwgZmlsdGVyKTsKICAg
ICAgICAgICAgIGlmIChtYXRjaCAmJiBtYXRjaCAhPSBtX3ZhbHVlKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3Vi
ZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiICAgIEZvdW5kIG1hdGNoOiAiLCAqbWF0Y2gsICJcbiIpOwogICAgICAgICAgICAgICAgIG1h
dGNoZXMuYXBwZW5kKG1hdGNoKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgaWYgKGRhdGEud3JpdGVzLm92ZXJsYXBzKHJhbmdlKSkgewot
ICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChCM0VsaW1p
bmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIiAgICBHaXZpbmcgdXAgYmVjYXVzZSBvZiB3cml0ZXMuXG4iKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBp
ZiAoIWJsb2NrLT5udW1QcmVkZWNlc3NvcnMoKSkgewotICAgICAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25z
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBHaXZp
bmcgdXAgYmVjYXVzZSBpdCdzIGxpdmUgYXQgcm9vdC5cbiIpOwogICAgICAgICAgICAgICAgIC8v
IFRoaXMgZXNzZW50aWFsbHkgcHJvdmVzIHRoYXQgdGhpcyBpcyBsaXZlIGF0IHRoZSBwcm9sb2d1
ZS4gVGhhdCBtZWFucyB0aGF0IHdlCiAgICAgICAgICAgICAgICAgLy8gY2Fubm90IHJlbGlhYmx5
IG9wdGltaXplIHRoaXMgY2FzZS4KQEAgLTY3Miw3ICs2NzQsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgd29ya2xpc3QucHVzaEFsbChibG9jay0+cHJlZGVjZXNzb3JzKCkpOwogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1vblN1
YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
R290IG1hdGNoZXM6ICIsIHBvaW50ZXJMaXN0RHVtcChtYXRjaGVzKSwgIlxuIik7CiAgICAgICAg
IHJldHVybiBtYXRjaGVzOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0ZpeFNTQS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGaXhTU0EuY3Bw
CmluZGV4IGQyMDM4MWQyMDIyZmEwNGYyNjNhODdlZmIxYjNjZDkyMDJlNjc1OGEuLmIyOGYyMWYx
MTA3YzgyNmZhZjYyYjNmODM3MDYyNTgzNjg3ZTM3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0ZpeFNTQS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzRml4U1NBLmNwcApAQCAtNDgsNyArNDgsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsKIAogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1l
c3BhY2UgQjNGaXhTU0FJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFs
c2U7Cit9CiAKIHZvaWQga2lsbERlYWRWYXJpYWJsZXMoUHJvY2VkdXJlJiBwcm9jKQogewpAQCAt
MTU3LDcgKzE1OSw3IEBAIHZvaWQgZml4U1NBR2xvYmFsbHkoUHJvY2VkdXJlJiBwcm9jKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBWYWx1ZSogcGhpID0gcHJvYy5hZGQ8VmFsdWU+KFBoaSwgdmFyaWFibGUtPnR5
cGUoKSwgYmxvY2stPmF0KDApLT5vcmlnaW4oKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJv
c2UpIHsKKyAgICAgICAgICAgICAgICBpZiAoQjNGaXhTU0FJbnRlcm5hbDo6dmVyYm9zZSkgewog
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgIkFk
ZGluZyBQaGkgZm9yICIsIHBvaW50ZXJEdW1wKHZhcmlhYmxlKSwgIiBhdCAiLCAqYmxvY2ssICI6
ICIsCiAgICAgICAgICAgICAgICAgICAgICAgICBkZWVwRHVtcChwcm9jLCBwaGkpLCAiXG4iKTsK
QEAgLTIzMSw3ICsyMzMsNyBAQCB2b2lkIGZpeFNTQUdsb2JhbGx5KFByb2NlZHVyZSYgcHJvYykK
ICAgICAgICAgICAgICAgICBWYXJpYWJsZSogdmFyaWFibGUgPSBjYWxjVmFyVG9WYXJpYWJsZVtj
YWxjVmFyLT5pbmRleCgpXTsKIAogICAgICAgICAgICAgICAgIFZhbHVlKiBtYXBwZWRWYWx1ZSA9
IGVuc3VyZU1hcHBpbmcodmFyaWFibGUsIHVwc2lsb25JbnNlcnRpb25Qb2ludCwgdXBzaWxvbk9y
aWdpbik7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoQjNGaXhTU0FJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgIk1hcHBlZCB2YWx1ZSBmb3IgIiwgKnZhcmlh
YmxlLCAiIHdpdGggc3VjY2Vzc29yIFBoaSAiLCAqcGhpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgIiBhdCBlbmQgb2YgIiwgKmJsb2NrLCAiOiAiLCBwb2ludGVyRHVtcChtYXBwZWRWYWx1ZSks
ICJcbiIpOwpAQCAtMjQ1LDcgKzI0Nyw3IEBAIHZvaWQgZml4U1NBR2xvYmFsbHkoUHJvY2VkdXJl
JiBwcm9jKQogICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7CiAgICAgfQogCi0g
ICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoQjNGaXhTU0FJbnRlcm5hbDo6dmVyYm9zZSkgewog
ICAgICAgICBkYXRhTG9nKCJCMyBhZnRlciBTU0EgY29udmVyc2lvbjpcbiIpOwogICAgICAgICBk
YXRhTG9nKHByb2MpOwogICAgIH0KQEAgLTI2Niw3ICsyNjgsNyBAQCB2b2lkIGRlbW90ZVZhbHVl
cyhQcm9jZWR1cmUmIHByb2MsIGNvbnN0IEluZGV4U2V0PFZhbHVlKj4mIHZhbHVlcykKICAgICAg
ICAgICAgIHBoaU1hcC5hZGQodmFsdWUsIHByb2MuYWRkVmFyaWFibGUodmFsdWUtPnR5cGUoKSkp
OwogICAgIH0KIAotICAgIGlmICh2ZXJib3NlKSB7CisgICAgaWYgKEIzRml4U1NBSW50ZXJuYWw6
OnZlcmJvc2UpIHsKICAgICAgICAgZGF0YUxvZygiRGVtb3RpbmcgdmFsdWVzIGFzIGZvbGxvd3M6
XG4iKTsKICAgICAgICAgZGF0YUxvZygiICAgbWFwID0gIik7CiAgICAgICAgIENvbW1hUHJpbnRl
ciBjb21tYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZvbGRQYXRo
Q29uc3RhbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZvbGRQYXRoQ29uc3Rh
bnRzLmNwcAppbmRleCBiOWJkYzhkNGYyODhiODJjNjMzMWVmMzEwZDMzM2UzYTU2NDdlMDRkLi4y
MjI1MGNiYzdmMzVjNGNmY2Y5OTE2YTVhYjJlZTcyNmFmYzRhZDVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGb2xkUGF0aENvbnN0YW50cy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzRm9sZFBhdGhDb25zdGFudHMuY3BwCkBAIC00MSw3ICs0MSw5
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBuYW1lc3BhY2UgewogCi1jb25z
dCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBCM0ZvbGRQYXRoQ29uc3RhbnRzSW50
ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBjbGFzcyBG
b2xkUGF0aENvbnN0YW50cyB7CiBwdWJsaWM6CkBAIC01NSw3ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwogCi0gICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICBpZiAoQjNGb2xkUGF0aENvbnN0YW50c0ludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICAgICAgZGF0YUxvZygiQjMgYmVmb3JlIGZvbGRpbmcgcGF0aCBjb25zdGFudHM6IFxuIiwg
bV9wcm9jLCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZpbmQgYWxsIG9mIHRoZSB2YWx1
ZXMgdGhhdCBhcmUgdGhlIHN1YmplY3Qgb2YgYSBicmFuY2ggb3Igc3dpdGNoLiBGb3IgYW55IHN1
Y2Nlc3NvcgpAQCAtODAsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVF9VTlVTRUQob3RoZXJPdmVycmlkZSwgb3RoZXJPdmVycmlkZS5ibG9jayAhPSBvdmVycmlk
ZS5ibG9jayk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICAgICAgaWYgKEIzRm9sZFBhdGhDb25zdGFudHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJPdmVycmlkaW5nICIsICp2YWx1ZSwgIiBmcm9tICIsICpmcm9t
LCAiOiAiLCBvdmVycmlkZSwgIlxuIik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvclZh
bHVlLmFwcGVuZChvdmVycmlkZSk7CkBAIC0xNDksNyArMTUxLDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgICAgICByZXN1bHQgPSBvdmVycmlkZTsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNGb2xkUGF0aENvbnN0YW50c0lu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkluIGJsb2NrICIsICpi
bG9jaywgIiBnZXR0aW5nIG92ZXJyaWRlIGZvciAiLCAqdmFsdWUsICI6ICIsIHJlc3VsdCwgIlxu
Iik7CiAKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNJbmZlclN3aXRjaGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0luZmVyU3dpdGNoZXMuY3BwCmluZGV4IGYyOWY0ZjA5NTRiMmFlNzIwMDVhMTMwMmVm
ZmNjZDRlMzRkZmI4NzguLmVlNjEyZmVmMjhjNmE3N2FhYzE1Yzk4YTk3YWM5MzkyYjEzYzVhZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luZmVyU3dpdGNoZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luZmVyU3dpdGNoZXMuY3BwCkBAIC00
Miw3ICs0Miw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBuYW1lc3BhY2Ug
ewogCi1jb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBCM0luZmVyU3dpdGNo
ZXNJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNs
YXNzIEluZmVyU3dpdGNoZXMgewogcHVibGljOgpAQCAtNTUsNyArNTcsNyBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgYm9vbCBydW4oKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
IGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFM
b2coIkIzIGJlZm9yZSBpbmZlclN3aXRjaGVzOlxuIiwgbV9wcm9jKTsKICAgICAgICAgCiAgICAg
ICAgIGJvb2wgY2hhbmdlZCA9IHRydWU7CkBAIC02Myw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgd2hpbGUgKGNoYW5nZWQpIHsKICAgICAgICAgICAgIGNoYW5nZWQgPSBmYWxzZTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNJbmZl
clN3aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiUGVy
Zm9ybWluZyBmaXhwb2ludCBpdGVyYXRpb246XG4iKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fcHJvYykKQEAgLTc4LDcgKzgwLDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX3Byb2MuZGVsZXRlT3JwaGFucygpOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChC
M0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9n
KCJCMyBhZnRlciBpbmZlclN3aXRjaGVzOlxuIiwgbV9wcm9jKTsKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CkBAIC05NiwxMCArOTgsMTAgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIFN3aXRjaERlc2NyaXB0aW9uIGRl
c2NyaXB0aW9uID0gZGVzY3JpYmUoYmxvY2spOwotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0
YUxvZygiRGVzY3JpcHRpb24gb2YgcHJpbWFyeSBibG9jayAiLCAqYmxvY2ssICI6ICIsIGRlc2Ny
aXB0aW9uLCAiXG4iKTsKICAgICAgICAgaWYgKCFkZXNjcmlwdGlvbikgewotICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNJbmZlclN3aXRjaGVzSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEJhaWxpbmcgYmVjYXVzZSBub3Qg
c3dpdGNoLWxpa2UuXG4iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpA
QCAtMTE1LDE3ICsxMTcsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBkZXNjcmlwdGlvbi5icmFuY2gpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlm
IChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgQmFpbGluZyBiZWNhdXNlIG9mICIsIGRlZXBEdW1wKG1fcHJvYywgdmFsdWUpLCAi
XG4iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgPSBibG9jay0+cHJlZGVjZXNzb3IoMCk7CiAg
ICAgICAgIFN3aXRjaERlc2NyaXB0aW9uIHByZWRlY2Vzc29yRGVzY3JpcHRpb24gPSBkZXNjcmli
ZShwcmVkZWNlc3Nvcik7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQjNJbmZl
clN3aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRGVz
Y3JpcHRpb24gb2YgcHJlZGVjZXNzb3IgYmxvY2sgIiwgKnByZWRlY2Vzc29yLCAiOiAiLCBwcmVk
ZWNlc3NvckRlc2NyaXB0aW9uLCAiXG4iKTsKICAgICAgICAgaWYgKCFwcmVkZWNlc3NvckRlc2Ny
aXB0aW9uKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0lu
ZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgQmFpbGluZyBiZWNhdXNlIG5vdCBzd2l0Y2gtbGlrZS5cbiIpOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0xMzMsNyArMTM1LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgLy8gQm90aCB1cyBhbmQgdGhlIHByZWRlY2Vzc29yIGFyZSBzd2l0Y2gtbGlrZSwgYnV0IHRo
YXQgZG9lc24ndCBtZWFuIHRoYXQgd2UncmUgY29tcGF0aWJsZS4KICAgICAgICAgLy8gV2UgbWF5
IGJlIHN3aXRjaGluZyBvbiBkaWZmZXJlbnQgdmFsdWVzIQogICAgICAgICBpZiAoZGVzY3JpcHRp
b24uc291cmNlICE9IHByZWRlY2Vzc29yRGVzY3JpcHRpb24uc291cmNlKSB7Ci0gICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGluZyBiZWNhdXNlIHNv
dXJjZXMgZG9uJ3QgbWF0Y2guXG4iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQpAQCAtMTQzLDcgKzE0NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGp1c3QgdG90YWxs
eSByZWR1bmRhbnQgYW5kIHdlIHNob3VsZCBiZSBnZXR0aW5nIHJpZCBvZiBpdC4gQnV0IHdlIGRv
bid0IGhhbmRsZSB0aGF0IGhlcmUsCiAgICAgICAgIC8vIHlldC4KICAgICAgICAgaWYgKHByZWRl
Y2Vzc29yRGVzY3JpcHRpb24uZmFsbFRocm91Z2guYmxvY2soKSAhPSBibG9jaykgewotICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNJbmZlclN3aXRjaGVzSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEJhaWxpbmcgYmVjYXVz
ZSBmYWxsLXRocm91Z2ggb2YgcHJlZGVjZXNzb3IgaXMgbm90IHRoZSBwcmltYXJ5IGJsb2NrLlxu
Iik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTE1MSwxNCArMTUz
LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZXJlIGFpbid0IG5v
IGxvb3BzLgogICAgICAgICBpZiAoZGVzY3JpcHRpb24uZmFsbFRocm91Z2guYmxvY2soKSA9PSBi
bG9jawogICAgICAgICAgICAgfHwgZGVzY3JpcHRpb24uZmFsbFRocm91Z2guYmxvY2soKSA9PSBw
cmVkZWNlc3NvcikgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAo
QjNJbmZlclN3aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiICAgIEJhaWxpbmcgYmVjYXVzZSBvZiBmYWxsLXRocm91Z2ggbG9vcC5cbiIpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGZvciAoU3dpdGNoQ2FzZSBz
d2l0Y2hDYXNlIDogZGVzY3JpcHRpb24uY2FzZXMpIHsKICAgICAgICAgICAgIGlmIChzd2l0Y2hD
YXNlLnRhcmdldEJsb2NrKCkgPT0gYmxvY2sKICAgICAgICAgICAgICAgICB8fCBzd2l0Y2hDYXNl
LnRhcmdldEJsb2NrKCkgPT0gcHJlZGVjZXNzb3IpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQjNJbmZlclN3aXRjaGVzSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBCYWlsaW5nIGJlY2F1c2Ugb2Yg
bG9vcCBpbiBwcmltYXJ5IGNhc2VzLlxuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgfQpAQCAtMTY2LDEzICsxNjgsMTMgQEAgcHJpdmF0ZToKICAgICAgICAg
Zm9yIChTd2l0Y2hDYXNlIHN3aXRjaENhc2UgOiBwcmVkZWNlc3NvckRlc2NyaXB0aW9uLmNhc2Vz
KSB7CiAgICAgICAgICAgICBpZiAoc3dpdGNoQ2FzZS50YXJnZXRCbG9jaygpID09IGJsb2NrCiAg
ICAgICAgICAgICAgICAgfHwgc3dpdGNoQ2FzZS50YXJnZXRCbG9jaygpID09IHByZWRlY2Vzc29y
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEIz
SW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgQmFpbGluZyBiZWNhdXNlIG9mIGxvb3AgaW4gcHJlZGVjZXNzb3IgY2FzZXMuXG4i
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQjNJbmZlclN3
aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRG9pbmcg
aXQhXG4iKTsKICAgICAgICAgLy8gV2UncmUgY29tbWl0dGVkIHRvIGRvaW5nIHRoZSB0aGluZy4K
ICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1h
Y3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAKaW5kZXggOTYzYzEwZWRjNWU0OTM5ZjVm
YmUyZWQ0MjU2NGRkM2Q3ZTA3NjNkZC4uZGE0MDc3ZGExZjgyMWEzYTY0ZTFjMzU2NWIxOGQ2MGQ5
YjFiMzYzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNy
b3NBZnRlck9wdGltaXphdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkFpckFyZy5oIgogI2luY2x1ZGUgIkIzQmFz
aWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5j
bHVkZSAiQjNDQ2FsbFZhbHVlLmgiCkBAIC0zOSwxMSArNDAsMTYgQEAKIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBCMyB7CiAKKyAgICB1c2luZyBBcmcgPSBBaXI6OkFyZzsKKyAgICB1c2lu
ZyBJbnN0ID0gQWlyOjpJbnN0OworICAgIHVzaW5nIENvZGUgPSBBaXI6OkNvZGU7CisgICAgdXNp
bmcgVG1wID0gQWlyOjpUbXA7CisKIG5hbWVzcGFjZSB7CiAKLWNsYXNzIExvd2VyTWFjcm9zIHsK
K2NsYXNzIExvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zIHsKIHB1YmxpYzoKLSAgICBMb3dl
ck1hY3JvcyhQcm9jZWR1cmUmIHByb2MpCisgICAgTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlv
bnMoUHJvY2VkdXJlJiBwcm9jKQogICAgICAgICA6IG1fcHJvYyhwcm9jKQogICAgICAgICAsIG1f
YmxvY2tJbnNlcnRpb25TZXQocHJvYykKICAgICAgICAgLCBtX2luc2VydGlvblNldChwcm9jKQpA
QCAtMTgzLDcgKzE4OSw3IEBAIHByaXZhdGU6CiAKIGJvb2wgbG93ZXJNYWNyb3NJbXBsKFByb2Nl
ZHVyZSYgcHJvYykKIHsKLSAgICBMb3dlck1hY3JvcyBsb3dlck1hY3Jvcyhwcm9jKTsKKyAgICBM
b3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucyBsb3dlck1hY3Jvcyhwcm9jKTsKICAgICByZXR1
cm4gbG93ZXJNYWNyb3MucnVuKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93
ZXJUb0Fpci5jcHAKaW5kZXggMTQ4OWMzMTFjNjNlZTAwMmZhOTFhNzYxYjFkNjA2MGNhZjRlMjkz
MS4uMTUwZWExNGZlNmM5YTgzNDViMzgyMDQ5Y2YxMTlhYmU5Y2NhNjA3NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTY5LDIxICs2OSwyMSBAQAogCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAotdXNpbmcgbmFtZXNwYWNlIEFpcjsKLQog
bmFtZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgQjNM
b3dlclRvQWlySW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwor
fQogCiAvLyBGSVhNRTogV2Ugd291bGRuJ3QgbmVlZCB0aGlzIGlmIEFpciBzdXBwb3J0ZWQgV2lk
dGggbW9kaWZpZXJzIGluIEFpcjo6S2luZC4KIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjkyNDcKICNkZWZpbmUgT1BDT0RFX0ZPUl9XSURUSChvcGNvZGUsIHdp
ZHRoKSAoIFwKLSAgICAod2lkdGgpID09IFdpZHRoOCA/IG9wY29kZSAjIyA4IDogXAotICAgICh3
aWR0aCkgPT0gV2lkdGgxNiA/IG9wY29kZSAjIyAxNiA6IFwKLSAgICAod2lkdGgpID09IFdpZHRo
MzIgPyBvcGNvZGUgIyMgMzIgOiBcCi0gICAgb3Bjb2RlICMjIDY0KQorICAgICh3aWR0aCkgPT0g
V2lkdGg4ID8gQWlyOjpvcGNvZGUgIyMgOCA6IFwKKyAgICAod2lkdGgpID09IFdpZHRoMTYgPyBB
aXI6Om9wY29kZSAjIyAxNiA6ICAgIFwKKyAgICAod2lkdGgpID09IFdpZHRoMzIgPyBBaXI6Om9w
Y29kZSAjIyAzMiA6ICAgIFwKKyAgICBBaXI6Om9wY29kZSAjIyA2NCkKICNkZWZpbmUgT1BDT0RF
X0ZPUl9DQU5PTklDQUxfV0lEVEgob3Bjb2RlLCB3aWR0aCkgKCBcCi0gICAgKHdpZHRoKSA9PSBX
aWR0aDY0ID8gb3Bjb2RlICMjIDY0IDogb3Bjb2RlICMjIDMyKQorICAgICh3aWR0aCkgPT0gV2lk
dGg2NCA/IEFpcjo6b3Bjb2RlICMjIDY0IDogQWlyOjpvcGNvZGUgIyMgMzIpCiAKIGNsYXNzIExv
d2VyVG9BaXIgewogcHVibGljOgpAQCAtMTA3LDYgKzEwNyw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgcnVuKCkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAgIGZv
ciAoQjM6OkJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jZWR1cmUpCiAgICAgICAgICAgICBtX2Js
b2NrVG9CbG9ja1tibG9ja10gPSBtX2NvZGUuYWRkQmxvY2soYmxvY2stPmZyZXF1ZW5jeSgpKTsK
ICAgICAgICAgCkBAIC0xMTQsNyArMTE1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgc3dpdGNo
ICh2YWx1ZS0+b3Bjb2RlKCkpIHsKICAgICAgICAgICAgIGNhc2UgUGhpOiB7CiAgICAgICAgICAg
ICAgICAgbV9waGlUb1RtcFt2YWx1ZV0gPSBtX2NvZGUubmV3VG1wKHZhbHVlLT5yZXN1bHRCYW5r
KCkpOwotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChC
M0xvd2VyVG9BaXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiUGhpIHRtcCBmb3IgIiwgKnZhbHVlLCAiOiAiLCBtX3BoaVRvVG1wW3ZhbHVlXSwgIlxuIik7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xNDYsNyArMTQ3LDcg
QEAgcHVibGljOgogCiAgICAgICAgICAgICBtX2lzUmFyZSA9ICFtX2Zhc3RXb3JrbGlzdC5zYXco
YmxvY2spOwogCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0xv
d2VyVG9BaXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJMb3dl
cmluZyBCbG9jayAiLCAqYmxvY2ssICI6XG4iKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
Ly8gTWFrZSBzdXJlIHRoYXQgdGhlIHN1Y2Nlc3NvcnMgYXJlIHNldCB1cCBjb3JyZWN0bHkuCkBA
IC0xNjMsMTAgKzE2NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgaWYgKG1fbG9ja2Vk
LmNvbnRhaW5zKG1fdmFsdWUpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgICAgICBtX2luc3RzLmFwcGVuZChWZWN0b3I8SW5zdD4oKSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEIzTG93ZXJUb0FpckludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJMb3dlcmluZyAiLCBkZWVw
RHVtcChtX3Byb2NlZHVyZSwgbV92YWx1ZSksICI6XG4iKTsKICAgICAgICAgICAgICAgICBsb3dl
cigpOwotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgaWYg
KEIzTG93ZXJUb0FpckludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgICAgIGZv
ciAoSW5zdCYgaW5zdCA6IG1faW5zdHMubGFzdCgpKQogICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiICAgICIsIGluc3QsICJcbiIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTM3OSw3
ICszODAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJlYWxUbXAgPSBtX2NvZGUubmV3
VG1wKHZhbHVlLT5yZXN1bHRCYW5rKCkpOwogICAgICAgICAgICAgICAgIGlmIChtX3Byb2NlZHVy
ZS5pc0Zhc3RDb25zdGFudCh2YWx1ZS0+a2V5KCkpKQogICAgICAgICAgICAgICAgICAgICBtX2Nv
ZGUuYWRkRmFzdFRtcChyZWFsVG1wKTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgICAgICBpZiAoQjNMb3dlclRvQWlySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2coIlRtcCBmb3IgIiwgKnZhbHVlLCAiOiAiLCByZWFsVG1wLCAi
XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRtcCA9IHJlYWxUbXA7CkBAIC05MDYs
NiArOTA3LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxBaXI6Ok9wY29kZSBvcGNvZGUzMiwg
QWlyOjpPcGNvZGUgb3Bjb2RlNjQ+CiAgICAgdm9pZCBhcHBlbmRTaGlmdChWYWx1ZSogdmFsdWUs
IFZhbHVlKiBhbW91bnQpCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAg
ICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBvcGNvZGVGb3JUeXBlKG9wY29kZTMyLCBvcGNvZGU2
NCwgdmFsdWUtPnR5cGUoKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoaW1tKGFtb3VudCkpIHsK
QEAgLTEwMTksNiArMTAyMSw3IEBAIHByaXZhdGU6CiAKICAgICBJbnN0IGNyZWF0ZVN0b3JlKEFp
cjo6S2luZCBtb3ZlLCBWYWx1ZSogdmFsdWUsIGNvbnN0IEFyZyYgZGVzdCkKICAgICB7CisgICAg
ICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAgIGlmIChhdXRvIGltbV92YWx1ZSA9IGlt
bSh2YWx1ZSkpIHsKICAgICAgICAgICAgIGlmIChpc0FSTTY0KCkgJiYgaW1tX3ZhbHVlLnZhbHVl
KCkgPT0gMCkgewogICAgICAgICAgICAgICAgIHN3aXRjaCAobW92ZS5vcGNvZGUpIHsKQEAgLTEw
NDMsNiArMTA0Niw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgQWlyOjpPcGNvZGUgc3RvcmVPcGNv
ZGUoV2lkdGggd2lkdGgsIEJhbmsgYmFuaykKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFj
ZSBBaXI7CiAgICAgICAgIHN3aXRjaCAod2lkdGgpIHsKICAgICAgICAgY2FzZSBXaWR0aDg6CiAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChiYW5rID09IEdQKTsKQEAgLTEwNzMsNiArMTA3Nyw3
IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBhcHBlbmRTdG9yZShWYWx1ZSogdmFsdWUsIGNv
bnN0IEFyZyYgZGVzdCkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAg
ICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSB2YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKG1lbW9yeS0+aXNTdG9yZSgpKTsKIApAQCAtMTEwMCw2ICsxMTA1
LDcgQEAgcHJpdmF0ZToKIAogICAgIEFpcjo6T3Bjb2RlIG1vdmVGb3JUeXBlKFR5cGUgdHlwZSkK
ICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAgIHN3aXRjaCAodHlw
ZSkgewogICAgICAgICBjYXNlIEludDMyOgogICAgICAgICAgICAgcmV0dXJuIE1vdmUzMjsKQEAg
LTExMTksNiArMTEyNSw3IEBAIHByaXZhdGU6CiAKICAgICBBaXI6Ok9wY29kZSByZWxheGVkTW92
ZUZvclR5cGUoVHlwZSB0eXBlKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsK
ICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgSW50MzI6CiAgICAgICAgIGNh
c2UgSW50NjQ6CkBAIC0xMTYyLDggKzExNjksOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJpbnQo
VmFsdWUqIG9yaWdpbiwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKICAgICAgICAg
YXV0byBwcmludExpc3QgPSBQcmludGVyOjptYWtlUHJpbnRSZWNvcmRMaXN0KGFyZ3VtZW50cy4u
Lik7Ci0gICAgICAgIGF1dG8gcHJpbnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8UHJpbnRTcGVjaWFs
Kj4obV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxQcmludFNwZWNpYWw+KHByaW50
TGlzdCkpKTsKLSAgICAgICAgSW5zdCBpbnN0KFBhdGNoLCBvcmlnaW4sIEFyZzo6c3BlY2lhbChw
cmludFNwZWNpYWwpKTsKKyAgICAgICAgYXV0byBwcmludFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxB
aXI6OlByaW50U3BlY2lhbCo+KG1fY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QWly
OjpQcmludFNwZWNpYWw+KHByaW50TGlzdCkpKTsKKyAgICAgICAgSW5zdCBpbnN0KEFpcjo6UGF0
Y2gsIG9yaWdpbiwgQXJnOjpzcGVjaWFsKHByaW50U3BlY2lhbCkpOwogICAgICAgICBQcmludGVy
OjphcHBlbmRBaXJBcmdzKGluc3QsIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cyku
Li4pOwogICAgICAgICBhcHBlbmQoV1RGTW92ZShpbnN0KSk7CiAgICAgfQpAQCAtMTc2Miw2ICsx
NzY5LDcgQEAgcHJpdmF0ZToKIAogICAgIEluc3QgY3JlYXRlQnJhbmNoKFZhbHVlKiB2YWx1ZSwg
Ym9vbCBpbnZlcnRlZCA9IGZhbHNlKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFp
cjsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUdlbmVyaWNDb21wYXJlKAogICAgICAgICAgICAgdmFs
dWUsCiAgICAgICAgICAgICBbdGhpc10gKApAQCAtMTg0NSw2ICsxODUzLDcgQEAgcHJpdmF0ZToK
IAogICAgIEluc3QgY3JlYXRlQ29tcGFyZShWYWx1ZSogdmFsdWUsIGJvb2wgaW52ZXJ0ZWQgPSBm
YWxzZSkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAgIHJldHVy
biBjcmVhdGVHZW5lcmljQ29tcGFyZSgKICAgICAgICAgICAgIHZhbHVlLAogICAgICAgICAgICAg
W3RoaXNdICgKQEAgLTE5MjQsNiArMTkzMyw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBJbnN0
IGNyZWF0ZVNlbGVjdChjb25zdCBNb3ZlQ29uZGl0aW9uYWxseUNvbmZpZyYgY29uZmlnKQogICAg
IHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAgYXV0byBjcmVhdGVTZWxl
Y3RJbnN0cnVjdGlvbiA9IFsmXSAoQWlyOjpPcGNvZGUgb3Bjb2RlLCBjb25zdCBBcmcmIGNvbmRp
dGlvbiwgQXJnUHJvbWlzZSYgbGVmdCwgQXJnUHJvbWlzZSYgcmlnaHQpIC0+IEluc3QgewogICAg
ICAgICAgICAgaWYgKGlzVmFsaWRGb3JtKG9wY29kZSwgY29uZGl0aW9uLmtpbmQoKSwgbGVmdC5r
aW5kKCksIHJpZ2h0LmtpbmQoKSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkpIHsKICAg
ICAgICAgICAgICAgICBUbXAgcmVzdWx0ID0gdG1wKG1fdmFsdWUpOwpAQCAtMTk4Nyw2ICsxOTk3
LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBib29sIHRyeUFwcGVuZExlYSgpCiAgICAgeworICAg
ICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICBBaXI6Ok9wY29kZSBsZWFPcGNvZGUg
PSB0cnlPcGNvZGVGb3JUeXBlKExlYTMyLCBMZWE2NCwgbV92YWx1ZS0+dHlwZSgpKTsKICAgICAg
ICAgaWYgKCFpc1ZhbGlkRm9ybShsZWFPcGNvZGUsIEFyZzo6SW5kZXgsIEFyZzo6VG1wKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxMTYsNiArMjEyNyw3IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGFwcGVuZFg4NkRpdihCMzo6T3Bjb2RlIG9wKQogICAgIHsKKyAgICAgICAgdXNp
bmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAgQWlyOjpPcGNvZGUgY29udmVydFRvRG91YmxlV29y
ZDsKICAgICAgICAgQWlyOjpPcGNvZGUgZGl2OwogICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPnR5
cGUoKSkgewpAQCAtMjE0Myw2ICsyMTU1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYXBwZW5k
WDg2VURpdihCMzo6T3Bjb2RlIG9wKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFp
cjsKICAgICAgICAgQWlyOjpPcGNvZGUgZGl2ID0gbV92YWx1ZS0+dHlwZSgpID09IEludDMyID8g
WDg2VURpdjMyIDogWDg2VURpdjY0OwogCiAgICAgICAgIEFTU0VSVChvcCA9PSBVRGl2IHx8IG9w
ID09IFVNb2QpOwpAQCAtMjE3OCw2ICsyMTkxLDcgQEAgcHJpdmF0ZToKICAgICAvLyBnZW5lcmF0
ZWQuIEl0IGFzc3VtZXMgdGhhdCB5b3UndmUgY29uc3VtZWQgZXZlcnl0aGluZyB0aGF0IG5lZWRz
IHRvIGJlIGNvbnN1bWVkLgogICAgIHZvaWQgYXBwZW5kQ0FTKFZhbHVlKiBhdG9taWNWYWx1ZSwg
Ym9vbCBpbnZlcnQpCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAgICAg
ICBBdG9taWNWYWx1ZSogYXRvbWljID0gYXRvbWljVmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOwog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChhdG9taWMpOwogICAgICAgICAKQEAgLTIzNDAsNiArMjM1
NCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBhcHBlbmRHZW5lcmFsQXRvbWljKEFpcjo6
T3Bjb2RlIG9wY29kZSwgQ29tbXV0YXRpdml0eSBjb21tdXRhdGl2aXR5ID0gTm90Q29tbXV0YXRp
dmUpCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICBBdG9taWNW
YWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CiAgICAgICAgIAogICAg
ICAgICBBcmcgYWRkcmVzcyA9IGFkZHIobV92YWx1ZSk7CkBAIC0yNDI0LDYgKzI0MzksNyBAQCBw
cml2YXRlOgogICAgIAogICAgIHZvaWQgbG93ZXIoKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFt
ZXNwYWNlIEFpcjsKICAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT5vcGNvZGUoKSkgewogICAgICAg
ICBjYXNlIEIzOjpOb3A6IHsKICAgICAgICAgICAgIC8vIFllcywgd2Ugd2lsbCB0b3RhbGx5IHNl
ZSBOb3AncyBiZWNhdXNlIHNvbWUgcGhhc2VzIHdpbGwgcmVwbGFjZVdpdGhOb3AoKSBpbnN0ZWFk
IG9mCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50U3Bl
Y2lhbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5j
cHAKaW5kZXggNDdmMGFiZDJmZmYzYjUwNTcwODJkNzAzYTUxNDIzYzhjYjM4YjBiMC4uYjM3NWNk
ZDBlMGZiMGJmMDg2MjA0ZDEyNzYzYWEwZDUyYjE4MTJhMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRTcGVjaWFsLmNwcApAQCAtMzQsNyArMzQsOCBAQAog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAotdXNpbmcgbmFtZXNwYWNlIEFpcjsK
K3VzaW5nIEFyZyA9IEFpcjo6QXJnOwordXNpbmcgSW5zdCA9IEFpcjo6SW5zdDsKIAogUGF0Y2hw
b2ludFNwZWNpYWw6OlBhdGNocG9pbnRTcGVjaWFsKCkKIHsKQEAgLTEzNSw4ICsxMzYsNyBAQCBi
b29sIFBhdGNocG9pbnRTcGVjaWFsOjphZG1pdHNFeHRlbmRlZE9mZnNldEFkZHIoSW5zdCYgaW5z
dCwgdW5zaWduZWQgYXJnSW5kZXgpCiAgICAgcmV0dXJuIGFkbWl0c1N0YWNrKGluc3QsIGFyZ0lu
ZGV4KTsKIH0KIAotQ0NhbGxIZWxwZXJzOjpKdW1wIFBhdGNocG9pbnRTcGVjaWFsOjpnZW5lcmF0
ZSgKLSAgICBJbnN0JiBpbnN0LCBDQ2FsbEhlbHBlcnMmIGppdCwgR2VuZXJhdGlvbkNvbnRleHQm
IGNvbnRleHQpCitDQ2FsbEhlbHBlcnM6Okp1bXAgUGF0Y2hwb2ludFNwZWNpYWw6OmdlbmVyYXRl
KEluc3QmIGluc3QsIENDYWxsSGVscGVycyYgaml0LCBBaXI6OkdlbmVyYXRpb25Db250ZXh0JiBj
b250ZXh0KQogewogICAgIFBhdGNocG9pbnRWYWx1ZSogdmFsdWUgPSBpbnN0Lm9yaWdpbi0+YXM8
UGF0Y2hwb2ludFZhbHVlPigpOwogICAgIEFTU0VSVCh2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwCmluZGV4IDFjN2IwZDAw
MmExYjkxOWUyMzBmZTY0NmIwMzJlNGE0ZTk5Y2QxNjEuLjZkMzFmN2NiYzA0NjdjYmRkNmY2ZTNj
NThjNjBjYzNlOTE3Y2NlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwCkBAIC0zOSw3ICszOSw5IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgQjMgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsK
K25hbWVzcGFjZSBCM1JlZHVjZURvdWJsZVRvRmxvYXRJbnRlcm5hbCB7CitzdGF0aWMgY29uc3Qg
Ym9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiBib29sIHByaW50UmVtYWluaW5nQ29udmVyc2lvbnMg
PSBmYWxzZTsKIAogY2xhc3MgRG91YmxlVG9GbG9hdFJlZHVjdGlvbiB7CkBAIC0xMjgsNyArMTMw
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgfSB3aGlsZSAoY2hhbmdlZFBo
aVN0YXRlKTsKIAotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoQjNSZWR1Y2VE
b3VibGVUb0Zsb2F0SW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkNv
bnZlcnNpb24gY2FuZGlkYXRlczpcbiIpOwogICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBi
bG9jayA6IG1fcHJvY2VkdXJlKSB7CiAgICAgICAgICAgICAgICAgZm9yIChWYWx1ZSogdmFsdWUg
OiAqYmxvY2spIHsKQEAgLTE5Miw3ICsxOTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQog
ICAgICAgICB9IHdoaWxlIChjaGFuZ2VkUGhpU3RhdGUpOwogCi0gICAgICAgIGlmICh2ZXJib3Nl
KSB7CisgICAgICAgIGlmIChCM1JlZHVjZURvdWJsZVRvRmxvYXRJbnRlcm5hbDo6dmVyYm9zZSkg
ewogICAgICAgICAgICAgZGF0YUxvZygiUGhpcyBjb250YWluaW5nIGZsb2F0IHZhbHVlczpcbiIp
OwogICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fcHJvY2VkdXJlKSB7CiAg
ICAgICAgICAgICAgICAgZm9yIChWYWx1ZSogdmFsdWUgOiAqYmxvY2spIHsKQEAgLTQ4OSwxMyAr
NDkxLDEzIEBAIHZvaWQgcmVkdWNlRG91YmxlVG9GbG9hdChQcm9jZWR1cmUmIHByb2NlZHVyZSkK
IHsKICAgICBQaGFzZVNjb3BlIHBoYXNlU2NvcGUocHJvY2VkdXJlLCAicmVkdWNlRG91YmxlVG9G
bG9hdCIpOwogCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEIzUmVkdWNlRG91YmxlVG9GbG9h
dEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJCZWZvcmUgRG91YmxlVG9GbG9h
dFJlZHVjdGlvbjpcbiIsIHByb2NlZHVyZSwgIlxuIik7CiAKICAgICBEb3VibGVUb0Zsb2F0UmVk
dWN0aW9uIGRvdWJsZVRvRmxvYXRSZWR1Y3Rpb24ocHJvY2VkdXJlKTsKICAgICBkb3VibGVUb0Zs
b2F0UmVkdWN0aW9uLnJ1bigpOwogCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEIzUmVkdWNl
RG91YmxlVG9GbG9hdEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJBZnRlciBE
b3VibGVUb0Zsb2F0UmVkdWN0aW9uOlxuIiwgcHJvY2VkdXJlLCAiXG4iKTsKIAogICAgIHByaW50
R3JhcGhJZkNvbnZlcnRpbmcocHJvY2VkdXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1JlZHVjZVN0cmVuZ3RoLmNwcAppbmRleCBjMjJlOWI0NTNkMDk1Mjk2N2YyMmE2ZmZiYTY0
OTFmZmQwMGY5YzZjLi41NTAyZDVlNDdlNTg3MDYxMDYyYjE2ODZkOWJiM2MyNjkzNThiOTQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCkBAIC04
OCw3ICs4OCw5IEBAIG5hbWVzcGFjZSB7CiAvLyBjb25zdGFudHMgdGhlbiB0aGUgY2Fub25pY2Fs
IGZvcm0gaW52b2x2ZXMgdGhlIGxvd2VyLWluZGV4ZWQgdmFsdWUgZmlyc3QuIEdpdmVuIEFkZCh4
LCB5KSwgaXQncwogLy8gY2Fub25pY2FsIGlmIHgtPmluZGV4KCkgPD0geS0+aW5kZXgoKS4KIAot
Ym9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgQjNSZWR1Y2VTdHJlbmd0aEludGVybmFs
IHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogLy8gRklYTUU6IFRo
aXMgSW50UmFuZ2Ugc3R1ZmYgc2hvdWxkIGJlIHJlZmFjdG9yZWQgaW50byBhIGdlbmVyYWwgY29u
c3RhbnQgcHJvcGFnYXRvci4gSXQncyB3ZWlyZAogLy8gdGhhdCBpdCdzIGp1c3Qgc2l0dGluZyBo
ZXJlIGluIHRoaXMgZmlsZS4KQEAgLTQxNCw3ICs0MTYsNyBAQCBwdWJsaWM6CiAKICAgICAgICAg
ICAgIGlmIChmaXJzdCkKICAgICAgICAgICAgICAgICBmaXJzdCA9IGZhbHNlOwotICAgICAgICAg
ICAgZWxzZSBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgZWxzZSBpZiAoQjNSZWR1Y2VTdHJl
bmd0aEludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygiQjMgYWZ0
ZXIgaXRlcmF0aW9uICMiLCBpbmRleCAtIDEsICIgb2YgcmVkdWNlU3RyZW5ndGg6XG4iKTsKICAg
ICAgICAgICAgICAgICBkYXRhTG9nKG1fcHJvYyk7CiAgICAgICAgICAgICB9CkBAIC00NTIsNyAr
NDU0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIG1fYmxvY2sgPSBibG9jazsKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmb3IgKG1faW5kZXggPSAwOyBtX2luZGV4IDwg
YmxvY2stPnNpemUoKTsgKyttX2luZGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJi
b3NlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChCM1JlZHVjZVN0cmVuZ3RoSW50ZXJuYWw6
OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkxvb2tpbmcgYXQgIiwgKmJsb2NrLCAiICMiLCBtX2luZGV4LCAi
OiAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZXBEdW1wKG1fcHJvYywgYmxvY2st
PmF0KG1faW5kZXgpKSwgIlxuIik7CkBAIC0yMDM1LDcgKzIwMzcsNyBAQCBwcml2YXRlOgogICAg
IC8vIGVhcmx5LgogICAgIHZvaWQgc3BlY2lhbGl6ZVNlbGVjdChWYWx1ZSogc291cmNlKQogICAg
IHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCM1JlZHVjZVN0cmVuZ3RoSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJTcGVjaWFsaXppbmcgc2VsZWN0
OiAiLCBkZWVwRHVtcChtX3Byb2MsIHNvdXJjZSksICJcbiIpOwogCiAgICAgICAgIC8vIFRoaXMg
bXV0YXRlcyBzdGFydEluZGV4IHRvIGFjY291bnQgZm9yIHRoZSBmYWN0IHRoYXQgbV9ibG9jayBn
b3QgdGhlIGZyb250IG9mIGl0CkBAIC0yMjc2LDcgKzIyNzgsNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBzaW1wbGlmeUNGRygpCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAg
ICBpZiAoQjNSZWR1Y2VTdHJlbmd0aEludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBk
YXRhTG9nKCJCZWZvcmUgc2ltcGxpZnlDRkc6XG4iKTsKICAgICAgICAgICAgIGRhdGFMb2cobV9w
cm9jKTsKICAgICAgICAgfQpAQCAtMjMwMSw3ICsyMzAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Ly8gaXRlcmF0aW9ucyBuZWVkZWQgdG8ga2lsbCBhIGxvdCBvZiBjb2RlLgogCiAgICAgICAgIGZv
ciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX3Byb2MpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICAgICAgaWYgKEIzUmVkdWNlU3RyZW5ndGhJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBibG9jayAiLCAqYmxvY2ssICI6XG4i
KTsKIAogICAgICAgICAgICAgY2hlY2tQcmVkZWNlc3NvclZhbGlkaXR5KCk7CkBAIC0yMzE3LDcg
KzIzMTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAmJiBzdWNjZXNzb3ItPmxh
c3QoKS0+b3Bjb2RlKCkgPT0gSnVtcCkgewogICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2Nr
KiBuZXdTdWNjZXNzb3IgPSBzdWNjZXNzb3ItPnN1Y2Nlc3NvckJsb2NrKDApOwogICAgICAgICAg
ICAgICAgICAgICBpZiAobmV3U3VjY2Vzc29yICE9IHN1Y2Nlc3NvcikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChC
M1JlZHVjZVN0cmVuZ3RoSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVwbGFj
aW5nICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIi0+IiwgcG9pbnRlckR1bXAoc3VjY2Vzc29yKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiB3aXRoICIsIHBvaW50ZXJEdW1wKGJs
b2NrKSwgIi0+IiwgcG9pbnRlckR1bXAobmV3U3VjY2Vzc29yKSwKQEAgLTIzNDgsNyArMjM1MCw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKGFsbFNhbWUpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQjNS
ZWR1Y2VTdHJlbmd0aEludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNoYW5naW5n
ICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIidzIHRlcm1pbmFsIHRvIGEgSnVtcC5cbiIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjM4Nyw3ICsyMzg5LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBuZXdTdWNjZXNzb3IgOiBibG9jay0+
c3VjY2Vzc29yQmxvY2tzKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTdWNjZXNzb3It
PnJlcGxhY2VQcmVkZWNlc3NvcihzdWNjZXNzb3IsIGJsb2NrKTsKIAotICAgICAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoQjNSZWR1Y2VTdHJl
bmd0aEludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNZXJnZWQgIiwgcG9pbnRlckR1bXAoYmxv
Y2spLCAiLT4iLCBwb2ludGVyRHVtcChzdWNjZXNzb3IpLCAiXG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgfQpAQCAtMjM5Nyw3ICsyMzk5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCi0gICAgICAgIGlmIChtX2NoYW5nZWRDRkcgJiYgdmVyYm9zZSkgeworICAgICAg
ICBpZiAobV9jaGFuZ2VkQ0ZHICYmIEIzUmVkdWNlU3RyZW5ndGhJbnRlcm5hbDo6dmVyYm9zZSkg
ewogICAgICAgICAgICAgZGF0YUxvZygiQjMgYWZ0ZXIgc2ltcGxpZnlDRkc6XG4iKTsKICAgICAg
ICAgICAgIGRhdGFMb2cobV9wcm9jKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5jcHAKaW5kZXggYmJh
ODRjYWY4YjRiZTA5YzI4ODYzYzQyOTAyMDg1MmU3MDUxMTYyMi4uMzg5ZWY4YjljYTJkNjEwZWZk
YTU3YjlkODBlYTkzZWJiNTgyZTE5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuY3BwCkBAIC0zNCw4ICszNCw2IEBA
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi11c2luZyBuYW1lc3BhY2UgQWly
OwotCiBjb25zdCBSZWdpc3RlclNldCYgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zOjp1c2VkUmVn
aXN0ZXJzKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9jb250ZXh0LmNvZGUtPm5lZWRzVXNlZFJl
Z2lzdGVycygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNr
bWFwU3BlY2lhbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNp
YWwuY3BwCmluZGV4IDYwMzcwYzU3OGRkZmMzMjkxOGVmZmI1YTFiZGU4NTc4ZTkzZjJmNzAuLjVl
YjViOWIwZTY3ZDM3M2MzOWJjN2Q5NmQ5M2VkOWY2YWM1ZDE4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcApAQCAtMzQsNyArMzQsOSBAQAog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAotdXNpbmcgbmFtZXNwYWNlIEFpcjsK
K3VzaW5nIEFyZyA9IEFpcjo6QXJnOwordXNpbmcgSW5zdCA9IEFpcjo6SW5zdDsKK3VzaW5nIFRt
cCA9IEFpcjo6VG1wOwogCiBTdGFja21hcFNwZWNpYWw6OlN0YWNrbWFwU3BlY2lhbCgpCiB7CkBA
IC0yMTAsOCArMjEyLDcgQEAgYm9vbCBTdGFja21hcFNwZWNpYWw6OmFkbWl0c1N0YWNrSW1wbCgK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVZlY3RvcjxWYWx1ZVJlcD4gU3RhY2ttYXBTcGVjaWFs
OjpyZXBzSW1wbCgKLSAgICBHZW5lcmF0aW9uQ29udGV4dCYgY29udGV4dCwgdW5zaWduZWQgbnVt
SWdub3JlZEIzQXJncywgdW5zaWduZWQgbnVtSWdub3JlZEFpckFyZ3MsIEluc3QmIGluc3QpCitW
ZWN0b3I8VmFsdWVSZXA+IFN0YWNrbWFwU3BlY2lhbDo6cmVwc0ltcGwoQWlyOjpHZW5lcmF0aW9u
Q29udGV4dCYgY29udGV4dCwgdW5zaWduZWQgbnVtSWdub3JlZEIzQXJncywgdW5zaWduZWQgbnVt
SWdub3JlZEFpckFyZ3MsIEluc3QmIGluc3QpCiB7CiAgICAgVmVjdG9yPFZhbHVlUmVwPiByZXN1
bHQ7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGluc3Qub3JpZ2luLT5udW1DaGlsZHJl
bigpIC0gbnVtSWdub3JlZEIzQXJnczsgKytpKQpAQCAtMjY3LDcgKzI2OCw3IEBAIGJvb2wgU3Rh
Y2ttYXBTcGVjaWFsOjppc0FyZ1ZhbGlkRm9yUmVwKEFpcjo6Q29kZSYgY29kZSwgY29uc3QgQWly
OjpBcmcmIGFyZywgY29uCiAgICAgfQogfQogCi1WYWx1ZVJlcCBTdGFja21hcFNwZWNpYWw6OnJl
cEZvckFyZyhDb2RlJiBjb2RlLCBjb25zdCBBcmcmIGFyZykKK1ZhbHVlUmVwIFN0YWNrbWFwU3Bl
Y2lhbDo6cmVwRm9yQXJnKEFpcjo6Q29kZSYgY29kZSwgY29uc3QgQXJnJiBhcmcpCiB7CiAgICAg
c3dpdGNoIChhcmcua2luZCgpKSB7CiAgICAgY2FzZSBBcmc6OlRtcDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmlu
Zy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlU3RhY2tCeUdy
YXBoQ29sb3JpbmcuY3BwCmluZGV4IGU4NjBkOWNjYzVjYjBhZTFkODdjM2FmZWZkYWJmODg2NmYz
MTdkMWEuLmVkNjdkMWM3Y2Q4OWRiMDhjMGY5OGNmMWY2NjNhMWY1YWJjNTJlM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVTdGFja0J5R3JhcGhD
b2xvcmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0
ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcApAQCAtNDIsNyArNDIsOSBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CiAKIG5hbWVzcGFjZSB7CiAKLWNvbnN0
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEFpckFsbG9jYXRlU3RhY2tCeUdyYXBo
Q29sb3JpbmdJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9
CiAKIHN0cnVjdCBDb2FsZXNjYWJsZU1vdmUgewogICAgIENvYWxlc2NhYmxlTW92ZSgpCkBAIC0x
NTMsNyArMTU1LDcgQEAgdm9pZCBhbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nKENvZGUmIGNv
ZGUpCiAgICAgICAgIFN0YWNrU2xvdExpdmVuZXNzOjpMb2NhbENhbGMgbG9jYWxDYWxjKGxpdmVu
ZXNzLCBibG9jayk7CiAKICAgICAgICAgYXV0byBpbnRlcmZlcmUgPSBbJl0gKHVuc2lnbmVkIGlu
c3RJbmRleCkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQWly
QWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZ0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgICAgIGRhdGFMb2coIkludGVyZmVyaW5nOiAiLCBXVEY6OnBvaW50ZXJMaXN0RHVtcChsb2Nh
bENhbGMubGl2ZSgpKSwgIlxuIik7CiAKICAgICAgICAgICAgIEluc3QqIHByZXZJbnN0ID0gYmxv
Y2stPmdldChpbnN0SW5kZXgpOwpAQCAtMTg1LDcgKzE4Nyw3IEBAIHZvaWQgYWxsb2NhdGVTdGFj
a0J5R3JhcGhDb2xvcmluZyhDb2RlJiBjb2RlKQogICAgICAgICB9OwogCiAgICAgICAgIGZvciAo
dW5zaWduZWQgaW5zdEluZGV4ID0gYmxvY2stPnNpemUoKTsgaW5zdEluZGV4LS07KSB7Ci0gICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChBaXJBbGxvY2F0ZVN0YWNrQnlH
cmFwaENvbG9yaW5nSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygi
QW5hbHl6aW5nOiAiLCBibG9jay0+YXQoaW5zdEluZGV4KSwgIlxuIik7CiAKICAgICAgICAgICAg
IC8vIEtpbGwgZGVhZCBzdG9yZXMuIEZvciBzaW1wbGljaXR5IHdlIHNheSB0aGF0IGEgc3RvcmUg
aXMga2lsbGFibGUgaWYgaXQgaGFzIG9ubHkgbGF0ZQpAQCAtMjMyLDcgKzIzNCw3IEBAIHZvaWQg
YWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZyhDb2RlJiBjb2RlKQogICAgICAgICAgICAgfSk7
CiAgICAgfQogCi0gICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoQWlyQWxsb2NhdGVTdGFja0J5
R3JhcGhDb2xvcmluZ0ludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGZvciAoU3RhY2tTbG90
KiBzbG90IDogY29kZS5zdGFja1Nsb3RzKCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJJbnRlcmZl
cmVuY2Ugb2YgIiwgcG9pbnRlckR1bXAoc2xvdCksICI6ICIsIHBvaW50ZXJMaXN0RHVtcChpbnRl
cmZlcmVuY2Vbc2xvdF0pLCAiXG4iKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckVtaXRTaHVmZmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyRW1pdFNodWZmbGUuY3BwCmluZGV4IDczZDcxMGZmNjllNzE4ZWI0YmUzMDY5
YzFjMWQ4MGFmYjljNjQ5NjcuLjcxNjZlZDg2OTRlYTNmMTg0MjRmZDIzZTgwMjEwOTgwNWY2MTJi
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZm
bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZmbGUu
Y3BwCkBAIC0zNyw3ICszNyw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1l
c3BhY2UgQWlyIHsKIAogbmFtZXNwYWNlIHsKIAotYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1l
c3BhY2UgQWlyRW1pdFNodWZmbGVJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3Nl
ID0gZmFsc2U7Cit9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiBUbXAgZmluZFBvc3Np
YmxlU2NyYXRjaChDb2RlJiBjb2RlLCBCYW5rIGJhbmssIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3Ip
IHsKQEAgLTEyNSw3ICsxMjcsNyBAQCBWZWN0b3I8SW5zdD4gZW1pdFNodWZmbGUoCiAgICAgQ29k
ZSYgY29kZSwgVmVjdG9yPFNodWZmbGVQYWlyPiBwYWlycywgc3RkOjphcnJheTxBcmcsIDI+IHNj
cmF0Y2hlcywgQmFuayBiYW5rLAogICAgIFZhbHVlKiBvcmlnaW4pCiB7Ci0gICAgaWYgKHZlcmJv
c2UpIHsKKyAgICBpZiAoQWlyRW1pdFNodWZmbGVJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAg
ICBkYXRhTG9nKAogICAgICAgICAgICAgIkRlYWxpbmcgd2l0aCBwYWlyczogIiwgbGlzdER1bXAo
cGFpcnMpLCAiIGFuZCBzY3JhdGNoZXMgIiwgc2NyYXRjaGVzWzBdLCAiLCAiLAogICAgICAgICAg
ICAgc2NyYXRjaGVzWzFdLCAiXG4iKTsKQEAgLTE4NSw3ICsxODcsNyBAQCBWZWN0b3I8SW5zdD4g
ZW1pdFNodWZmbGUoCiAgICAgICAgICAgICBBU1NFUlQoY3VycmVudFBhaXJzLmlzRW1wdHkoKSk7
CiAgICAgICAgICAgICBBcmcgb3JpZ2luYWxTcmMgPSBtYXBwaW5nLmJlZ2luKCktPmtleTsKICAg
ICAgICAgICAgIEFTU0VSVCghc2hpZnRzLmNvbnRhaW5zKG9yaWdpbmFsU3JjKSk7Ci0gICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChBaXJFbWl0U2h1ZmZsZUludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIlByb2Nlc3NpbmcgZnJvbSAiLCBv
cmlnaW5hbFNyYywgIlxuIik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEdyYXBoTm9kZVdv
cmtsaXN0PEFyZz4gd29ya2xpc3Q7CkBAIC0xOTUsNyArMTk3LDcgQEAgVmVjdG9yPEluc3Q+IGVt
aXRTaHVmZmxlKAogICAgICAgICAgICAgICAgIGlmIChpdGVyID09IG1hcHBpbmcuZW5kKCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgLy8gV2l0aCBhIHNoaWZ0IGl0J3MgcG9zc2libGUgdGhhdCB3
ZSBwcmV2aW91c2x5IGJ1aWx0IHRoZSB0YWlsIG9mIHRoaXMgc2hpZnQuCiAgICAgICAgICAgICAg
ICAgICAgIC8vIFNlZSBpZiB0aGF0J3MgdGhlIGNhc2Ugbm93LgotICAgICAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKEFpckVtaXRTaHVmZmxlSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJUcnlpbmcg
dG8gYXBwZW5kIHNoaWZ0IGF0ICIsIHNyYywgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIGN1
cnJlbnRQYWlycy5hcHBlbmRWZWN0b3Ioc2hpZnRzLnRha2Uoc3JjKSk7CiAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwpAQCAtMjEzLDcgKzIxNSw3IEBAIFZlY3RvcjxJbnN0PiBlbWl0U2h1
ZmZsZSgKICAgICAgICAgICAgIEFTU0VSVChjdXJyZW50UGFpcnMuc2l6ZSgpKTsKICAgICAgICAg
ICAgIEFTU0VSVChjdXJyZW50UGFpcnNbMF0uc3JjKCkgPT0gb3JpZ2luYWxTcmMpOwogCi0gICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChBaXJFbWl0U2h1ZmZsZUludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coImN1cnJlbnRQYWlycyA9ICIs
IGxpc3REdW1wKGN1cnJlbnRQYWlycyksICJcbiIpOwogCiAgICAgICAgICAgICBib29sIGlzUm90
YXRlID0gZmFsc2U7CkBAIC0yMjUsNyArMjI3LDcgQEAgVmVjdG9yPEluc3Q+IGVtaXRTaHVmZmxl
KAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoaXNSb3RhdGUpIHsKLSAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQWlyRW1pdFNodWZmbGVJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiSXQncyBhIHJv
dGF0ZS5cbiIpOwogICAgICAgICAgICAgICAgIFJvdGF0ZSByb3RhdGU7CiAKQEAgLTI3NywxNCAr
Mjc5LDE0IEBAIFZlY3RvcjxJbnN0PiBlbWl0U2h1ZmZsZSgKICAgICAgICAgICAgICAgICByb3Rh
dGVzLmFwcGVuZChXVEZNb3ZlKHJvdGF0ZSkpOwogICAgICAgICAgICAgICAgIGN1cnJlbnRQYWly
cy5zaHJpbmsoMCk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChBaXJFbWl0U2h1ZmZsZUludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJJdCdzIGEgc2hpZnQuXG4iKTsKICAg
ICAgICAgICAgICAgICBzaGlmdHMuYWRkKG9yaWdpbmFsU3JjLCBXVEZNb3ZlKGN1cnJlbnRQYWly
cykpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHZlcmJvc2Up
IHsKKyAgICBpZiAoQWlyRW1pdFNodWZmbGVJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICBk
YXRhTG9nKCJTaGlmdHM6XG4iKTsKICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IHNoaWZ0cykK
ICAgICAgICAgICAgIGRhdGFMb2coIiAgICAiLCBlbnRyeS5rZXksICI6ICIsIGxpc3REdW1wKGVu
dHJ5LnZhbHVlKSwgIlxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcAppbmRleCA5Y2IxMTAxYTExZjIzNTE3YzI5OTMzYmZh
YmE5YTNjOTIxYTg2NmFlLi42MGE4Y2MwMzVmZjEyOTA1OTEwNWVkNjVlY2YyNTMzMjZjOGU1Mzk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNT
cGlsbHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91
c1NwaWxscy5jcHAKQEAgLTM5LDcgKzM5LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7IG5hbWVzcGFjZSBBaXIgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxz
ZTsKK25hbWVzcGFjZSBBaXJGaXhPYnZpb3VzU3BpbGxzSW50ZXJuYWwgeworc3RhdGljIGNvbnN0
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBjbGFzcyBGaXhPYnZpb3VzU3BpbGxzIHsKIHB1
YmxpYzoKQEAgLTUxLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBydW4oKQogICAgIHsK
LSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChBaXJGaXhPYnZpb3VzU3BpbGxzSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJDb2RlIGJlZm9yZSBmaXhPYnZp
b3VzU3BpbGxzOlxuIiwgbV9jb2RlKTsKICAgICAgICAgCiAgICAgICAgIGNvbXB1dGVBbGlhc2Vz
KCk7CkBAIC03Myw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKCFtX3N0
YXRlLndhc1Zpc2l0ZWQpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEFpckZpeE9idmlvdXNT
cGlsbHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiRXhl
Y3V0aW5nIGJsb2NrICIsICptX2Jsb2NrLCAiOiAiLCBtX3N0YXRlLCAiXG4iKTsKICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICBmb3IgKG1faW5zdEluZGV4ID0gMDsgbV9pbnN0SW5k
ZXggPCBibG9jay0+c2l6ZSgpOyArK21faW5zdEluZGV4KQpAQCAtMTY5LDEzICsxNzEsMTMgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgICAgIEluc3QmIGluc3QgPSBtX2Jsb2NrLT5hdChtX2luc3RJ
bmRleCk7CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChBaXJGaXhPYnZpb3Vz
U3BpbGxzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRXhlY3V0
aW5nICIsIGluc3QsICI6ICIsIG1fc3RhdGUsICJcbiIpOwogCiAgICAgICAgIEluc3Q6OmZvckVh
Y2hEZWZXaXRoRXh0cmFDbG9iYmVyZWRSZWdzPEFyZz4oCiAgICAgICAgICAgICAmaW5zdCwgJmlu
c3QsCiAgICAgICAgICAgICBbJl0gKGNvbnN0IEFyZyYgYXJnLCBBcmc6OlJvbGUsIEJhbmssIFdp
ZHRoKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYg
KEFpckZpeE9idmlvdXNTcGlsbHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiICAgICAgICBDbG9iYmVyaW5nICIsIGFyZywgIlxuIik7CiAgICAgICAgICAg
ICAgICAgbV9zdGF0ZS5jbG9iYmVyKGFyZyk7CiAgICAgICAgICAgICB9KTsKQEAgLTE5MCw3ICsx
OTIsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgSW5zdCYgaW5zdCA9IG1fYmxvY2stPmF0
KG1faW5zdEluZGV4KTsKIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEFpckZp
eE9idmlvdXNTcGlsbHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkZp
eGluZyBpbnN0ICIsIGluc3QsICI6ICIsIG1fc3RhdGUsICJcbiIpOwogICAgICAgICAKICAgICAg
ICAgLy8gQ2hlY2sgaWYgYWxpYXMgYW5hbHlzaXMgc2F5cyB0aGF0IHRoaXMgaXMgdW5uZWNlc3Nh
cnkuCkBAIC0yNjcsMTMgKzI2OSwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2Ug
V2lkdGg2NDoKICAgICAgICAgICAgICAgICAgICAgaWYgKGFsaWFzLT5tb2RlICE9IFJlZ1Nsb3Q6
OkFsbEJpdHMpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoQWlyRml4T2J2aW91
c1NwaWxsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiICAgIFJlcGxhY2luZyAiLCBhcmcsICIgd2l0aCAiLCBhbGlhcy0+cmVnLCAiXG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgYXJnID0gVG1wKGFsaWFzLT5yZWcpOwogICAgICAgICAgICAgICAg
ICAgICBkaWRUaGluZ3MgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICAgICAgY2FzZSBXaWR0aDMyOgotICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9z
ZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKEFpckZpeE9idmlvdXNTcGlsbHNJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBSZXBsYWNpbmcg
IiwgYXJnLCAiIHdpdGggIiwgYWxpYXMtPnJlZywgIiAoc3Vid2lkdGggY2FzZSlcbiIpOwogICAg
ICAgICAgICAgICAgICAgICBhcmcgPSBUbXAoYWxpYXMtPnJlZyk7CiAgICAgICAgICAgICAgICAg
ICAgIGRpZFRoaW5ncyA9IHRydWU7CkBAIC0yODUsNyArMjg3LDcgQEAgcHJpdmF0ZToKIAogICAg
ICAgICAgICAgLy8gUmV2ZXJ0IHRvIGltbWVkaWF0ZSBpZiB0aGF0IGRpZG4ndCB3b3JrLgogICAg
ICAgICAgICAgaWYgKGNvbnN0IFNsb3RDb25zdCogYWxpYXMgPSBtX3N0YXRlLmdldFNsb3RDb25z
dChhcmcuc3RhY2tTbG90KCkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgICAgICAgICAgaWYgKEFpckZpeE9idmlvdXNTcGlsbHNJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIFJlcGxhY2luZyAiLCBhcmcsICIgd2l0aCBj
b25zdGFudCAiLCBhbGlhcy0+Y29uc3RhbnQsICJcbiIpOwogICAgICAgICAgICAgICAgIGlmIChB
cmc6OmlzVmFsaWRJbW1Gb3JtKGFsaWFzLT5jb25zdGFudCkpCiAgICAgICAgICAgICAgICAgICAg
IGFyZyA9IEFyZzo6aW1tKGFsaWFzLT5jb25zdGFudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyQWZ0ZXJSZWdBbGxvYy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyQWZ0ZXJSZWdBbGxvYy5jcHAKaW5kZXggMWZhMDUz
ZGI5Y2E3ZmM0YzM4NmZiMTkzNzE1MjI1NWJlZWQ3MTM5Yi4uYmZlZjNiM2Y0ZjExYTU5YTIxZDJi
ODFjY2UxOTI1YmNkODFlNTRlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcApAQCAtNDYsNyArNDYsOSBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CiAKIG5hbWVzcGFjZSB7
CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEFpckxvd2VyQWZ0ZXJSZWdBbGxv
Y0ludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KICAgICAK
IH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCkBAIC01NCw3ICs1Niw3IEBAIHZvaWQgbG93ZXJB
ZnRlclJlZ0FsbG9jKENvZGUmIGNvZGUpCiB7CiAgICAgUGhhc2VTY29wZSBwaGFzZVNjb3BlKGNv
ZGUsICJsb3dlckFmdGVyUmVnQWxsb2MiKTsKIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChB
aXJMb3dlckFmdGVyUmVnQWxsb2NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygi
Q29kZSBiZWZvcmUgbG93ZXJBZnRlclJlZ0FsbG9jOlxuIiwgY29kZSk7CiAgICAgCiAgICAgYXV0
byBpc1JlbGV2YW50ID0gW10gKEluc3QmIGluc3QpIC0+IGJvb2wgewpAQCAtMjIxLDcgKzIyMyw3
IEBAIHZvaWQgbG93ZXJBZnRlclJlZ0FsbG9jKENvZGUmIGNvZGUpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGFja1Nsb3RzLmFwcGVuZChzdGFja1Nsb3QpOwogICAgICAgICAgICAgICAgICAg
ICB9KTsKIAotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlm
IChBaXJMb3dlckFmdGVyUmVnQWxsb2NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiUHJlLWNhbGwgcGFpcnMgZm9yICIsIGluc3QsICI6ICIsIGxpc3REdW1w
KHBhaXJzKSwgIlxuIik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaW5zZXJ0
aW9uU2V0Lmluc2VydEluc3RzKApAQCAtMjczLDcgKzI3NSw3IEBAIHZvaWQgbG93ZXJBZnRlclJl
Z0FsbG9jKENvZGUmIGNvZGUpCiAgICAgICAgICAgICB9KTsKICAgICB9CiAKLSAgICBpZiAodmVy
Ym9zZSkKKyAgICBpZiAoQWlyTG93ZXJBZnRlclJlZ0FsbG9jSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgIGRhdGFMb2coIkNvZGUgYWZ0ZXIgbG93ZXJBZnRlclJlZ0FsbG9jOlxuIiwgY29kZSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3RhY2tB
bGxvY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3RhY2tBbGxv
Y2F0aW9uLmNwcAppbmRleCAzOTIyMjNjYTg4NTgwNWM1Zjk2ZDJmYmI4ODM5ZDEyMDM5YzY2Y2Nm
Li42YjZhMjZhZTdlZmJiN2Q5ZjNmMmVhMWJlYTY2YmFlMzRkNThiNmY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclN0YWNrQWxsb2NhdGlvbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTdGFja0FsbG9jYXRpb24uY3BwCkBAIC0z
OCw3ICszOCw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWly
IHsKIAogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3Bh
Y2UgQWlyU3RhY2tBbGxvY2F0aW9uSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9z
ZSA9IGZhbHNlOworfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uPgogdm9pZCB1cGRh
dGVGcmFtZVNpemVCYXNlZE9uU3RhY2tTbG90c0ltcGwoQ29kZSYgY29kZSwgY29uc3QgQ29sbGVj
dGlvbiYgY29sbGVjdGlvbikKQEAgLTU0LDcgKzU2LDcgQEAgdm9pZCB1cGRhdGVGcmFtZVNpemVC
YXNlZE9uU3RhY2tTbG90c0ltcGwoQ29kZSYgY29kZSwgY29uc3QgQ29sbGVjdGlvbiYgY29sbGVj
dGkKIGJvb2wgYXR0ZW1wdEFzc2lnbm1lbnQoCiAgICAgU3RhY2tTbG90KiBzbG90LCBpbnRwdHJf
dCBvZmZzZXRGcm9tRlAsIGNvbnN0IFZlY3RvcjxTdGFja1Nsb3QqPiYgb3RoZXJTbG90cykKIHsK
LSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQWlyU3RhY2tBbGxvY2F0aW9uSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkF0dGVtcHRpbmcgdG8gYXNzaWduICIsIHBvaW50ZXJE
dW1wKHNsb3QpLCAiIHRvICIsIG9mZnNldEZyb21GUCwgIiB3aXRoIGludGVyZmVyZW5jZSAiLCBw
b2ludGVyTGlzdER1bXAob3RoZXJTbG90cyksICJcbiIpOwogCiAgICAgLy8gTmVlZCB0byBhbGln
biBpdCB0byB0aGUgc2xvdCdzIGRlc2lyZWQgYWxpZ25tZW50LgpAQCAtNzIsNyArNzQsNyBAQCBi
b29sIGF0dGVtcHRBc3NpZ25tZW50KAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChBaXJTdGFja0FsbG9jYXRpb25JbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQXNzaWduZWQgIiwgcG9pbnRlckR1bXAoc2xvdCks
ICIgdG8gIiwgb2Zmc2V0RnJvbUZQLCAiXG4iKTsKICAgICBzbG90LT5zZXRPZmZzZXRGcm9tRlAo
b2Zmc2V0RnJvbUZQKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTgwLDcgKzgyLDcgQEAgYm9vbCBh
dHRlbXB0QXNzaWdubWVudCgKIAogdm9pZCBhc3NpZ24oU3RhY2tTbG90KiBzbG90LCBjb25zdCBW
ZWN0b3I8U3RhY2tTbG90Kj4mIG90aGVyU2xvdHMpCiB7Ci0gICAgaWYgKHZlcmJvc2UpCisgICAg
aWYgKEFpclN0YWNrQWxsb2NhdGlvbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9n
KCJBdHRlbXB0aW5nIHRvIGFzc2lnbiAiLCBwb2ludGVyRHVtcChzbG90KSwgIiB3aXRoIGludGVy
ZmVyZW5jZSAiLCBwb2ludGVyTGlzdER1bXAob3RoZXJTbG90cyksICJcbiIpOwogICAgIAogICAg
IGlmIChhdHRlbXB0QXNzaWdubWVudChzbG90LCAtc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHNsb3Qt
PmJ5dGVTaXplKCkpLCBvdGhlclNsb3RzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCAzNWZmYmYxYWJhYjgyZWQ3ZjQ0NmI1NmI0ZWRjMTU1
YTQ5ZmVkOGQwLi40MTk4NjU1MDQ3NDQzODc3ZWNhNjEzMGNjZmZhN2E1YWEyM2Y4NGE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC01MSw3
ICs1MSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCituYW1lc3BhY2UgQWNjZXNzQ2FzZUludGVy
bmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogQWNjZXNzQ2Fz
ZTo6QWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCkKICAgICA6IG1fdHlwZSh0eXBlKQpAQCAt
NDA4LDcgKzQxMCw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGUoQWNjZXNzR2VuZXJhdGlv
blN0YXRlJiBzdGF0ZSkKIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVy
YXRpb25TdGF0ZSYgc3RhdGUpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVy
U2NvcGUoZmFsc2UpOwotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChBY2Nlc3NDYXNlSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIlxuXG5HZW5lcmF0aW5nIGNvZGUgZm9yOiAi
LCAqdGhpcywgIlxuIik7CiAKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBHZW5lcmF0ZWQpOyAvLyBX
ZSByZWx5IG9uIHRoZSBjYWxsZXJzIHNldHRpbmcgdGhpcyBmb3IgdXMuCkBAIC03OTAsMTEgKzc5
MiwxMSBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGUmIHN0YXRlKQogCiAgICAgY2FzZSBSZXBsYWNlOiB7CiAgICAgICAgIGlmIChJbmZlcnJlZFR5
cGUqIHR5cGUgPSBzdHJ1Y3R1cmUoKS0+aW5mZXJyZWRUeXBlRm9yKGlkZW50LmltcGwoKSkpIHsK
LSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEFjY2Vzc0Nhc2VJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJIYXZlIHR5cGU6ICIsIHR5
cGUtPmRlc2NyaXB0b3IoKSwgIlxuIik7CiAgICAgICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRj
aC5hcHBlbmQoCiAgICAgICAgICAgICAgICAgaml0LmJyYW5jaElmTm90VHlwZSh2YWx1ZVJlZ3Ms
IHNjcmF0Y2hHUFIsIHR5cGUtPmRlc2NyaXB0b3IoKSkpOwotICAgICAgICB9IGVsc2UgaWYgKHZl
cmJvc2UpCisgICAgICAgIH0gZWxzZSBpZiAoQWNjZXNzQ2FzZUludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgZGF0YUxvZygiRG9uJ3QgaGF2ZSB0eXBlLlxuIik7CiAKICAgICAgICAgaWYg
KGlzSW5saW5lT2Zmc2V0KG1fb2Zmc2V0KSkgewpAQCAtODIwLDExICs4MjIsMTEgQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gNiB8fCAh
c3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgfHwgc3RydWN0dXJlKCktPm91dE9mTGlu
ZUNhcGFjaXR5KCkgPT0gbmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkpOwogCiAg
ICAgICAgIGlmIChJbmZlcnJlZFR5cGUqIHR5cGUgPSBuZXdTdHJ1Y3R1cmUoKS0+aW5mZXJyZWRU
eXBlRm9yKGlkZW50LmltcGwoKSkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgaWYgKEFjY2Vzc0Nhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBk
YXRhTG9nKCJIYXZlIHR5cGU6ICIsIHR5cGUtPmRlc2NyaXB0b3IoKSwgIlxuIik7CiAgICAgICAg
ICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoCiAgICAgICAgICAgICAgICAgaml0LmJy
YW5jaElmTm90VHlwZSh2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIHR5cGUtPmRlc2NyaXB0b3IoKSkp
OwotICAgICAgICB9IGVsc2UgaWYgKHZlcmJvc2UpCisgICAgICAgIH0gZWxzZSBpZiAoQWNjZXNz
Q2FzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiRG9uJ3QgaGF2ZSB0
eXBlLlxuIik7CiAKICAgICAgICAgLy8gTk9URTogVGhpcyBsb2dpYyBpcyBkdXBsaWNhdGVkIGlu
IEFjY2Vzc0Nhc2U6OmRvZXNDYWxscygpLiBJdCdzIGltcG9ydGFudCB0aGF0IGRvZXNDYWxscygp
IGtub3dzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmNwcAppbmRleCBmMzRjMjc0MjA1M2NiMjkzZGFhNWMxNjM4NjZiZmFjNGEwMjI1Njk4Li41
M2I4NGQ5YzAzN2UxN2Y2YWU5M2RjODU1MTkyNzg4YjYzZTY3YWVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKQEAgLTM4LDcgKzM4
LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK25hbWVzcGFjZSBDYWxsTGlua1N0YXR1c0ludGVy
bmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogQ2FsbExpbmtT
dGF0dXM6OkNhbGxMaW5rU3RhdHVzKEpTVmFsdWUgdmFsdWUpCiAgICAgOiBtX2NvdWxkVGFrZVNs
b3dQYXRoKGZhbHNlKQpAQCAtMjg5LDcgKzI5MSw3IEBAIHZvaWQgQ2FsbExpbmtTdGF0dXM6OmNv
bXB1dGVERkdTdGF0dXNlcygKICAgICBVTlVTRURfUEFSQU0oZGZnQ29kZUJsb2NrKTsKICNlbmRp
ZiAvLyBFTkFCTEUoREZHX0pJVCkKICAgICAKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChD
YWxsTGlua1N0YXR1c0ludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2coIkNvbnRl
eHQgbWFwOlxuIik7CiAgICAgICAgIENvbnRleHRNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtYXAuYmVn
aW4oKTsKICAgICAgICAgQ29udGV4dE1hcDo6aXRlcmF0b3IgZW5kID0gbWFwLmVuZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vz
c0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFj
Y2Vzc0Nhc2UuY3BwCmluZGV4IGM0ZGE4MGVjYzE5YzIxNDdlMmZhN2I1ZDk5Njg0Y2RmZWIyZTQ3
ODAuLjYwNjY5MWIzYjIwM2FlZTFhY2JhMjc0ZjQ1NWM0YjRlZWM3N2Y3ZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZS5jcHAKQEAgLTM4LDcgKzM4LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK25hbWVzcGFj
ZSBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlSW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVy
Ym9zZSA9IGZhbHNlOworfQogCiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpHZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBib29sIHZpYVByb3h5LCBXYXRjaHBv
aW50U2V0KiBhZGRpdGlvbmFsU2V0LCBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UpCiAgICAgOiBC
YXNlKHZtLCBvd25lciwgYWNjZXNzVHlwZSwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNl
dCwgdmlhUHJveHksIGFkZGl0aW9uYWxTZXQpCkBAIC0xODUsNyArMTg3LDcgQEAgdm9pZCBHZXR0
ZXJTZXR0ZXJBY2Nlc3NDYXNlOjplbWl0RE9NSklUR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0
ZSYgc3RhdGUsIGNvbnMKICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0
YXRlIHByZXNlcnZlZFN0YXRlID0KICAgICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3Rl
cnNCeVB1c2hpbmcoaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFj
ZTo6U3BhY2VGb3JDQ2FsbCk7CiAKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChHZXR0ZXJT
ZXR0ZXJBY2Nlc3NDYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZGF0YUxvZygiYmFz
ZUdQUiA9ICIsIGJhc2VHUFIsICJcbiIpOwogICAgICAgICBkYXRhTG9nKCJ2YWx1ZVJlZ3MgPSAi
LCB2YWx1ZVJlZ3MsICJcbiIpOwogICAgICAgICBkYXRhTG9nKCJzY3JhdGNoR1BSID0gIiwgc2Ny
YXRjaEdQUiwgIlxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcAppbmRleCA2MTllYTVkOWNi
NDdiMWYxOTViMGU4YjQ3ZDU5OTZjYTg1OWMzNGVmLi45Njc5NTIzNzc4OGNjMTk2NTA3NDFiZGNm
NjlhZTQ3Y2QyOGRhNGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAKQEAgLTE4MiwxMyAr
MTgyLDE1IEBAIGJvb2wgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmlzVmFsaWRBbmRXYXRj
aGFibGUoKSBjb25zdAogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsKK25h
bWVzcGFjZSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFsIHsKK3N0YXRpYyBjb25z
dCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogT2JqZWN0UHJvcGVydHlDb25kaXRpb24gZ2Vu
ZXJhdGVDb25kaXRpb24oCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBKU09iamVjdCogb2Jq
ZWN0LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBQcm9wZXJ0eUNvbmRpdGlvbjo6S2luZCBjb25k
aXRpb25LaW5kKQogewogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gb2JqZWN0LT5zdHJ1Y3R1
cmUoKTsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQ3JlYXRpbmcgY29uZGl0aW9u
ICIsIGNvbmRpdGlvbktpbmQsICIgZm9yICIsIHBvaW50ZXJEdW1wKHN0cnVjdHVyZSksICJcbiIp
OwogCiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gcmVzdWx0OwpAQCAtMjI2LDEyICsyMjgs
MTIgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gZ2VuZXJhdGVDb25kaXRpb24oCiAgICAgfQog
CiAgICAgaWYgKCFyZXN1bHQuaXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNo
cG9pbnQoKSkgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJG
YWlsZWQgdG8gY3JlYXRlIGNvbmRpdGlvbjogIiwgcmVzdWx0LCAiXG4iKTsKICAgICAgICAgcmV0
dXJuIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uKCk7CiAgICAgfQogCi0gICAgaWYgKHZlcmJvc2Up
CisgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgIGRhdGFMb2coIk5ldyBjb25kaXRpb246ICIsIHJlc3VsdCwgIlxuIik7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KQEAgLTI0OCwxMSArMjUwLDExIEBAIE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0IGdlbmVyYXRlQ29uZGl0aW9ucygKICAgICBWZWN0b3I8T2JqZWN0UHJvcGVydHlDb25k
aXRpb24+IGNvbmRpdGlvbnM7CiAgICAgCiAgICAgZm9yICg7OykgewotICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBzdHJ1Y3R1cmU6ICIsIHBv
aW50ZXJEdW1wKHN0cnVjdHVyZSksICJcbiIpOwogICAgICAgICAKICAgICAgICAgaWYgKHN0cnVj
dHVyZS0+aXNQcm94eSgpKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAg
IGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgICAgIGRhdGFMb2coIkl0J3MgYSBwcm94eSwgc28gaW52YWxpZC5cbiIpOwogICAgICAg
ICAgICAgcmV0dXJuIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjppbnZhbGlkKCk7CiAgICAg
ICAgIH0KQEAgLTI2MSwxMSArMjYzLDExIEBAIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGdl
bmVyYXRlQ29uZGl0aW9ucygKICAgICAgICAgCiAgICAgICAgIGlmICh2YWx1ZS5pc051bGwoKSkg
ewogICAgICAgICAgICAgaWYgKCFwcm90b3R5cGUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiUmVhY2hlZCBlbmQg
b2YgcHJvdG90eXBlIGNoYWluIGFzIGV4cGVjdGVkLCBkb25lLlxuIik7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgICAgIGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgICAgIGRhdGFMb2coIlVuZXhwZWN0ZWRseSByZWFjaGVkIGVuZCBvZiBwcm90
b3R5cGUgY2hhaW4sIHNvIGludmFsaWQuXG4iKTsKICAgICAgICAgICAgIHJldHVybiBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldDo6aW52YWxpZCgpOwogICAgICAgICB9CkBAIC0yNzYsMzUgKzI3
OCwzNSBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5lcmF0ZUNvbmRpdGlvbnMoCiAg
ICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7CiAgICAgICAgICAgICBpZiAo
Y29uY3VycmVuY3kgPT0gTWFpblRocmVhZCkgewogICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1
cmUtPmhhc0JlZW5GbGF0dGVuZWRCZWZvcmUoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJE
aWN0aW9uYXJ5IGhhcyBiZWVuIGZsYXR0ZW5lZCBiZWZvcmUsIHNvIGludmFsaWQuXG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjppbnZh
bGlkKCk7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkZsYXR0ZW5pbmcgIiwgcG9p
bnRlckR1bXAoc3RydWN0dXJlKSk7CiAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5mbGF0dGVu
RGljdGlvbmFyeVN0cnVjdHVyZSh2bSwgb2JqZWN0KTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2coIkNhbm5vdCBmbGF0dGVuIGRpY3Rpb25hcnkgd2hlbiBub3Qgb24gbWFpbiB0aHJl
YWQsIHNvIGludmFsaWQuXG4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQ6OmludmFsaWQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAg
ICAgICAgIGlmICghZnVuY3Rvcihjb25kaXRpb25zLCBvYmplY3QpKSB7Ci0gICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldElu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkZ1bmN0b3IgZmFpbGVk
LCBpbnZhbGlkLlxuIik7CiAgICAgICAgICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQ6OmludmFsaWQoKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG9iamVj
dCA9PSBwcm90b3R5cGUpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAg
aWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiUmVhY2hlZCBkZXNpcmVkIHByb3RvdHlwZSwgZG9uZS5cbiIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAodmVyYm9zZSkK
KyAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgZGF0YUxvZygiUmV0dXJuaW5nIGNvbmRpdGlvbnM6ICIsIGxpc3REdW1wKGNvbmRpdGlv
bnMpLCAiXG4iKTsKICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmNyZWF0
ZShjb25kaXRpb25zKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4IGZiMGI2YTlkOGMyZGRjOGZjM2Y5YzkxOTFk
YmYyMmI5YmQ0MDI5ODguLjQyMjgwYzVhZTZmNzZkYjY3MDNhNjAxNmQ1ODNjMWIwYTAxZGMzNWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0Fj
Y2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGlj
QWNjZXNzLmNwcApAQCAtNDQsNyArNDQsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFtZXNw
YWNlIFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9z
ZSA9IGZhbHNlOworfQogCiB2b2lkIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OmR1bXAoUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKIHsKQEAgLTI0Nyw3ICsyNDksNyBAQCBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcygKICAgICAgICAgY2FzZXNUb0FkZC5h
cHBlbmQoV1RGTW92ZShteUNhc2UpKTsKICAgICB9CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBp
ZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygi
Y2FzZXNUb0FkZDogIiwgbGlzdER1bXAoY2FzZXNUb0FkZCksICJcbiIpOwogCiAgICAgLy8gSWYg
dGhlcmUgYXJlbid0IGFueSBjYXNlcyB0byBhZGQsIHRoZW4gZmFpbCBvbiB0aGUgZ3JvdW5kcyB0
aGF0IHRoZXJlJ3Mgbm8gcG9pbnQgdG8gZ2VuZXJhdGluZyBhCkBAIC0yNjMsNyArMjY1LDcgQEAg
QWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMoCiAgICAg
ICAgIG1fbGlzdC5hcHBlbmQoV1RGTW92ZShjYXNlVG9BZGQpKTsKICAgICB9CiAgICAgCi0gICAg
aWYgKHZlcmJvc2UpCisgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgIGRhdGFMb2coIkFmdGVyIGFkZENhc2VzOiBtX2xpc3Q6ICIsIGxpc3REdW1wKG1f
bGlzdCksICJcbiIpOwogCiAgICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkJ1ZmZl
cmVkOwpAQCAtMzM0LDcgKzMzNiw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBo
aWNBY2Nlc3M6OnJlZ2VuZXJhdGUoCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1w
bGVyU2NvcGUoZmFsc2UpOwogICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChQb2x5bW9y
cGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJSZWdlbmVyYXRl
IHdpdGggbV9saXN0OiAiLCBsaXN0RHVtcChtX2xpc3QpLCAiXG4iKTsKICAgICAKICAgICBBY2Nl
c3NHZW5lcmF0aW9uU3RhdGUgc3RhdGUodm0pOwpAQCAtNDAyLDcgKzQwNCw3IEBAIEFjY2Vzc0dl
bmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoCiAgICAgfQogICAg
IG1fbGlzdC5yZXNpemUoZHN0SW5kZXgpOwogICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlm
IChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJP
cHRpbWl6ZWQgY2FzZXM6ICIsIGxpc3REdW1wKGNhc2VzKSwgIlxuIik7CiAgICAgCiAgICAgLy8g
QXQgdGhpcyBwb2ludCB3ZSdyZSBjb252aW5jZWQgdGhhdCAnY2FzZXMnIGNvbnRhaW5zIHRoZSBj
YXNlcyB0aGF0IHdlIHdhbnQgdG8gSklUIG5vdyBhbmQgd2UKQEAgLTUxNyw3ICs1MTksNyBAQCBB
Y2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKAogCiAg
ICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNh
bkZhaWwpOwogICAgIGlmIChsaW5rQnVmZmVyLmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKLSAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiRGlkIGZhaWwgdG8gYWxsb2NhdGUuXG4iKTsK
ICAgICAgICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdhdmVVcDsKICAgICB9CkBA
IC01MjgsNyArNTMwLDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vz
czo6cmVnZW5lcmF0ZSgKIAogICAgIGxpbmtCdWZmZXIubGluayhmYWlsdXJlLCBzdHViSW5mby5z
bG93UGF0aFN0YXJ0TG9jYXRpb24oKSk7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYg
KFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coRnVs
bENvZGVPcmlnaW4oY29kZUJsb2NrLCBzdHViSW5mby5jb2RlT3JpZ2luKSwgIjogR2VuZXJhdGlu
ZyBwb2x5bW9ycGhpYyBhY2Nlc3Mgc3R1YiBmb3IgIiwgbGlzdER1bXAoY2FzZXMpLCAiXG4iKTsK
IAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlID0gRklOQUxJWkVfQ09ERV9GT1IoCkBA
IC01NDQsNyArNTQ2LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vz
czo6cmVnZW5lcmF0ZSgKICAgICBtX3dhdGNocG9pbnRzID0gV1RGTW92ZShzdGF0ZS53YXRjaHBv
aW50cyk7CiAgICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5pc0VtcHR5KCkpCiAgICAgICAg
IG1fd2Vha1JlZmVyZW5jZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxXcml0ZUJhcnJpZXI8
SlNDZWxsPj4+KFdURk1vdmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsKLSAgICBpZiAodmVyYm9z
ZSkKKyAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ZGF0YUxvZygiUmV0dXJuaW5nOiAiLCBjb2RlLmNvZGUoKSwgIlxuIik7CiAgICAgCiAgICAgbV9s
aXN0ID0gV1RGTW92ZShjYXNlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcAppbmRleCA0MjNiYzIxMGVkNDgzY2ExMTk3ZTM5
OWI1OTU1NDY2NmNkZjM5NWM5Li4wNzY0NGEzMDdmOWNmNGU5YzVmMzJhNzFjMTgxYzJiZjgzOTk1
NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvcGVydHlD
b25kaXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9wZXJ0
eUNvbmRpdGlvbi5jcHAKQEAgLTMyLDcgKzMyLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK25h
bWVzcGFjZSBQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsIHsKIHN0YXRpYyBib29sIHZlcmJvc2Ug
PSBmYWxzZTsKK30KIAogdm9pZCBQcm9wZXJ0eUNvbmRpdGlvbjo6ZHVtcEluQ29udGV4dChQcmlu
dFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKIHsKQEAgLTY1LDIwICs2
NywyMCBAQCB2b2lkIFByb3BlcnR5Q29uZGl0aW9uOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bnN0CiBib29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVBy
b3BlcnR5V2F0Y2hwb2ludCgKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIGJh
c2UpIGNvbnN0CiB7Ci0gICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoUHJvcGVydHlDb25kaXRp
b25JbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgIkRl
dGVybWluaW5nIHZhbGlkaXR5IG9mICIsICp0aGlzLCAiIHdpdGggc3RydWN0dXJlICIsIHBvaW50
ZXJEdW1wKHN0cnVjdHVyZSksICIgYW5kIGJhc2UgIiwKICAgICAgICAgICAgIEpTVmFsdWUoYmFz
ZSksICIgYXNzdW1pbmcgaW1wdXJlIHByb3BlcnR5IHdhdGNocG9pbnRzIGFyZSBzZXQuXG4iKTsK
ICAgICB9CiAgICAgCiAgICAgaWYgKCEqdGhpcykgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgaWYgKFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICBkYXRhTG9nKCJJbnZhbGlkIGJlY2F1c2UgdW5zZXQuXG4iKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICAKICAgICBpZiAoIXN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0Fy
ZUNhY2hlYWJsZSgpKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoUHJvcGVy
dHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkludmFs
aWQgYmVjYXVzZSBhY2Nlc3NlcyBhcmUgbm90IGNhY2hlYWJsZS5cbiIpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQpAQCAtODgsNyArOTAsNyBAQCBib29sIFByb3BlcnR5Q29uZGl0aW9u
Ojppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgKICAgICAgICAg
dW5zaWduZWQgY3VycmVudEF0dHJpYnV0ZXM7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IGN1cnJl
bnRPZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSh1aWQoKSwgY3VycmVudEF0dHJp
YnV0ZXMpOwogICAgICAgICBpZiAoY3VycmVudE9mZnNldCAhPSBvZmZzZXQoKSB8fCBjdXJyZW50
QXR0cmlidXRlcyAhPSBhdHRyaWJ1dGVzKCkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7
CisgICAgICAgICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkgewog
ICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGJl
Y2F1c2Ugd2UgbmVlZCBvZmZzZXQsIGF0dHJpYnV0ZXMgdG8gYmUgIiwgb2Zmc2V0KCksICIsICIs
IGF0dHJpYnV0ZXMoKSwKICAgICAgICAgICAgICAgICAgICAgIiBidXQgdGhleSBhcmUgIiwgY3Vy
cmVudE9mZnNldCwgIiwgIiwgY3VycmVudEF0dHJpYnV0ZXMsICJcbiIpOwpAQCAtMTAwLDIwICsx
MDIsMjAgQEAgYm9vbCBQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1
cmVQcm9wZXJ0eVdhdGNocG9pbnQoCiAgICAgICAgIAogICAgIGNhc2UgQWJzZW5jZTogewogICAg
ICAgICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgewotICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJJbnZhbGlkIGJlY2F1c2UgaXQncyBhIGRpY3Rp
b25hcnkuXG4iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAg
ICAgIFByb3BlcnR5T2Zmc2V0IGN1cnJlbnRPZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJl
bnRseSh1aWQoKSk7CiAgICAgICAgIGlmIChjdXJyZW50T2Zmc2V0ICE9IGludmFsaWRPZmZzZXQp
IHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKFByb3BlcnR5Q29u
ZGl0aW9uSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiSW52YWxp
ZCBiZWNhdXNlIHRoZSBwcm9wZXJ0eSBleGlzdHMgYXQgb2Zmc2V0OiAiLCBjdXJyZW50T2Zmc2V0
LCAiXG4iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgaWYgKHN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkgIT0gcHJvdG90
eXBlKCkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICBpZiAoUHJv
cGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgIGRhdGFM
b2coCiAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGJlY2F1c2UgdGhlIHByb3RvdHlwZSBp
cyAiLCBzdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZSgpLCAiIGV2ZW4gdGhvdWdoICIKICAgICAg
ICAgICAgICAgICAgICAgIml0IHNob3VsZCBoYXZlIGJlZW4gIiwgSlNWYWx1ZShwcm90b3R5cGUo
KSksICJcbiIpOwpAQCAtMTI2LDcgKzEyOCw3IEBAIGJvb2wgUHJvcGVydHlDb25kaXRpb246Omlz
U3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KAogICAgIAogICAgIGNh
c2UgQWJzZW5jZU9mU2V0RWZmZWN0OiB7CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlv
bmFyeSgpKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChQcm9w
ZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2co
IkludmFsaWQgYmVjYXVzZSBpdCdzIGEgZGljdGlvbmFyeS5cbiIpOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0xMzUsNyArMTM3LDcgQEAgYm9vbCBQcm9wZXJ0eUNv
bmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoCiAg
ICAgICAgIFByb3BlcnR5T2Zmc2V0IGN1cnJlbnRPZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1
cnJlbnRseSh1aWQoKSwgY3VycmVudEF0dHJpYnV0ZXMpOwogICAgICAgICBpZiAoY3VycmVudE9m
ZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAoY3VycmVudEF0dHJpYnV0
ZXMgJiAoUmVhZE9ubHkgfCBBY2Nlc3NvciB8IEN1c3RvbUFjY2Vzc29yKSkgewotICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgaWYgKFByb3BlcnR5Q29uZGl0
aW9uSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAg
ICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGJlY2F1c2Ugd2UgZXhwZWN0ZWQgbm90IHRv
IGhhdmUgYSBzZXR0ZXIsIGJ1dCB3ZSBoYXZlIG9uZSBhdCBvZmZzZXQgIiwKICAgICAgICAgICAg
ICAgICAgICAgICAgIGN1cnJlbnRPZmZzZXQsICIgd2l0aCBhdHRyaWJ1dGVzICIsIGN1cnJlbnRB
dHRyaWJ1dGVzLCAiXG4iKTsKQEAgLTE0NSw3ICsxNDcsNyBAQCBib29sIFByb3BlcnR5Q29uZGl0
aW9uOjppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlT2Jq
ZWN0KCkgIT0gcHJvdG90eXBlKCkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAg
ICAgICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAg
ICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGJlY2F1c2Ug
dGhlIHByb3RvdHlwZSBpcyAiLCBzdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZSgpLCAiIGV2ZW4g
dGhvdWdoICIKICAgICAgICAgICAgICAgICAgICAgIml0IHNob3VsZCBoYXZlIGJlZW4gIiwgSlNW
YWx1ZShwcm90b3R5cGUoKSksICJcbiIpOwpAQCAtMTYwLDcgKzE2Miw3IEBAIGJvb2wgUHJvcGVy
dHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50
KAogICAgICAgICBpZiAoIWJhc2UgfHwgYmFzZS0+c3RydWN0dXJlKCkgIT0gc3RydWN0dXJlKSB7
CiAgICAgICAgICAgICAvLyBDb25zZXJ2YXRpdmVseSByZXR1cm4gZmFsc2UsIHNpbmNlIHdlIGNh
bm5vdCB2ZXJpZnkgdGhpcyBvbmUgd2l0aG91dCBoYXZpbmcgdGhlCiAgICAgICAgICAgICAvLyBv
YmplY3QuCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgaWYgKFByb3Bl
cnR5Q29uZGl0aW9uSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICBkYXRhTG9n
KAogICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBiZWNhdXNlIHdlIGRvbid0IGhhdmUgYSBi
YXNlIG9yIHRoZSBiYXNlIGhhcyB0aGUgd3Jvbmcgc3RydWN0dXJlOiAiLAogICAgICAgICAgICAg
ICAgICAgICBSYXdQb2ludGVyKGJhc2UpLCAiXG4iKTsKQEAgLTE3Myw3ICsxNzUsNyBAQCBib29s
IFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0
Y2hwb2ludCgKICAgICAgICAgCiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IGN1cnJlbnRPZmZzZXQg
PSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSh1aWQoKSk7CiAgICAgICAgIGlmIChjdXJyZW50
T2Zmc2V0ID09IGludmFsaWRPZmZzZXQpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7Cisg
ICAgICAgICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkgewogICAg
ICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGJlY2F1
c2UgdGhlIGJhc2Ugbm8gbG9uZyBhcHBlYXJzIHRvIGhhdmUgIiwgdWlkKCksICIgb24gaXRzIHN0
cnVjdHVyZTogIiwKICAgICAgICAgICAgICAgICAgICAgICAgIFJhd1BvaW50ZXIoYmFzZSksICJc
biIpOwpAQCAtMTgzLDcgKzE4NSw3IEBAIGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxW
YWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KAogCiAgICAgICAgIEpTVmFsdWUg
Y3VycmVudFZhbHVlID0gYmFzZS0+Z2V0RGlyZWN0KGN1cnJlbnRPZmZzZXQpOwogICAgICAgICBp
ZiAoY3VycmVudFZhbHVlICE9IHJlcXVpcmVkVmFsdWUoKSkgewotICAgICAgICAgICAgaWYgKHZl
cmJvc2UpIHsKKyAgICAgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJi
b3NlKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgIklu
dmFsaWQgYmVjYXVzZSB0aGUgdmFsdWUgaXMgIiwgY3VycmVudFZhbHVlLCAiIGJ1dCB3ZSByZXF1
aXJlICIsIHJlcXVpcmVkVmFsdWUoKSwKICAgICAgICAgICAgICAgICAgICAgIlxuIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNw
cAppbmRleCAyMTg3NzUxNzZmMjc3ZTM2NjhkYzEyZGViNjY2NWRhMTRlNDdkMWI3Li4zZTNiZjI0
M2FhOTVhMjkzZWIyNmFkYzI4NWFhOTk2MDYwZTg5ZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTM1LDcgKzM1
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBFTkFCTEUoSklUKQogCituYW1lc3BhY2UgU3Ry
dWN0dXJlU3R1YkluZm9JbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFs
c2U7Cit9CiAKIFN0cnVjdHVyZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHViSW5mbyhBY2Nlc3NUeXBl
IGFjY2Vzc1R5cGUpCiAgICAgOiBjYWxsU2l0ZUluZGV4KFVJTlRfTUFYKQpAQCAtMTE1LDcgKzEx
Nyw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vz
c0Nhc2UoCiB7CiAgICAgVk0mIHZtID0gKmNvZGVCbG9jay0+dm0oKTsKICAgICAKLSAgICBpZiAo
dmVyYm9zZSkKKyAgICBpZiAoU3RydWN0dXJlU3R1YkluZm9JbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgZGF0YUxvZygiQWRkaW5nIGFjY2VzcyBjYXNlOiAiLCBhY2Nlc3NDYXNlLCAiXG4iKTsK
ICAgICAKICAgICBpZiAoIWFjY2Vzc0Nhc2UpCkBAIC0xMjYsNyArMTI4LDcgQEAgQWNjZXNzR2Vu
ZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgKICAgICBpZiAo
Y2FjaGVUeXBlID09IENhY2hlVHlwZTo6U3R1YikgewogICAgICAgICByZXN1bHQgPSB1LnN0dWIt
PmFkZENhc2UobG9ja2VyLCB2bSwgY29kZUJsb2NrLCAqdGhpcywgaWRlbnQsIFdURk1vdmUoYWNj
ZXNzQ2FzZSkpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChT
dHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygi
SGFkIHN0dWIsIHJlc3VsdDogIiwgcmVzdWx0LCAiXG4iKTsKIAogICAgICAgICBpZiAoIXJlc3Vs
dC5idWZmZXJlZCgpKSB7CkBAIC0xNDcsNyArMTQ5LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3Vs
dCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgKICAgICAgICAgCiAgICAgICAgIHJl
c3VsdCA9IGFjY2Vzcy0+YWRkQ2FzZXMobG9ja2VyLCB2bSwgY29kZUJsb2NrLCAqdGhpcywgaWRl
bnQsIFdURk1vdmUoYWNjZXNzQ2FzZXMpKTsKICAgICAgICAgCi0gICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICBpZiAoU3RydWN0dXJlU3R1YkluZm9JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgIGRhdGFMb2coIkNyZWF0ZWQgc3R1YiwgcmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOwog
CiAgICAgICAgIGlmICghcmVzdWx0LmJ1ZmZlcmVkKCkpIHsKQEAgLTE2NCw3ICsxNjYsNyBAQCBB
Y2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAog
ICAgIC8vIElmIHdlIGRpZG4ndCBidWZmZXIgYW55IGNhc2VzIHRoZW4gYmFpbC4gSWYgdGhpcyBt
YWRlIG5vIGNoYW5nZXMgdGhlbiB3ZSdsbCBqdXN0IHRyeSBhZ2FpbgogICAgIC8vIHN1YmplY3Qg
dG8gY29vbC1kb3duLgogICAgIGlmICghcmVzdWx0LmJ1ZmZlcmVkKCkpIHsKLSAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgZGF0YUxvZygiRGlkbid0IGJ1ZmZlciBhbnl0aGluZywgYmFpbGluZy5c
biIpOwogICAgICAgICBidWZmZXJlZFN0cnVjdHVyZXMuY2xlYXIoKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKQEAgLTE3Miw3ICsxNzQsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVj
dHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAogICAgIAogICAgIC8vIFRoZSBidWZmZXJpbmcg
Y291bnRkb3duIHRlbGxzIHVzIGlmIHdlIHNob3VsZCBiZSByZXBhdGNoaW5nIG5vdy4KICAgICBp
ZiAoYnVmZmVyaW5nQ291bnRkb3duKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBp
ZiAoU3RydWN0dXJlU3R1YkluZm9JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFM
b2coIkNvdW50ZG93biBpcyB0b28gaGlnaDogIiwgYnVmZmVyaW5nQ291bnRkb3duLCAiLlxuIik7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMTgzLDcgKzE4NSw3IEBAIEFjY2Vz
c0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAgICAg
CiAgICAgcmVzdWx0ID0gdS5zdHViLT5yZWdlbmVyYXRlKGxvY2tlciwgdm0sIGNvZGVCbG9jaywg
KnRoaXMsIGlkZW50KTsKICAgICAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoU3RydWN0dXJl
U3R1YkluZm9JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiUmVnZW5lcmF0aW9u
IHJlc3VsdDogIiwgcmVzdWx0LCAiXG4iKTsKICAgICAKICAgICBSRUxFQVNFX0FTU0VSVCghcmVz
dWx0LmJ1ZmZlcmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKaW5kZXggYzNjZjgyOWRlY2UyZDUy
NzM5MTA5ODI2YmU4YzFjMTkwMjk4ZjBiMC4uZmI5YjU2MGUyMjU3MTQ5ZWI3MjgwYTE3YTlkYWE4
ZWJlZGQxNDMzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1
bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC01MCw3ICs1MCw5IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAotYm9vbCB2ZXJib3Nl
ID0gZmFsc2U7CituYW1lc3BhY2UgREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZUludGVybmFs
IHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogY2xhc3MgQXJndW1l
bnRzRWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJsaWM6CkBAIC02NSw3ICs2
Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdmVyc2lvbiBvdmVyIExvYWRTdG9yZS4KICAgICAg
ICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwog
ICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR0FyZ3VtZW50
c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxv
ZygiR3JhcGggYmVmb3JlIGFyZ3VtZW50cyBlbGltaW5hdGlvbjpcbiIpOwogICAgICAgICAgICAg
bV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KQEAgLTE1Nyw3ICsxNTksNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgIGRhdGFMb2coIkNhbmRpZGF0ZXM6ICIsIGxpc3REdW1wKG1fY2FuZGlk
YXRlcyksICJcbiIpOwogICAgIH0KIApAQCAtMjEwLDcgKzIxMiw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCB0cmFuc2l0aXZlbHlSZW1vdmVDYW5kaWRhdGUoTm9kZSogbm9kZSwgTm9kZSogc291cmNl
ID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGJvb2wgcmVtb3ZlZCA9IG1fY2FuZGlkYXRlcy5y
ZW1vdmUobm9kZSk7Ci0gICAgICAgIGlmIChyZW1vdmVkICYmIHZlcmJvc2UgJiYgc291cmNlKQor
ICAgICAgICBpZiAocmVtb3ZlZCAmJiBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlSW50ZXJu
YWw6OnZlcmJvc2UgJiYgc291cmNlKQogICAgICAgICAgICAgZGF0YUxvZygiZWxpbWluYXRpbmcg
Y2FuZGlkYXRlOiAiLCBub2RlLCAiIGJlY2F1c2UgaXQgZXNjYXBlcyBmcm9tOiAiLCBzb3VyY2Us
ICJcbiIpOwogCiAgICAgICAgIGlmIChyZW1vdmVkKQpAQCAtNDE3LDcgKzQxOSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgICAgIGRhdGFMb2coIkFmdGVyIGVzY2FwZSBhbmFseXNpczogIiwgbGlzdER1bXAo
bV9jYW5kaWRhdGVzKSwgIlxuIik7CiAgICAgfQogCkBAIC01MTgsNyArNTIwLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHRoaXMgYXJndW1lbnRzIGFsbG9jYXRpb24s
IGFuZCB3ZSdkIGhhdmUgdG8gZXhhbWluZSBldmVyeSBub2RlIGluIHRoZSBibG9jaywKICAgICAg
ICAgICAgICAgICAgICAgLy8gdGhlbiB3ZSBjYW4ganVzdCBlbGltaW5hdGUgdGhlIGNhbmRpZGF0
ZS4KICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGVJbmRleCA9PSBibG9jay0+c2l6ZSgpICYm
IGNhbmRpZGF0ZS0+b3duZXIgIT0gYmxvY2spIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1p
bmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCJlbGltaW5hdGluZyBjYW5kaWRhdGU6ICIsIGNhbmRpZGF0ZSwgIiBiZWNhdXNl
IGl0IGlzIGNsb2JiZXJlZCBieTogIiwgYmxvY2stPmF0KG5vZGVJbmRleCksICJcbiIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGl2ZWx5UmVtb3ZlQ2FuZGlkYXRlKGNhbmRpZGF0
ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01NDUsNyArNTQ3LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb09wQ2xvYmJlcml6ZSgpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZv
dW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
ZWxpbWluYXRpbmcgY2FuZGlkYXRlOiAiLCBjYW5kaWRhdGUsICIgYmVjYXVzZSBpdCBpcyBjbG9i
YmVyZWQgYnkgIiwgYmxvY2stPmF0KG5vZGVJbmRleCksICJcbiIpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRyYW5zaXRpdmVseVJlbW92ZUNhbmRpZGF0ZShjYW5kaWRhdGUpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTU2Nyw3ICs1NjksNyBAQCBwcml2
YXRlOgogICAgICAgICAvLyBzaW5jZSB0aG9zZSBhdmFpbGFiaWxpdGllcyBzcGVhayBvZiB0aGUg
c3RhY2sgYmVmb3JlIHRoZSBvcHRpbWl6aW5nIGNvbXBpbGVyIHN0YWNrIGZyYW1lIGlzCiAgICAg
ICAgIC8vIHRvcm4gZG93bi4KIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERG
R0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
IGRhdGFMb2coIkFmdGVyIGludGVyZmVyZW5jZSBhbmFseXNpczogIiwgbGlzdER1bXAobV9jYW5k
aWRhdGVzKSwgIlxuIik7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBlOTdiMzg3M2IzN2JiNzcwMTM3OGNmZWVm
YzhiODA4NTFhMWU3OTUwLi44NmRhOTIwMTVlMjNjMThiMGJhNmMwNDQ0NTYxMmMwZWZiNmRkMGFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cApAQCAtNjgsMjIgKzY4LDE4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAog
bmFtZXNwYWNlIHsKIAotTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBORVZFUl9JTkxJTkUgdm9pZCBj
cmFzaCgpCi17Ci0gICAgQ1JBU0goKTsKLX0KLQotI3VuZGVmIFJFTEVBU0VfQVNTRVJUCi0jZGVm
aW5lIFJFTEVBU0VfQVNTRVJUKGFzc2VydGlvbikgZG8geyBcCisjZGVmaW5lIFBBUlNFUl9BU1NF
UlQoYXNzZXJ0aW9uLCAuLi4pIGRvIHsgICAgICAgICAgXAogICAgIGlmIChVTkxJS0VMWSghKGFz
c2VydGlvbikpKSB7IFwKICAgICAgICAgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShfX0ZJTEVf
XywgX19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJT04sICNhc3NlcnRpb24pOyBcCi0gICAgICAg
IGNyYXNoKCk7IFwKKyAgICAgICAgQ1JBU0hfV0lUSF9JTkZPKF9fVkFfQVJHU19fKTsgXAogICAg
IH0gXAogfSB3aGlsZSAoMCkKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKK25hbWVzcGFj
ZSBERkdCeXRlQ29kZVBhcnNlckludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2Ug
PSBmYWxzZTsKK30KIAogY2xhc3MgQ29uc3RhbnRCdWZmZXJLZXkgewogcHVibGljOgpAQCAtMTIx
MSw3ICsxMjA3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAg
ICAgICAgICAgICwgbV9zZXRNb2RlKHNldE1vZGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG9wZXJhbmQuaXNWYWxpZCgpKTsKKyAgICAgICAgICAgIFBBUlNFUl9BU1NF
UlQob3BlcmFuZC5pc1ZhbGlkKCkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBOb2Rl
KiBleGVjdXRlKEJ5dGVDb2RlUGFyc2VyKiBwYXJzZXIpCkBAIC0xNDMzLDE4ICsxNDI5LDE4IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRBcmd1bWVudFBoYW50b21zKGludCByZWdpc3Rlck9m
ZnNldCwgaW50IGFyZ3VtZW50Q291bnRJCiB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5p
bmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBDYWxsTW9kZSBjYWxsTW9kZSkKIHsKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQg
PSBzcGVjaWFsaXphdGlvbktpbmRGb3IoY2FsbE1vZGUpOwotICAgIGlmICh2ZXJib3NlKQorICAg
IGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9n
KCJDb25zaWRlcmluZyBpbmxpbmluZyAiLCBjYWxsZWUsICIgaW50byAiLCBjdXJyZW50Q29kZU9y
aWdpbigpLCAiXG4iKTsKICAgICAKICAgICBpZiAobV9oYXNEZWJ1Z2dlckVuYWJsZWQpIHsKLSAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGUg
ZGVidWdnZXIgaXMgaW4gdXNlLlxuIik7CiAgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9
CiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjYWxsZWUuZnVuY3Rpb25F
eGVjdXRhYmxlKCk7CiAgICAgaWYgKCFleGVjdXRhYmxlKSB7Ci0gICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlcmUgaXMgbm8gZnVuY3Rpb24g
ZXhlY3V0YWJsZS5cbiIpOwogICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQpAQCAtMTQ1
OCw3ICsxNDU0LDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxs
VmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5jbHUKICAgICAvLyBpdCdzIGEgcmFy
ZSBjYXNlIGJlY2F1c2Ugd2UgZXhwZWN0IHRoYXQgYW55IGhvdCBjYWxsZWVzIHdvdWxkIGhhdmUg
YWxyZWFkeSBiZWVuIGNvbXBpbGVkLgogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0
YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CiAgICAgaWYgKCFjb2RlQmxvY2spIHsK
LSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBu
byBjb2RlIGJsb2NrIGF2YWlsYWJsZS5cbiIpOwogICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAg
ICAgfQpAQCAtMTQ2NywxNCArMTQ2MywxNCBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5s
aW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNsdQogICAg
IC8vIGlubGluZSBvbmx5IGlmIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHBhc3NlZCBpcyBncmVh
dGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG51bWJlcgogICAgIC8vIGFyZ3VtZW50cyBleHBlY3Rl
ZC4KICAgICBpZiAoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPiBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcykgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVD
b2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFp
bGluZyBiZWNhdXNlIG9mIGFyaXR5IG1pc21hdGNoLlxuIik7CiAgICAgICAgIHJldHVybiBVSU5U
X01BWDsKICAgICB9CiAKICAgICBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsID0gaW5s
aW5lRnVuY3Rpb25Gb3JDYXBhYmlsaXR5TGV2ZWwoCiAgICAgICAgIGNvZGVCbG9jaywga2luZCwg
Y2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSk7Ci0gICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoREZH
Qnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICBkYXRhTG9nKCIgICAg
Q2FsbCBtb2RlOiAiLCBjYWxsTW9kZSwgIlxuIik7CiAgICAgICAgIGRhdGFMb2coIiAgICBJcyBj
bG9zdXJlIGNhbGw6ICIsIGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCksICJcbiIpOwogICAgICAgICBk
YXRhTG9nKCIgICAgQ2FwYWJpbGl0eSBsZXZlbDogIiwgY2FwYWJpbGl0eUxldmVsLCAiXG4iKTsK
QEAgLTE0ODQsNyArMTQ4MCw3IEBAIHVuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nv
c3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgYXJndW1lbnRDb3VudEluY2x1CiAgICAgICAgIGRh
dGFMb2coIiAgICBJcyBpbmxpbmluZyBjYW5kaWRhdGU6ICIsIGNvZGVCbG9jay0+b3duZXJTY3Jp
cHRFeGVjdXRhYmxlKCktPmlzSW5saW5pbmdDYW5kaWRhdGUoKSwgIlxuIik7CiAgICAgfQogICAg
IGlmICghY2FuSW5saW5lKGNhcGFiaWxpdHlMZXZlbCkpIHsKLSAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMgbm90IGlu
bGluZWFibGUuXG4iKTsKICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KQEAgLTE0OTQs
NyArMTQ5MCw3IEBAIHVuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZh
cmlhbnQgY2FsbGVlLCBpbnQgYXJndW1lbnRDb3VudEluY2x1CiAgICAgLy8gcHVycG9zZSBvZiB1
bnNldHRpbmcgU0FCSS4KICAgICBpZiAoIWlzU21hbGxFbm91Z2hUb0lubGluZUNvZGVJbnRvKG1f
Y29kZUJsb2NrKSkgewogICAgICAgICBjb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVk
ID0gZmFsc2U7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHQnl0ZUNvZGVQ
YXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5n
IGJlY2F1c2UgdGhlIGNhbGxlciBpcyB0b28gbGFyZ2UuXG4iKTsKICAgICAgICAgcmV0dXJuIFVJ
TlRfTUFYOwogICAgIH0KQEAgLTE1MTgsNyArMTUxNCw3IEBAIHVuc2lnbmVkIEJ5dGVDb2RlUGFy
c2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1CiAgICAgZm9yIChJbmxpbmVTdGFja0VudHJ5KiBlbnRyeSA9IG1faW5saW5lU3RhY2tUb3A7
IGVudHJ5OyBlbnRyeSA9IGVudHJ5LT5tX2NhbGxlcikgewogICAgICAgICArK2RlcHRoOwogICAg
ICAgICBpZiAoZGVwdGggPj0gT3B0aW9uczo6bWF4aW11bUlubGluaW5nRGVwdGgoKSkgewotICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBi
ZWNhdXNlIGRlcHRoIGV4Y2VlZGVkLlxuIik7CiAgICAgICAgICAgICByZXR1cm4gVUlOVF9NQVg7
CiAgICAgICAgIH0KQEAgLTE1MjYsMTQgKzE1MjIsMTQgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJz
ZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5j
bHUKICAgICAgICAgaWYgKGVudHJ5LT5leGVjdXRhYmxlKCkgPT0gZXhlY3V0YWJsZSkgewogICAg
ICAgICAgICAgKytyZWN1cnNpb247CiAgICAgICAgICAgICBpZiAocmVjdXJzaW9uID49IE9wdGlv
bnM6Om1heGltdW1JbmxpbmluZ1JlY3Vyc2lvbigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2Ug
cmVjdXJzaW9uIGRldGVjdGVkLlxuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFVJTlRfTUFY
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGlmICh2ZXJib3Nl
KQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBk
YXRhTG9nKCIgICAgSW5saW5pbmcgc2hvdWxkIGJlIHBvc3NpYmxlLlxuIik7CiAgICAgCiAgICAg
Ly8gSXQgbWlnaHQgYmUgcG9zc2libGUgdG8gaW5saW5lLgpAQCAtMTU4OSwxMSArMTU4NSwxMSBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBp
bnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcgogICAgIGlubGluZVZhcmlhYmxlRGF0YS5hcmd1bWVu
dFBvc2l0aW9uU3RhcnQgPSBhcmd1bWVudFBvc2l0aW9uU3RhcnQ7CiAgICAgaW5saW5lVmFyaWFi
bGVEYXRhLmNhbGxlZVZhcmlhYmxlID0gMDsKICAgICAKLSAgICBSRUxFQVNFX0FTU0VSVCgKKyAg
ICBQQVJTRVJfQVNTRVJUKAogICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxG
cmFtZS0+aXNDbG9zdXJlQ2FsbAogICAgICAgICA9PSBjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKTsK
ICAgICBpZiAoY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSkgewotICAgICAgICBSRUxFQVNFX0FTU0VS
VChjYWxsZWVWYXJpYWJsZSk7CisgICAgICAgIFBBUlNFUl9BU1NFUlQoY2FsbGVlVmFyaWFibGUp
OwogICAgICAgICBpbmxpbmVWYXJpYWJsZURhdGEuY2FsbGVlVmFyaWFibGUgPSBjYWxsZWVWYXJp
YWJsZTsKICAgICB9CiAgICAgCkBAIC0xNjQwLDcgKzE2MzYsNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwg
Q2FsbFZhcgogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgUmVwdXJwb3NpbmcgbGFz
dCBibG9jayBmcm9tICIsIGxhc3RCbG9jay0+Ynl0ZWNvZGVCZWdpbiwgIiB0byAiLCBtX2N1cnJl
bnRJbmRleCwgIlxuIik7CiAgICAgICAgICAgICBsYXN0QmxvY2stPmJ5dGVjb2RlQmVnaW4gPSBt
X2N1cnJlbnRJbmRleDsKICAgICAgICAgICAgIGlmIChjYWxsZXJMaW5rYWJpbGl0eSA9PSBDYWxs
ZXJEb2VzTm9ybWFsTGlua2luZykgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICAgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCJBZGRpbmcgdW5saW5rZWQgYmxvY2sgIiwgUmF3UG9p
bnRlcihtX2dyYXBoLmxhc3RCbG9jaygpKSwgIiAob25lIHJldHVybilcbiIpOwogICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmFwcGVu
ZChVbmxpbmtlZEJsb2NrKG1fZ3JhcGgubGFzdEJsb2NrKCkpKTsKICAgICAgICAgICAgIH0KQEAg
LTE2NzAsMTQgKzE2NjYsMTQgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2Rl
KiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXIKICAgICAgICAgQVNT
RVJUKCFub2RlLT50YXJnZXRCbG9jaygpKTsKICAgICAgICAgbm9kZS0+dGFyZ2V0QmxvY2soKSA9
IGJsb2NrLnB0cigpOwogICAgICAgICBpbmxpbmVTdGFja0VudHJ5Lm1fdW5saW5rZWRCbG9ja3Nb
aV0ubV9uZWVkc0Vhcmx5UmV0dXJuTGlua2luZyA9IGZhbHNlOwotICAgICAgICBpZiAodmVyYm9z
ZSkKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIoYmxvY2tUb0xpbmspLCAiIGFz
IGxpbmtlZCAoanVtcHMgdG8gcmV0dXJuKVxuIik7CiAgICAgICAgIGJsb2NrVG9MaW5rLT5kaWRM
aW5rKCk7CiAgICAgfQogICAgIAogICAgIG1fY3VycmVudEJsb2NrID0gYmxvY2sucHRyKCk7CiAg
ICAgQVNTRVJUKG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2luZ1Rhcmdl
dHMuaXNFbXB0eSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX2Jsb2NrTGlua2lu
Z1RhcmdldHMubGFzdCgpLT5ieXRlY29kZUJlZ2luIDwgbmV4dE9mZnNldCk7Ci0gICAgaWYgKHZl
cmJvc2UpCisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgIGRhdGFMb2coIkFkZGluZyB1bmxpbmtlZCBibG9jayAiLCBSYXdQb2ludGVyKGJsb2NrLnB0
cigpKSwgIiAobWFueSByZXR1cm5zKVxuIik7CiAgICAgaWYgKGNhbGxlckxpbmthYmlsaXR5ID09
IENhbGxlckRvZXNOb3JtYWxMaW5raW5nKSB7CiAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1f
Y2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLnB0cigp
KSk7CkBAIC0xNzEzLDcgKzE3MDksNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9J
bmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZAogICAgIGlm
ICghaW5saW5pbmdCYWxhbmNlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYg
KHZlcmJvc2UpCisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgIGRhdGFMb2coIiAgICBDb25zaWRlcmluZyBjYWxsZWUgIiwgY2FsbGVlLCAiXG4iKTsK
ICAgICAKICAgICAvLyBJbnRyaW5zaWNzIGFuZCBpbnRlcm5hbCBmdW5jdGlvbnMgY2FuIG9ubHkg
YmUgaW5saW5lZCBpZiB3ZSdyZSBub3QgZG9pbmcgdmFyYXJncy4gVGhpcyBpcyBiZWNhdXNlCkBA
IC0xNzMzLDQwICsxNzI5LDQwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lubGlu
ZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kCiAgICAgCiAgICAg
ICAgIGlmIChJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS5pbnRlcm5hbEZ1bmN0
aW9uKCkpIHsKICAgICAgICAgICAgIGlmIChoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24o
Y2FsbFRhcmdldE5vZGUsIHJlc3VsdE9wZXJhbmQsIGZ1bmN0aW9uLCByZWdpc3Rlck9mZnNldCwg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCwgcHJlZGljdGlv
biwgaW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7Ci0gICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKKyAgICAgICAgICAgICAgICBQQVJTRVJfQVNTRVJU
KGRpZEluc2VydENoZWNrcyk7CiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBj
YWxsVGFyZ2V0Tm9kZSk7CiAgICAgICAgICAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVn
aXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKICAgICAgICAgICAgICAg
ICBpbmxpbmluZ0JhbGFuY2UtLTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOwor
ICAgICAgICAgICAgUEFSU0VSX0FTU0VSVCghZGlkSW5zZXJ0Q2hlY2tzKTsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIAogICAgICAgICBJbnRyaW5zaWMgaW50cmlu
c2ljID0gY2FsbGVlLmludHJpbnNpY0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOwogICAgICAgICBp
ZiAoaW50cmluc2ljICE9IE5vSW50cmluc2ljKSB7CiAgICAgICAgICAgICBpZiAoaGFuZGxlSW50
cmluc2ljQ2FsbChjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFuZCwgaW50cmluc2ljLCByZWdp
c3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHByZWRpY3Rpb24sIGluc2Vy
dENoZWNrc1dpdGhBY2NvdW50aW5nKSkgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGRpZEluc2VydENoZWNrcyk7CisgICAgICAgICAgICAgICAgUEFSU0VSX0FTU0VSVChkaWRJbnNl
cnRDaGVja3MpOwogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdl
dE5vZGUpOwogICAgICAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zm
c2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAgICAgICAgICAgICAgaW5saW5p
bmdCYWxhbmNlLS07CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOworICAgICAg
ICAgICAgUEFSU0VSX0FTU0VSVCghZGlkSW5zZXJ0Q2hlY2tzKTsKICAgICAgICAgICAgIC8vIFdl
IG1pZ2h0IHN0aWxsIHRyeSB0byBpbmxpbmUgdGhlIEludHJpbnNpYyBiZWNhdXNlIGl0IG1pZ2h0
IGJlIGEgYnVpbHRpbiBKUyBmdW5jdGlvbi4KICAgICAgICAgfQogCiAgICAgICAgIGlmIChPcHRp
b25zOjp1c2VET01KSVQoKSkgewogICAgICAgICAgICAgaWYgKGNvbnN0IERPTUpJVDo6U2lnbmF0
dXJlKiBzaWduYXR1cmUgPSBjYWxsZWUuc2lnbmF0dXJlRm9yKHNwZWNpYWxpemF0aW9uS2luZCkp
IHsKICAgICAgICAgICAgICAgICBpZiAoaGFuZGxlRE9NSklUQ2FsbChjYWxsVGFyZ2V0Tm9kZSwg
cmVzdWx0T3BlcmFuZCwgc2lnbmF0dXJlLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIHByZWRpY3Rpb24sIGluc2VydENoZWNrc1dpdGhBY2NvdW50aW5nKSkgewot
ICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChkaWRJbnNlcnRDaGVja3MpOworICAg
ICAgICAgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKGRpZEluc2VydENoZWNrcyk7CiAgICAgICAg
ICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOwogICAgICAg
ICAgICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgICAgICAgICAgICAgICAgICBpbmxpbmluZ0JhbGFu
Y2UtLTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOworICAg
ICAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNzg4LDIxICsxNzg0LDIxIEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNB
cmd1bWVudCwgdW5zaWduZWQgYXJndW1lbnRzT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsCiAgICAgdW5zaWduZWQgbmV4dE9mZnNldCwgTm9kZVR5cGUgY2FsbE9wLCBJbmxp
bmVDYWxsRnJhbWU6OktpbmQga2luZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKIHsKLSAg
ICBpZiAodmVyYm9zZSkgeworICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJi
b3NlKSB7CiAgICAgICAgIGRhdGFMb2coIkhhbmRsaW5nIGlubGluaW5nLi4uXG4iKTsKICAgICAg
ICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOwogICAgIH0K
ICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IElubGluZUNh
bGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOwogICAgIAogICAgIGlmICghY2Fs
bExpbmtTdGF0dXMuc2l6ZSgpKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAo
REZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2co
IkJhaWxpbmcgaW5saW5pbmcuXG4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICAKICAgICBpZiAoSW5saW5lQ2FsbEZyYW1lOjppc1ZhcmFyZ3Moa2luZCkKICAgICAgICAgJiYg
Y2FsbExpbmtTdGF0dXMubWF4TnVtQXJndW1lbnRzKCkgPiBPcHRpb25zOjptYXhpbXVtVmFyYXJn
c0ZvcklubGluaW5nKCkpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdC
eXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQmFp
bGluZyBpbmxpbmluZyBiZWNhdXNlIG9mIHZhcmFyZ3MuXG4iKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KQEAgLTE5MjEsNyArMTkxNyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUlubGluaW5nKAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdC
eXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJE
b25lIGlubGluaW5nIChzaW1wbGUpLlxuIik7CiAgICAgICAgICAgICBkYXRhTG9nKCJTdGFjazog
IiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgICAgICAgICBkYXRhTG9nKCJSZXN1
bHQ6ICIsIHJlc3VsdCwgIlxuIik7CkBAIC0xOTM3LDcgKzE5MzMsNyBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICAvLyBhbHNvLgogICAgIGlmICghaXNGVEwobV9n
cmFwaC5tX3BsYW4ubW9kZSkgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQ2FsbElubGluaW5n
KCkKICAgICAgICAgfHwgSW5saW5lQ2FsbEZyYW1lOjppc1ZhcmFyZ3Moa2luZCkpIHsKLSAgICAg
ICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6
OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkJhaWxpbmcgaW5saW5pbmcgKGhhcmQp
LlxuIik7CiAgICAgICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4o
KSwgIlxuIik7CiAgICAgICAgIH0KQEAgLTE5NDksNyArMTk0NSw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgIC8vIGl0IGhhcyBubyBpZGVhLgogICAgIGlmICgh
T3B0aW9uczo6dXNlUG9seW1vcnBoaWNDYWxsSW5saW5pbmdGb3JOb25TdHViU3RhdHVzKCkKICAg
ICAgICAgJiYgIWNhbGxMaW5rU3RhdHVzLmlzQmFzZWRPblN0dWIoKSkgewotICAgICAgICBpZiAo
dmVyYm9zZSkgeworICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9z
ZSkgewogICAgICAgICAgICAgZGF0YUxvZygiQmFpbGluZyBpbmxpbmluZyAobm9uLXN0dWIgcG9s
eW1vcnBoaXNtKS5cbiIpOwogICAgICAgICAgICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1cnJlbnRD
b2RlT3JpZ2luKCksICJcbiIpOwogICAgICAgICB9CkBAIC0xOTc3LDE0ICsxOTczLDE0IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgICAgICAvLyB3aGVyZSBpdCB3
b3VsZCBiZSBiZW5lZmljaWFsLiBJdCBtaWdodCBiZSBiZXN0IHRvIGhhbmRsZSB0aGVzZSBjYXNl
cyBhcyBpZiBhbGwgY2FsbHMgd2VyZQogICAgICAgICAvLyBjbG9zdXJlIGNhbGxzLgogICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MDIwCi0gICAg
ICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFs
Ojp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJCYWlsaW5nIGlubGluaW5nIChtaXgp
LlxuIik7CiAgICAgICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4o
KSwgIlxuIik7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAK
LSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2
ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2coIkRvaW5nIGhhcmQgaW5saW5pbmcuLi5cbiIpOwog
ICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAg
ICAgfQpAQCAtMTk5NSwxMSArMTk5MSwxMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bmxpbmluZygKICAgICAvLyBzdG9yZSB0aGUgY2FsbGVlIHNvIHRoYXQgaXQgd2lsbCBiZSBhY2Nl
c3NpYmxlIHRvIGFsbCBvZiB0aGUgYmxvY2tzIHdlJ3JlIGFib3V0IHRvIGNyZWF0ZS4gV2UKICAg
ICAvLyBnZXQgYXdheSB3aXRoIGRvaW5nIGFuIGltbWVkaWF0ZS1zZXQgaGVyZSBiZWNhdXNlIHdl
IHdvdWxkbid0IGhhdmUgcGVyZm9ybWVkIGFueSBzaWRlIGVmZmVjdHMKICAgICAvLyB5ZXQuCi0g
ICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgIGRhdGFMb2coIlJlZ2lzdGVyIG9mZnNldDogIiwgcmVnaXN0ZXJPZmZzZXQp
OwogICAgIFZpcnR1YWxSZWdpc3RlciBjYWxsZWVSZWcocmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJh
bWVTbG90OjpjYWxsZWUpOwogICAgIGNhbGxlZVJlZyA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFw
T3BlcmFuZChjYWxsZWVSZWcpOwotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29k
ZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJDYWxsZWUgaXMgZ29p
bmcgdG8gYmUgIiwgY2FsbGVlUmVnLCAiXG4iKTsKICAgICBzZXREaXJlY3QoY2FsbGVlUmVnLCBj
YWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRlU2V0V2l0aEZsdXNoKTsKIApAQCAtMjAxMyw3ICsyMDA5
LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgYWRkVG9HcmFw
aChTd2l0Y2gsIE9wSW5mbygmZGF0YSksIHRoaW5nVG9Td2l0Y2hPbik7CiAgICAgCiAgICAgQmFz
aWNCbG9jayogb3JpZ2luQmxvY2sgPSBtX2N1cnJlbnRCbG9jazsKLSAgICBpZiAodmVyYm9zZSkK
KyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0
YUxvZygiTWFya2luZyAiLCBSYXdQb2ludGVyKG9yaWdpbkJsb2NrKSwgIiBhcyBsaW5rZWQgKG9y
aWdpbiBvZiBwb2x5IGlubGluZSlcbiIpOwogICAgIG9yaWdpbkJsb2NrLT5kaWRMaW5rKCk7CiAg
ICAgY2FuY2VsTGlua2luZ0ZvckJsb2NrKG1faW5saW5lU3RhY2tUb3AsIG9yaWdpbkJsb2NrKTsK
QEAgLTIwMjUsNyArMjAyMSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5n
KAogICAgIC8vIFdlIG1heSBmb3JjZSB0aGlzIHRydWUgaWYgd2UgZ2l2ZSB1cCBvbiBpbmxpbmlu
ZyBhbnkgb2YgdGhlIGVkZ2VzLgogICAgIGJvb2wgY291bGRUYWtlU2xvd1BhdGggPSBjYWxsTGlu
a1N0YXR1cy5jb3VsZFRha2VTbG93UGF0aCgpOwogICAgIAotICAgIGlmICh2ZXJib3NlKQorICAg
IGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9n
KCJBYm91dCB0byBsb29wIG92ZXIgZnVuY3Rpb25zIGF0ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCks
ICIuXG4iKTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbExpbmtTdGF0
dXMuc2l6ZSgpOyArK2kpIHsKQEAgLTIwNzIsMTEgKzIwNjgsMTEgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgICAgICAgICBhZGRUb0dyYXBoKEp1bXApOwogICAg
ICAgICAgICAgbGFuZGluZ0Jsb2Nrcy5hcHBlbmQobV9jdXJyZW50QmxvY2spOwogICAgICAgICB9
Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9pbnRl
cihtX2N1cnJlbnRCbG9jayksICIgYXMgbGlua2VkICh0YWlsIG9mIHBvbHkgaW5saW5lZSlcbiIp
OwogICAgICAgICBtX2N1cnJlbnRCbG9jay0+ZGlkTGluaygpOwogCi0gICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgIGRhdGFMb2coIkZpbmlzaGVkIGlubGluaW5nICIsIGNhbGxMaW5rU3RhdHVzW2ld
LCAiIGF0ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICIuXG4iKTsKICAgICB9CiAgICAgCkBAIC0y
MDg2LDcgKzIwODIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAg
ICBtX2V4aXRPSyA9IHRydWU7CiAgICAgZGF0YS5mYWxsVGhyb3VnaCA9IEJyYW5jaFRhcmdldChz
bG93UGF0aEJsb2NrLnB0cigpKTsKICAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKHNsb3dQYXRoQmxv
Y2suY29weVJlZigpKTsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJz
ZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiTWFya2luZyAiLCBSYXdQb2lu
dGVyKHNsb3dQYXRoQmxvY2sucHRyKCkpLCAiIGFzIGxpbmtlZCAoc2xvdyBwYXRoIGJsb2NrKVxu
Iik7CiAgICAgc2xvd1BhdGhCbG9jay0+ZGlkTGluaygpOwogICAgIHByZXBhcmVUb1BhcnNlQmxv
Y2soKTsKQEAgLTIxMTcsNyArMjExMyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKAogICAgIFJlZjxCYXNpY0Jsb2NrPiBjb250aW51YXRpb25CbG9jayA9IGFkb3B0UmVm
KAogICAgICAgICAqbmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fbnVtQXJndW1lbnRzLCBtX251
bUxvY2FscywgMSkpOwogICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soY29udGludWF0aW9uQmxvY2su
Y29weVJlZigpKTsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQWRkaW5nIHVubGlua2VkIGJsb2Nr
ICIsIFJhd1BvaW50ZXIoY29udGludWF0aW9uQmxvY2sucHRyKCkpLCAiIChjb250aW51YXRpb24p
XG4iKTsKICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxp
bmtlZEJsb2NrKGNvbnRpbnVhdGlvbkJsb2NrLnB0cigpKSk7CiAgICAgcHJlcGFyZVRvUGFyc2VC
bG9jaygpOwpAQCAtMjEyOSw3ICsyMTI1LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW5saW5pbmcoCiAgICAgbV9jdXJyZW50SW5kZXggPSBvbGRPZmZzZXQ7CiAgICAgbV9leGl0T0sg
PSB0cnVlOwogICAgIAotICAgIGlmICh2ZXJib3NlKSB7CisgICAgaWYgKERGR0J5dGVDb2RlUGFy
c2VySW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZGF0YUxvZygiRG9uZSBpbmxpbmluZyAo
aGFyZCkuXG4iKTsKICAgICAgICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1cnJlbnRDb2RlT3JpZ2lu
KCksICJcbiIpOwogICAgIH0KQEAgLTM0NTQsMTQgKzM0NTAsMTQgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6bmVlZHNEeW5hbWljTG9va3VwKFJlc29sdmVUeXBlIHR5cGUsIE9wY29kZUlEIG9wY29k
ZSkKIAogR2V0QnlPZmZzZXRNZXRob2QgQnl0ZUNvZGVQYXJzZXI6OnBsYW5Mb2FkKGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uJiBjb25kaXRpb24pCiB7Ci0gICAgaWYgKHZlcmJvc2UpCisg
ICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFM
b2coIlBsYW5uaW5nIGEgbG9hZDogIiwgY29uZGl0aW9uLCAiXG4iKTsKICAgICAKICAgICAvLyBX
ZSBtaWdodCBwcm9tb3RlIHRoaXMgdG8gRXF1aXZhbGVuY2UsIGFuZCBhIGxhdGVyIERGRyBwYXNz
IG1pZ2h0IGFsc28gZG8gc3VjaCBwcm9tb3Rpb24KICAgICAvLyBldmVuIGlmIHdlIGZhaWwsIGJ1
dCBmb3Igc2ltcGxpY2l0eSB0aGlzIGNhbm5vdCBiZSBhc2tlZCB0byBsb2FkIGFuIGVxdWl2YWxl
bmNlIGNvbmRpdGlvbi4KICAgICAvLyBOb25lIG9mIHRoZSBjbGllbnRzIG9mIHRoaXMgbWV0aG9k
IHdpbGwgcmVxdWVzdCBhIGxvYWQgb2YgYW4gRXF1aXZhbGVuY2UgY29uZGl0aW9uIGFueXdheSwK
ICAgICAvLyBhbmQgc3VwcG9ydGluZyBpdCB3b3VsZCBjb21wbGljYXRlIHRoZSBoZXVyaXN0aWNz
IGJlbG93LgotICAgIFJFTEVBU0VfQVNTRVJUKGNvbmRpdGlvbi5raW5kKCkgPT0gUHJvcGVydHlD
b25kaXRpb246OlByZXNlbmNlKTsKKyAgICBQQVJTRVJfQVNTRVJUKGNvbmRpdGlvbi5raW5kKCkg
PT0gUHJvcGVydHlDb25kaXRpb246OlByZXNlbmNlKTsKICAgICAKICAgICAvLyBIZXJlJ3MgdGhl
IHJhbmtpbmcgb2YgaG93IHRvIGhhbmRsZSB0aGlzLCBmcm9tIG1vc3QgcHJlZmVycmVkIHRvIGxl
YXN0IHByZWZlcnJlZDoKICAgICAvLwpAQCAtMzU2NCwxNCArMzU2MCwxNCBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpjaGVjayhjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0
aW9uU2V0KQogCiBHZXRCeU9mZnNldE1ldGhvZCBCeXRlQ29kZVBhcnNlcjo6cGxhbkxvYWQoY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCkKIHsKLSAgICBpZiAo
dmVyYm9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgZGF0YUxvZygiY29uZGl0aW9uU2V0ID0gIiwgY29uZGl0aW9uU2V0LCAiXG4iKTsKICAg
ICAKICAgICBHZXRCeU9mZnNldE1ldGhvZCByZXN1bHQ7CiAgICAgZm9yIChjb25zdCBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uIDogY29uZGl0aW9uU2V0KSB7CiAgICAgICAgIHN3
aXRjaCAoY29uZGl0aW9uLmtpbmQoKSkgewogICAgICAgICBjYXNlIFByb3BlcnR5Q29uZGl0aW9u
OjpQcmVzZW5jZToKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQpOyAvLyBTaG91
bGQgb25seSBzZWUgZXhhY3RseSBvbmUgb2YgdGhlc2UuCisgICAgICAgICAgICBQQVJTRVJfQVNT
RVJUKCFyZXN1bHQpOyAvLyBTaG91bGQgb25seSBzZWUgZXhhY3RseSBvbmUgb2YgdGhlc2UuCiAg
ICAgICAgICAgICByZXN1bHQgPSBwbGFuTG9hZChjb25kaXRpb24pOwogICAgICAgICAgICAgaWYg
KCFyZXN1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEdldEJ5T2Zmc2V0TWV0aG9kKCk7CkBA
IC0zNzQxLDcgKzM3MzcsNyBAQCBOb2RlKiBCeXRlQ29kZVBhcnNlcjo6bG9hZCgKIAogTm9kZSog
Qnl0ZUNvZGVQYXJzZXI6OnN0b3JlKE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXIsIGNv
bnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB2YWx1ZSkKIHsKLSAgICBSRUxFQVNF
X0FTU0VSVCh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6UmVwbGFjZSk7CisgICAg
UEFSU0VSX0FTU0VSVCh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6UmVwbGFjZSk7
CiAKICAgICBjaGVja1ByZXNlbmNlTGlrZShiYXNlLCBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRl
bnRpZmllcl0sIHZhcmlhbnQub2Zmc2V0KCksIHZhcmlhbnQuc3RydWN0dXJlKCkpOwogICAgIHJl
dHVybiBoYW5kbGVQdXRCeU9mZnNldChiYXNlLCBpZGVudGlmaWVyLCB2YXJpYW50Lm9mZnNldCgp
LCB2YXJpYW50LnJlcXVpcmVkVHlwZSgpLCB2YWx1ZSk7CkBAIC00MTQwLDcgKzQxMzYsNyBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgIC8vIG9w
cG9zZWQgdG8gdXNpbmcgYSB2YWx1ZSB3ZSBzZXQgZXhwbGljaXRseS4KICAgICBpZiAobV9jdXJy
ZW50QmxvY2sgPT0gbV9ncmFwaC5ibG9jaygwKSAmJiAhaW5saW5lQ2FsbEZyYW1lKCkpIHsKICAg
ICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmFk
ZChtX2N1cnJlbnRCbG9jaywgQXJndW1lbnRzVmVjdG9yKCkpOwotICAgICAgICBSRUxFQVNFX0FT
U0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgICAgIFBBUlNFUl9BU1NFUlQoYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwogICAgICAgICBBcmd1bWVudHNWZWN0b3ImIGVudHJ5cG9pbnRBcmd1
bWVudHMgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICBlbnRyeXBvaW50QXJn
dW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CiAKQEAgLTUyNDAsNyArNTIzNiw3IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfY2F0Y2gpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghbV9jdXJyZW50QmxvY2stPnNpemUoKSk7CisgICAgICAgICAgICBQ
QVJTRVJfQVNTRVJUKCFtX2N1cnJlbnRCbG9jay0+c2l6ZSgpKTsKIAogICAgICAgICAgICAgVmFs
dWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9m
aWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJbnN0cnVjdGlvblszXS51LnBvaW50ZXIpOwog
CkBAIC01MjY1LDggKzUyNjEsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0xvY2FsKCkp
CiAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFByZWRpY3Rpb25zLmFwcGVuZChwcmVkaWN0
aW9uKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChvcGVyYW5kLmlzQXJndW1lbnQoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2FzdDx1aW50MzJfdD4ob3BlcmFuZC50b0Fy
Z3VtZW50KCkpIDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgUEFSU0VSX0FTU0VSVChvcGVyYW5kLmlzQXJndW1lbnQoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihvcGVyYW5k
LnRvQXJndW1lbnQoKSkgPCBhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWVuQXJndW1lbnRzLmFkZChvcGVyYW5kLnRvQXJndW1lbnQoKSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBhcmd1bWVudFByZWRpY3Rpb25zW29wZXJhbmQudG9Bcmd1bWVu
dCgpXSA9IHByZWRpY3Rpb247CkBAIC01Mjc1LDcgKzUyNzEsNyBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogCiAgICAgICAgICAgICAgICAgaWYgKHZh
bGlkYXRpb25FbmFibGVkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBh
cmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgbV9udW1Bcmd1bWVudHM7ICsrYXJndW1lbnQpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzZWVuQXJndW1lbnRzLmNvbnRhaW5z
KGFyZ3VtZW50KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKHNlZW5B
cmd1bWVudHMuY29udGFpbnMoYXJndW1lbnQpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAKQEAgLTUzMTYsNyArNTMxMiw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQgbGltaXQpCiAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG1fY3Vy
cmVudEJsb2NrLCBBcmd1bWVudHNWZWN0b3IoKSk7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgICAgICAgICAgICAgIFBBUlNFUl9BU1NF
UlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAgICAgICAgICAgICAgIEFyZ3VtZW50c1ZlY3Rv
ciYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiAgICAg
ICAgICAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50cy5yZXNpemUobV9udW1Bcmd1bWVudHMpOwog
CkBAIC01NDYxLDggKzU0NTcsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgY2FzZSBHbG9iYWxMZXhpY2FsVmFyOgogICAgICAg
ICAgICAgY2FzZSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczogewogICAg
ICAgICAgICAgICAgIEpTU2NvcGUqIGNvbnN0YW50U2NvcGUgPSBKU1Njb3BlOjpjb25zdGFudFNj
b3BlRm9yQ29kZUJsb2NrKHJlc29sdmVUeXBlLCBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9j
ayk7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY29uc3RhbnRTY29wZSk7Ci0gICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RhdGljX2Nhc3Q8SlNTY29wZSo+KGN1cnJlbnRJ
bnN0cnVjdGlvbls2XS51LnBvaW50ZXIpID09IGNvbnN0YW50U2NvcGUpOworICAgICAgICAgICAg
ICAgIFBBUlNFUl9BU1NFUlQoY29uc3RhbnRTY29wZSk7CisgICAgICAgICAgICAgICAgUEFSU0VS
X0FTU0VSVChzdGF0aWNfY2FzdDxKU1Njb3BlKj4oY3VycmVudEluc3RydWN0aW9uWzZdLnUucG9p
bnRlcikgPT0gY29uc3RhbnRTY29wZSk7CiAgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdp
c3Rlcihkc3QpLCB3ZWFrSlNDb25zdGFudChjb25zdGFudFNjb3BlKSk7CiAgICAgICAgICAgICAg
ICAgYWRkVG9HcmFwaChQaGFudG9tLCBnZXQoVmlydHVhbFJlZ2lzdGVyKHNjb3BlKSkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTgwMyw3ICs1Nzk5LDcgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIC8vIEJhc2VsaW5l
LT5ERkcgT1NSIGp1bXBzIGJldHdlZW4gbG9vcCBoaW50cy4gVGhlIERGRyBhc3N1bWVzIHRoYXQg
QmFzZWxpbmUtPkRGRwogICAgICAgICAgICAgLy8gT1NSIGNhbiBvbmx5IGhhcHBlbiBhdCBiYXNp
YyBibG9jayBib3VuZGFyaWVzLiBBc3NlcnQgdGhhdCB0aGVzZSB0d28gc3RhdGVtZW50cwogICAg
ICAgICAgICAgLy8gYXJlIGNvbXBhdGlibGUuCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCht
X2N1cnJlbnRJbmRleCA9PSBibG9ja0JlZ2luKTsKKyAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQo
bV9jdXJyZW50SW5kZXggPT0gYmxvY2tCZWdpbik7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IC8vIFdlIG5ldmVyIGRvIE9TUiBpbnRvIGFuIGlubGluZWQgY29kZSBibG9jay4gVGhhdCBjb3Vs
ZCBub3QgaGFwcGVuLCBzaW5jZSBPU1IKICAgICAgICAgICAgIC8vIGxvb2tzIHVwIHRoZSBjb2Rl
IGJsb2NrIHRoYXQgaXMgdGhlIHJlcGxhY2VtZW50IGZvciB0aGUgYmFzZWxpbmUgSklUIGNvZGUK
QEAgLTYxNTMsNyArNjE0OSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmxpbmtCbG9jayhCYXNp
Y0Jsb2NrKiBibG9jaywgVmVjdG9yPEJhc2ljQmxvY2sqPiYgcG9zc2libGVUCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQ
YXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiTWFya2luZyAiLCBSYXdQ
b2ludGVyKGJsb2NrKSwgIiBhcyBsaW5rZWQgKGFjdHVhbGx5IGRpZCBsaW5raW5nKVxuIik7CiAg
ICAgYmxvY2stPmRpZExpbmsoKTsKIH0KQEAgLTYxNjEsMTAgKzYxNTcsMTAgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6bGlua0Jsb2NrKEJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8QmFzaWNCbG9j
ayo+JiBwb3NzaWJsZVQKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmxpbmtCbG9ja3MoVmVjdG9yPFVu
bGlua2VkQmxvY2s+JiB1bmxpbmtlZEJsb2NrcywgVmVjdG9yPEJhc2ljQmxvY2sqPiYgcG9zc2li
bGVUYXJnZXRzKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdW5saW5rZWRCbG9ja3Mu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdCeXRl
Q29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQXR0ZW1w
dGluZyB0byBsaW5rICIsIFJhd1BvaW50ZXIodW5saW5rZWRCbG9ja3NbaV0ubV9ibG9jayksICJc
biIpOwogICAgICAgICBpZiAodW5saW5rZWRCbG9ja3NbaV0ubV9uZWVkc05vcm1hbExpbmtpbmcp
IHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR0J5dGVDb2Rl
UGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIERv
ZXMgbmVlZCBub3JtYWwgbGlua2luZy5cbiIpOwogICAgICAgICAgICAgbGlua0Jsb2NrKHVubGlu
a2VkQmxvY2tzW2ldLm1fYmxvY2ssIHBvc3NpYmxlVGFyZ2V0cyk7CiAgICAgICAgICAgICB1bmxp
bmtlZEJsb2Nrc1tpXS5tX25lZWRzTm9ybWFsTGlua2luZyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAppbmRleCA1N2VjNGE4MGU0YjI5ZDJjYmQ0OTZl
ZWFjMzhkMWIyOTM5Yjg2MTczLi5lYmQxYjhlZmVmN2MyNTMwZTI4ZjkyNzE3Y2Y3MGRhYzI3MGVk
M2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcApAQCAtNDgs
NyArNDgsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7
CiAKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIERGR0NTRVBoYXNlSW50
ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBjbGFzcyBJ
bXB1cmVEYXRhU2xvdCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1wdXJlRGF0YVNsb3Qp
OwpAQCAtNjI3LDcgKzYyOSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIGl0ZXJhdGUoKQog
ICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdDU0VQaGFzZUludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiUGVyZm9ybWluZyBpdGVyYXRpb24u
XG4iKTsKICAgICAgICAgCiAgICAgICAgIG1fY2hhbmdlZCA9IGZhbHNlOwpAQCAtNjM4LDEzICs2
NDAsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgbV9pbXB1cmVEYXRhID0gJm1faW1wdXJlRGF0
YU1hcFttX2Jsb2NrXTsKICAgICAgICAgICAgIG1fd3JpdGVzU29GYXIuY2xlYXIoKTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHQ1NF
UGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJQcm9jZXNz
aW5nIGJsb2NrICIsICptX2Jsb2NrLCAiOlxuIik7CiAKICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgbV9ibG9jay0+c2l6ZSgpOyArK25vZGVJbmRl
eCkgewogICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4ID0gbm9kZUluZGV4OwogICAgICAgICAg
ICAgICAgIG1fbm9kZSA9IG1fYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAgICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgTG9va2luZyBhdCBub2RlICIs
IG1fbm9kZSwgIjpcbiIpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1fZ3Jh
cGgucGVyZm9ybVN1YnN0aXR1dGlvbihtX25vZGUpOwpAQCAtNzA3LDcgKzcwOSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgLy8gYSBnbG9iYWwgc2VhcmNoLgogICAgICAgICBMYXp5Tm9kZSBtYXRjaCA9
IG1faW1wdXJlRGF0YS0+YXZhaWxhYmxlQXRUYWlsLmdldChsb2NhdGlvbik7CiAgICAgICAgIGlm
ICghIW1hdGNoKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChE
RkdDU0VQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICAgIEZvdW5kIGxvY2FsIG1hdGNoOiAiLCBtYXRjaCwgIlxuIik7CiAgICAgICAgICAgICByZXR1
cm4gbWF0Y2g7CiAgICAgICAgIH0KQEAgLTcxNSw3ICs3MTcsNyBAQCBwdWJsaWM6CiAgICAgICAg
IC8vIElmIGl0J3Mgbm90IGF2YWlsYWJsZSBhdCB0aGlzIHBvaW50IGluIHRoZSBibG9jaywgYW5k
IGF0IHNvbWUgcHJpb3IgcG9pbnQgaW4gdGhlIGJsb2NrCiAgICAgICAgIC8vIHdlIGhhdmUgY2xv
YmJlcmVkIHRoaXMgaGVhcCBsb2NhdGlvbiwgdGhlbiB0aGVyZSBpcyBubyBwb2ludCBpbiBkb2lu
ZyBhIGdsb2JhbCBzZWFyY2guCiAgICAgICAgIGlmIChtX3dyaXRlc1NvRmFyLm92ZXJsYXBzKGxv
Y2F0aW9uLmhlYXAoKSkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAg
aWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiICAgICAgTm90IGxvb2tpbmcgZ2xvYmFsbHkgYmVjYXVzZSBvZiBsb2NhbCBjbG9iYmVyOiAi
LCBtX3dyaXRlc1NvRmFyLCAiXG4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICB9CkBAIC03NzIsNyArNzc0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgQmFzaWNCbG9j
ayogYmxvY2sgPSB3b3JrbGlzdC50YWtlTGFzdCgpOwogICAgICAgICAgICAgc2Vlbkxpc3QuYXBw
ZW5kKGJsb2NrKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCIgICAgICBTZWFyY2hpbmcgaW4gYmxvY2sgIiwgKmJsb2NrLCAiXG4iKTsKICAg
ICAgICAgICAgIEltcHVyZUJsb2NrRGF0YSYgZGF0YSA9IG1faW1wdXJlRGF0YU1hcFtibG9ja107
CiAgICAgICAgICAgICAKQEAgLTc4MCwxMiArNzgyLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAg
IC8vIHRoZXkgY2FtZSAqYWZ0ZXIqIG91ciBwb3NpdGlvbiBpbiB0aGUgYmxvY2suIENsZWFybHks
IHdoaWxlIG91ciBibG9jayBkb21pbmF0ZXMKICAgICAgICAgICAgIC8vIGl0c2VsZiwgdGhlIHRo
aW5ncyBpbiB0aGUgYmxvY2sgYWZ0ZXIgdXMgZG9uJ3QgZG9taW5hdGUgdXMuCiAgICAgICAgICAg
ICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPnN0cmljdGx5RG9taW5hdGVzKGJsb2NrLCBt
X2Jsb2NrKSkgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAg
IGlmIChERkdDU0VQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgICAgIEl0IHN0cmljdGx5IGRvbWluYXRlcy5cbiIpOwogICAgICAgICAgICAg
ICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBkYXRhLmRpZFZpc2l0KTsKICAgICAgICAg
ICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgIW1hdGNoKTsKICAgICAgICAgICAg
ICAgICBtYXRjaCA9IGRhdGEuYXZhaWxhYmxlQXRUYWlsLmdldChsb2NhdGlvbik7Ci0gICAgICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgQXZh
aWxhYmlsaXR5OiAiLCBtYXRjaCwgIlxuIik7CiAgICAgICAgICAgICAgICAgaWYgKCEhbWF0Y2gp
IHsKICAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgZXhhbWluZSB0aGUgcHJlZGVjZXNzb3Jz
IG9mIGEgbWF0Y2guIEF0IHRoaXMgcG9pbnQgd2UganVzdCB3YW50IHRvCkBAIC03OTUsMTAgKzc5
NywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdDU0VQ
aGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAg
RGVhbGluZyB3aXRoIHdyaXRlIHNldCAiLCBkYXRhLndyaXRlcywgIlxuIik7CiAgICAgICAgICAg
ICBpZiAoZGF0YS53cml0ZXMub3ZlcmxhcHMobG9jYXRpb24uaGVhcCgpKSkgewotICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChERkdDU0VQaGFzZUludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgIENsb2Ji
ZXJlZC5cbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAg
fQpAQCAtODMwLDE2ICs4MzIsMTYgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgZGVmKEhlYXBM
b2NhdGlvbiBsb2NhdGlvbiwgTGF6eU5vZGUgdmFsdWUpCiAgICAgewotICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgR290IGhlYXAgbG9jYXRpb24gZGVmOiAiLCBsb2NhdGlvbiwgIiAt
PiAiLCB2YWx1ZSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICBMYXp5Tm9kZSBtYXRjaCA9IGZp
bmRSZXBsYWNlbWVudChsb2NhdGlvbik7CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgICBHb3QgbWF0Y2g6ICIsIG1hdGNoLCAiXG4iKTsKICAgICAgICAgCiAgICAg
ICAgIGlmICghbWF0Y2gpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAg
aWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiICAgICAgQWRkaW5nIGF0LXRhaWwgbWFwcGluZzogIiwgbG9jYXRpb24sICIgLT4gIiwgdmFs
dWUsICJcbiIpOwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBtX2ltcHVyZURhdGEtPmF2YWls
YWJsZUF0VGFpbC5hZGQobG9jYXRpb24sIHZhbHVlKTsKICAgICAgICAgICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCAhcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKaW5kZXggYzRhNThjZWFiOTdiZDY1Yzg2ZTIw
ZTY3ZGJiNGM5N2I3MmQzYTIzYi4uN2Y4NjFjNmZhYWM0YTNlZjhhYjYyMDJhOTgxMmZkZmEyOWNm
MjY3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJz
dHJhY3RTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZS5jcHAKQEAgLTM3LDcgKzM3LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogCituYW1lc3BhY2UgREZHSW5QbGFjZUFic3RyYWN0U3RhdGVJbnRlcm5h
bCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIEluUGxhY2VBYnN0
cmFjdFN0YXRlOjpJblBsYWNlQWJzdHJhY3RTdGF0ZShHcmFwaCYgZ3JhcGgpCiAgICAgOiBtX2dy
YXBoKGdyYXBoKQpAQCAtMjcyLDcgKzI3NCw3IEBAIHZvaWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6
Om1lcmdlU3RhdGVBdFRhaWwoQWJzdHJhY3RWYWx1ZSYgZGVzdGluYXRpb24sIEFic3RyYWN0CiAK
IGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKEJhc2ljQmxvY2sqIGZyb20sIEJhc2lj
QmxvY2sqIHRvKQogewotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChERkdJblBsYWNlQWJzdHJh
Y3RTdGF0ZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCIgICBNZXJnaW5nIGZy
b20gIiwgcG9pbnRlckR1bXAoZnJvbSksICIgdG8gIiwgcG9pbnRlckR1bXAodG8pLCAiXG4iKTsK
ICAgICBBU1NFUlQoZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mQXJndW1lbnRzKCkgPT0g
dG8tPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpKTsKICAgICBBU1NFUlQoZnJv
bS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkgPT0gdG8tPnZhcmlhYmxlc0F0SGVh
ZC5udW1iZXJPZkxvY2FscygpKTsKQEAgLTMwMyw3ICszMDUsNyBAQCBib29sIEluUGxhY2VBYnN0
cmFjdFN0YXRlOjptZXJnZShCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykKIAogICAg
ICAgICBmb3IgKE5vZGVBYnN0cmFjdFZhbHVlUGFpciYgZW50cnkgOiB0by0+c3NhLT52YWx1ZXNB
dEhlYWQpIHsKICAgICAgICAgICAgIE5vZGVGbG93UHJvamVjdGlvbiBub2RlID0gZW50cnkubm9k
ZTsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR0luUGxhY2VB
YnN0cmFjdFN0YXRlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygi
ICAgICAgTWVyZ2luZyBmb3IgIiwgbm9kZSwgIjogZnJvbSAiLCBmb3JOb2RlKG5vZGUpLCAiIHRv
ICIsIGVudHJ5LnZhbHVlLCAiXG4iKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgICAgICB1bnNp
Z25lZCB2YWx1ZUNvdW50SW5Gcm9tQmxvY2sgPSAwOwpAQCAtMzE4LDcgKzMyMCw3IEBAIGJvb2wg
SW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sq
IHRvKQogCiAgICAgICAgICAgICBjaGFuZ2VkIHw9IGVudHJ5LnZhbHVlLm1lcmdlKGZvck5vZGUo
bm9kZSkpOwogCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdJ
blBsYWNlQWJzdHJhY3RTdGF0ZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRh
dGFMb2coIiAgICAgICAgIFJlc3VsdDogIiwgZW50cnkudmFsdWUsICJcbiIpOwogICAgICAgICB9
CiAgICAgICAgIGJyZWFrOwpAQCAtMzMyLDcgKzMzNCw3IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0
U3RhdGU6Om1lcmdlKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKQogICAgIGlmICgh
dG8tPmNmYUhhc1Zpc2l0ZWQpCiAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgIAotICAgIGlm
ICh2ZXJib3NlKQorICAgIGlmIChERkdJblBsYWNlQWJzdHJhY3RTdGF0ZUludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICBkYXRhTG9nKCIgICAgICBXaWxsIHJldmlzaXQ6ICIsIGNoYW5nZWQsICJc
biIpOwogICAgIHRvLT5jZmFTaG91bGRSZXZpc2l0IHw9IGNoYW5nZWQ7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1Bo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlckNoZWNrQ29tYmlu
aW5nUGhhc2UuY3BwCmluZGV4IDVkMWNiYzc2YzRlZTI1MmEzMzcyOWZiZTE4NWQ5OTJiMmFmZWVj
ZGIuLjk4ZTBmNmZkZjI4ODE0N2E4MWU5Y2I3ZjlmMWI4OTk2NTZmZDkxZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlckNoZWNrQ29tYmlu
aW5nUGhhc2UuY3BwCkBAIC00MSw3ICs0MSw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKIAogbmFtZXNwYWNlIHsKIAorbmFtZXNwYWNlIERGR0ludGVnZXJDaGVja0NvbWJpbmlu
Z1BoYXNlSW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQog
CiBlbnVtIFJhbmdlS2luZCB7CiAgICAgSW52YWxpZFJhbmdlS2luZCwKQEAgLTIwMywxMyArMjA1
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBmb3IgKGF1dG8qIG5vZGUgOiAqYmxv
Y2spIHsKICAgICAgICAgICAgIFJhbmdlS2V5QW5kQWRkZW5kIGRhdGEgPSByYW5nZUtleUFuZEFk
ZGVuZChub2RlKTsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERG
R0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiRm9yICIsIG5vZGUsICI6ICIsIGRhdGEsICJcbiIpOwogICAgICAgICAg
ICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBSYW5nZSYgcmFuZ2UgPSBtX21hcFtkYXRhLm1fa2V5XTsKLSAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR0ludGVnZXJDaGVja0NvbWJpbmluZ1Bo
YXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIFJhbmdl
OiAiLCByYW5nZSwgIlxuIik7CiAgICAgICAgICAgICBpZiAocmFuZ2UubV9jb3VudCkgewogICAg
ICAgICAgICAgICAgIGlmIChkYXRhLm1fYWRkZW5kID4gcmFuZ2UubV9tYXhCb3VuZCkgewpAQCAt
MjI2LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmFuZ2UubV9tYXhPcmln
aW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBy
YW5nZS5tX2NvdW50Kys7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlm
IChERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgICAgIGRhdGFMb2coIiAgICBOZXcgcmFuZ2U6ICIsIHJhbmdlLCAiXG4iKTsKICAgICAg
ICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKaW5kZXggMDdiNmFjMzQ4
MmZkMGU3ZjMyZWY4NGVmODJiMzExNTEyNzdiZDIxMi4uNGEzODMxZWIxNjBkYzQ5NzY0ZTg3Mzkw
ZTg4YWY1YWE5NWU4NmU4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKQEAgLTQyLDcg
KzQyLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3BhY2Ugewog
Ci1jb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBERkdJbnRlZ2VyUmFuZ2VP
cHRpbWl6YXRpb25QaGFzZUludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBm
YWxzZTsKK30KIGNvbnN0IHVuc2lnbmVkIGdpdmVVcFRocmVzaG9sZCA9IDUwOwogCiBpbnQ2NF90
IGNsYW1wZWRTdW1JbXBsKCkgeyByZXR1cm4gMDsgfQpAQCAtMTAxOSw3ICsxMDIxLDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShtX2dyYXBoLmJsb2NrKDAp
KTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAg
aWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsK
ICAgICAgICAgICAgIGRhdGFMb2coIkdyYXBoIGJlZm9yZSBpbnRlZ2VyIHJhbmdlIG9wdGltaXph
dGlvbjpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KQEAgLTEx
MTAsNyArMTExMiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBtX3JlbGF0aW9uc2hpcHMg
PSBtX3JlbGF0aW9uc2hpcHNBdEhlYWRbYmxvY2tdOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgZm9yIChhdXRvKiBub2RlIDogKmJsb2NrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1p
emF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2coIkFuYWx5c2lzOiBhdCAiLCBub2RlLCAiOiAiLCBsaXN0RHVtcChzb3J0ZWRSZWxhdGlv
bnNoaXBzKCkpLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZU5vZGUobm9kZSk7
CiAgICAgICAgICAgICAgICAgfQpAQCAtMTE5NSwxMSArMTE5NywxMSBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBSZWxhdGlvbnNoaXBNYXAgZm9yVHJ1ZSA9IG1fcmVsYXRpb25z
aGlwczsKICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aW9uc2hpcE1hcCBmb3JGYWxzZSA9
IG1fcmVsYXRpb25zaGlwczsKICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREZH
SW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJEZWFsaW5nIHdpdGggdHJ1ZTpcbiIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0UmVsYXRpb25zaGlwKGZvclRydWUsIHJlbGF0aW9uc2hp
cEZvclRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJlbGF0aW9uc2hpcCByZWxh
dGlvbnNoaXBGb3JGYWxzZSA9IHJlbGF0aW9uc2hpcEZvclRydWUuaW52ZXJzZSgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkRlYWxpbmcg
d2l0aCBmYWxzZTpcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlbGF0aW9u
c2hpcChmb3JGYWxzZSwgcmVsYXRpb25zaGlwRm9yRmFsc2UpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQpAQCAtMTIyMyw3ICsxMjI1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9yZWxh
dGlvbnNoaXBzID0gbV9yZWxhdGlvbnNoaXBzQXRIZWFkW2Jsb2NrXTsKICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytu
b2RlSW5kZXgpIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJ
bmRleCk7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYg
KERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIlRyYW5zZm9ybWF0aW9uOiBhdCAiLCBub2RlLCAiOiAi
LCBsaXN0RHVtcChzb3J0ZWRSZWxhdGlvbnNoaXBzKCkpLCAiXG4iKTsKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGVuZHMgdXAgYmVpbmcgcHJldHR5IGF3a3dhcmQg
dG8gd3JpdGUgYmVjYXVzZSB3ZSBuZWVkIHRvIGRlY2lkZSBpZiB3ZQpAQCAtMTI4NywxNCArMTI4
OSwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBtYXhWYWx1ZSA9IHN0ZDo6
bWluKG1heFZhbHVlLCByZWxhdGlvbnNoaXAubWF4VmFsdWVPZkxlZnQoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgbWluVmFsdWUg
PSAiLCBtaW5WYWx1ZSwgIiwgbWF4VmFsdWUgPSAiLCBtYXhWYWx1ZSwgIlxuIik7CiAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAoc3VtT3ZlcmZsb3dzPGludD4o
bWluVmFsdWUsIG5vZGUtPmNoaWxkMigpLT5hc0ludDMyKCkpIHx8CiAgICAgICAgICAgICAgICAg
ICAgICAgICBzdW1PdmVyZmxvd3M8aW50PihtYXhWYWx1ZSwgbm9kZS0+Y2hpbGQyKCktPmFzSW50
MzIoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR0ludGVnZXJSYW5n
ZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgSXQncyBpbiBib3VuZHMuXG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVOb2RlKGJsb2NrLT5hdChub2RlSW5kZXgp
KTsKQEAgLTE1NDgsNyArMTU1MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghcmVsYXRpb25z
aGlwKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZUludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIFNldHRpbmc6ICIsIHJlbGF0aW9uc2hp
cCwgIiAodHRsID0gIiwgdGltZVRvTGl2ZSwgIilcbiIpOwogCiAgICAgICAgIGF1dG8gcmVzdWx0
ID0gcmVsYXRpb25zaGlwTWFwLmFkZCgKQEAgLTE2MDIsNyArMTYwNCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChvdGhlclJlbGF0aW9uc2hpcC52YWd1ZW5lc3MoKSA8IHJl
bGF0aW9uc2hpcC52YWd1ZW5lc3MoKQogICAgICAgICAgICAgICAgICAgICAgICAgJiYgb3RoZXJS
ZWxhdGlvbnNoaXAucmlnaHQoKS0+aXNJbnQzMkNvbnN0YW50KCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIFJlbGF0aW9uc2hpcCBuZXdSZWxhdGlvbnNoaXAgPSByZWxhdGlvbnNoaXAuZmls
dGVyQ29uc3RhbnQob3RoZXJSZWxhdGlvbnNoaXApOwotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHZlcmJvc2UgJiYgbmV3UmVsYXRpb25zaGlwICE9IHJlbGF0aW9uc2hpcCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZUludGVy
bmFsOjp2ZXJib3NlICYmIG5ld1JlbGF0aW9uc2hpcCAhPSByZWxhdGlvbnNoaXApCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgUmVmaW5lZCB0bzogIiwgbmV3UmVs
YXRpb25zaGlwLCAiIGJhc2VkIG9uICIsIG90aGVyUmVsYXRpb25zaGlwLCAiXG4iKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcCA9IG5ld1JlbGF0aW9uc2hpcDsKICAgICAg
ICAgICAgICAgICAgICAgfQpAQCAtMTYxNiw3ICsxNjE4LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgaWYgKG90aGVyUmVsYXRpb25zaGlwLnZhZ3VlbmVzcygpID4gcmVsYXRpb25z
aGlwLnZhZ3VlbmVzcygpCiAgICAgICAgICAgICAgICAgICAgICAgICAmJiBvdGhlclJlbGF0aW9u
c2hpcC5yaWdodCgpLT5pc0ludDMyQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgUmVsYXRpb25zaGlwIG5ld1JlbGF0aW9uc2hpcCA9IG90aGVyUmVsYXRpb25zaGlwLmZpbHRl
ckNvbnN0YW50KHJlbGF0aW9uc2hpcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVy
Ym9zZSAmJiBuZXdSZWxhdGlvbnNoaXAgIT0gb3RoZXJSZWxhdGlvbnNoaXApCisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5h
bDo6dmVyYm9zZSAmJiBuZXdSZWxhdGlvbnNoaXAgIT0gb3RoZXJSZWxhdGlvbnNoaXApCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgUmVmaW5lZCAiLCBvdGhlclJl
bGF0aW9uc2hpcCwgIiB0bzogIiwgbmV3UmVsYXRpb25zaGlwLCAiXG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIG90aGVyUmVsYXRpb25zaGlwID0gbmV3UmVsYXRpb25zaGlwOwogICAgICAg
ICAgICAgICAgICAgICB9CkBAIC0xNjM5LDcgKzE2NDEsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgLy8gQHggPT0gQGMgYW5kIEB4ICE9IEBkLCB3aGVyZSBAZCA+IEBjLCB0aGVuIHdlIHdhbnQg
dG8gdHVybiBAeCAhPSBAZCBpbnRvIEB4IDwgQGQuCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGlmICh0aW1lVG9MaXZlICYmIG90aGVyUmVsYXRpb25zaGlwLmtpbmQoKSA9PSBSZWxhdGlvbnNo
aXA6OkVxdWFsKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAg
ICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIENvbnNpZGVyaW5nOiAiLCBvdGhl
clJlbGF0aW9uc2hpcCwgIlxuIik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
Ly8gV2UgaGF2ZToKQEAgLTE2NzUsNyArMTY3Nyw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgYm9v
bCBtZXJnZVRvKFJlbGF0aW9uc2hpcE1hcCYgcmVsYXRpb25zaGlwTWFwLCBCYXNpY0Jsb2NrKiB0
YXJnZXQpCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHSW50
ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAg
ICAgZGF0YUxvZygiTWVyZ2luZyB0byAiLCBwb2ludGVyRHVtcCh0YXJnZXQpLCAiOlxuIik7CiAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgSW5jb21pbmc6ICIsIGxpc3REdW1wKHNvcnRlZFJlbGF0
aW9uc2hpcHMocmVsYXRpb25zaGlwTWFwKSksICJcbiIpOwogICAgICAgICAgICAgZGF0YUxvZygi
ICAgIEF0IGhlYWQ6ICIsIGxpc3REdW1wKHNvcnRlZFJlbGF0aW9uc2hpcHMobV9yZWxhdGlvbnNo
aXBzQXRIZWFkW3RhcmdldF0pKSwgIlxuIik7CkBAIC0xNjk3LDcgKzE2OTksNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGZvciAoUmVsYXRpb25zaGlwIHJlbGF0aW9uc2hpcCA6IGVudHJ5
LnZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZWxhdGlvbnNoaXAubGVmdCgp
ID09IGVudHJ5LmtleSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpc0xpdmUocmVsYXRpb25z
aGlwLnJpZ2h0KCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFz
ZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
IiAgUHJvcGFnYXRpbmcgIiwgcmVsYXRpb25zaGlwLCAiXG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhbHVlcy5hcHBlbmQocmVsYXRpb25zaGlwKTsKICAgICAgICAgICAgICAgICAgICAg
fQpAQCAtMTczNCwxMiArMTczNiwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgVmVjdG9yPFJl
bGF0aW9uc2hpcD4gbWVyZ2VkUmVsYXRpb25zaGlwczsKICAgICAgICAgICAgIGZvciAoUmVsYXRp
b25zaGlwIHRhcmdldFJlbGF0aW9uc2hpcCA6IGVudHJ5LnZhbHVlKSB7CiAgICAgICAgICAgICAg
ICAgZm9yIChSZWxhdGlvbnNoaXAgc291cmNlUmVsYXRpb25zaGlwIDogaXRlci0+dmFsdWUpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlm
IChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICBNZXJnaW5nICIsIHRhcmdldFJlbGF0aW9u
c2hpcCwgIiBhbmQgIiwgc291cmNlUmVsYXRpb25zaGlwLCAiOlxuIik7CiAgICAgICAgICAgICAg
ICAgICAgIHRhcmdldFJlbGF0aW9uc2hpcC5tZXJnZSgKICAgICAgICAgICAgICAgICAgICAgICAg
IHNvdXJjZVJlbGF0aW9uc2hpcCwKICAgICAgICAgICAgICAgICAgICAgICAgIFsmXSAoUmVsYXRp
b25zaGlwIG5ld1JlbGF0aW9uc2hpcCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdJbnRlZ2VyUmFu
Z2VPcHRpbWl6YXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgR290ICIsIG5ld1JlbGF0aW9uc2hpcCwgIlxuIik7
CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3UmVsYXRpb25zaGlwLnJpZ2h0
KCktPmlzSW50MzJDb25zdGFudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR01vdkhpbnRSZW1vdmFsUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdNb3ZIaW50UmVtb3ZhbFBoYXNlLmNwcAppbmRleCA5ZjM0NGIzN2RjZDg3ZmMxNGMw
YTEyZGU0ZjEwNzA4YjZkNzQ4Zjg2Li4xYWVkMmMxODU2ZTJiZjYyY2VmN2EzYzQ2ZGEyNDIxOTMy
ZjVmNzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01vdkhpbnRS
ZW1vdmFsUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTW92SGlu
dFJlbW92YWxQaGFzZS5jcHAKQEAgLTQyLDcgKzQyLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVz
cGFjZSBERkdNb3ZIaW50UmVtb3ZhbFBoYXNlSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wg
dmVyYm9zZSA9IGZhbHNlOworfQogCiBjbGFzcyBNb3ZIaW50UmVtb3ZhbFBoYXNlIDogcHVibGlj
IFBoYXNlIHsKIHB1YmxpYzoKQEAgLTU1LDcgKzU3LDcgQEAgcHVibGljOgogICAgIAogICAgIGJv
b2wgcnVuKCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdN
b3ZIaW50UmVtb3ZhbFBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFM
b2coIkdyYXBoIGJlZm9yZSBNb3ZIaW50IHJlbW92YWw6XG4iKTsKICAgICAgICAgICAgIG1fZ3Jh
cGguZHVtcCgpOwogICAgICAgICB9CkBAIC02OSw3ICs3MSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgdm9pZCBoYW5kbGVCbG9jayhCYXNpY0Jsb2NrKiBibG9jaykKICAgICB7Ci0gICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHTW92SGludFJlbW92YWxQaGFzZUludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiSGFuZGluZyBibG9jayAiLCBwb2ludGVy
RHVtcChibG9jayksICJcbiIpOwogICAgICAgICAKICAgICAgICAgLy8gQSBNb3ZIaW50IGlzIHVu
bmVjZXNzYXJ5IGlmIHRoZSBsb2NhbCBkaWVzIGJlZm9yZSBpdCBpcyB1c2VkLiBXZSBhbnN3ZXIg
dGhpcyBxdWVzdGlvbiBieQpAQCAtODcsNyArODksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIG1fc3RhdGUub3BlcmFuZChyZWcpID0gY3VycmVudEVwb2NoOwogICAgICAgICAgICAgfSk7
CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR01vdkhpbnRS
ZW1vdmFsUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBM
b2NhbHM6ICIsIG1fc3RhdGUsICJcbiIpOwogICAgICAgICAKICAgICAgICAgLy8gQXNzdW1lIHRo
YXQgYmxvY2tzIGFmdGVyIHVzIGV4aXQuCkBAIC05OCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBNb3ZIaW50KSB7CiAgICAg
ICAgICAgICAgICAgRXBvY2ggbG9jYWxFcG9jaCA9IG1fc3RhdGUub3BlcmFuZChub2RlLT51bmxp
bmtlZExvY2FsKCkpOwotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAg
ICAgIGlmIChERkdNb3ZIaW50UmVtb3ZhbFBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2coIiAgICBBdCAiLCBub2RlLCAiOiBjdXJyZW50ID0gIiwgY3Vy
cmVudEVwb2NoLCAiLCBsb2NhbCA9ICIsIGxvY2FsRXBvY2gsICJcbiIpOwogICAgICAgICAgICAg
ICAgIGlmICghbG9jYWxFcG9jaCB8fCBsb2NhbEVwb2NoID09IGN1cnJlbnRFcG9jaCkgewogICAg
ICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhab21iaWVIaW50KTsK
QEAgLTEyMCw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCEhbV9zdGF0ZS5vcGVyYW5kKHJlZykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdNb3ZIaW50UmVtb3Zh
bFBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZygiICAgIEtpbGxlZCBvcGVyYW5kIGF0ICIsIG5vZGUsICI6ICIsIHJlZywgIlxuIik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLm9wZXJhbmQocmVnKSA9IGN1cnJlbnRFcG9j
aDsKICAgICAgICAgICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAppbmRl
eCA1MDU1OTdlMDI3MTFkMDllM2U0ZTcwOTUxODdkODZjOWFmMTc2Nzc1Li5jNDVhN2YyNjdhZjIw
OGY1MDZiYWUxZWFhMjY5ZTgxMTliYTFkNzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAK
QEAgLTQ4LDcgKzQ4LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1l
c3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBERkdPYmplY3RBbGxv
Y2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9
IGZhbHNlOworfQogCiAvLyBJbiBvcmRlciB0byBzaW5rIG9iamVjdCBjeWNsZXMsIHdlIHVzZSBh
IHBvaW50cy10byBhbmFseXNpcyBjb3VwbGVkCiAvLyB3aXRoIGFuIGVzY2FwZSBhbmFseXNpcy4g
VGhpcyBhbmFseXNpcyBpcyBhY3R1YWxseSBzaW1pbGFyIHRvIGFuCkBAIC03MTcsNyArNzE5LDcg
QEAgcHVibGljOgogICAgICAgICBpZiAoIXBlcmZvcm1TaW5raW5nKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR09i
amVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAg
ICAgZGF0YUxvZygiR3JhcGggYWZ0ZXIgZWxpbWluYXRpb246XG4iKTsKICAgICAgICAgICAgIG1f
Z3JhcGguZHVtcCgpOwogICAgICAgICB9CkBAIC03NDIsNyArNzQ0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIGdyYXBoQmVmb3JlU2lua2luZyA9IG91dC50b0NTdHJpbmcoKTsKICAgICAgICAg
fQogCi0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0
aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2co
IkdyYXBoIGJlZm9yZSBlbGltaW5hdGlvbjpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1w
KCk7CiAgICAgICAgIH0KQEAgLTc1Miw3ICs3NTQsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAo
IWRldGVybWluZVNpbmtDYW5kaWRhdGVzKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR09iamVjdEFsbG9jYXRpb25T
aW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZm9yIChCYXNpY0Js
b2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgewogICAgICAgICAg
ICAgICAgIGRhdGFMb2coIkhlYXAgYXQgaGVhZCBvZiAiLCAqYmxvY2ssICI6IFxuIiwgbV9oZWFw
QXRIZWFkW2Jsb2NrXSk7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygiSGVhcCBhdCB0YWlsIG9m
ICIsICpibG9jaywgIjogXG4iLCBtX2hlYXBBdFRhaWxbYmxvY2tdKTsKQEAgLTc3Myw3ICs3NzUs
NyBAQCBwcml2YXRlOgogCiAgICAgICAgIGJvb2wgY2hhbmdlZDsKICAgICAgICAgZG8gewotICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlv
blNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2co
IkRvaW5nIGl0ZXJhdGlvbiBvZiBlc2NhcGUgYW5hbHlzaXMuXG4iKTsKICAgICAgICAgICAgIGNo
YW5nZWQgPSBmYWxzZTsKIApAQCAtMTE5Nyw3ICsxMTk5LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
aWYgKG1fc2lua0NhbmRpZGF0ZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGhhc1Vu
ZXNjYXBlZFJlYWRzOwogCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHT2Jq
ZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ZGF0YUxvZygiQ2FuZGlkYXRlczogIiwgbGlzdER1bXAobV9zaW5rQ2FuZGlkYXRlcyksICJcbiIp
OwogCiAgICAgICAgIC8vIENyZWF0ZSB0aGUgbWF0ZXJpYWxpemF0aW9uIG5vZGVzCkBAIC0xNzY0
LDcgKzE3NjYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGlmIChERkdPYmplY3RB
bGxvY2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCJMb2NhbCBtYXBwaW5nIGF0ICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIjogIiwg
bWFwRHVtcChtX2xvY2FsTWFwcGluZyksICJcbiIpOwogICAgICAgICAgICAgICAgIGRhdGFMb2co
IkxvY2FsIG1hdGVyaWFsaXphdGlvbnMgYXQgIiwgcG9pbnRlckR1bXAoYmxvY2spLCAiOiAiLCBt
YXBEdW1wKG1fZXNjYXBlZVRvTWF0ZXJpYWxpemF0aW9uKSwgIlxuIik7CiAgICAgICAgICAgICB9
CkBAIC0xNzgwLDcgKzE3ODIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBtX2xv
Y2FsTWFwcGluZy5zZXQobG9jYXRpb24sIG1fYm90dG9tKTsKIAogICAgICAgICAgICAgICAgICAg
ICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5jb250YWlucyhub2RlKSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREZHT2Jq
ZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIkZvciBzaW5rIGNhbmRpZGF0ZSAiLCBub2RlLCAiIGZv
dW5kIGxvY2F0aW9uICIsIGxvY2F0aW9uLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0Lmluc2VydCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2Rl
SW5kZXggKyAxLApAQCAtMTc5NSw3ICsxNzk3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAgICAgcG9wdWxhdGVNYXRlcmlhbGl6YXRpb24oYmxvY2ssIG1hdGVyaWFsaXphdGlvbiwgZXNj
YXBlZSk7CiAgICAgICAgICAgICAgICAgICAgIG1fZXNjYXBlZVRvTWF0ZXJpYWxpemF0aW9uLnNl
dChlc2NhcGVlLCBtYXRlcmlhbGl6YXRpb24pOwogICAgICAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnQobm9kZUluZGV4LCBtYXRlcmlhbGl6YXRpb24pOwotICAgICAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR09iamVjdEFs
bG9jYXRpb25TaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIk1hdGVyaWFsaXppbmcgIiwgZXNjYXBlZSwgIiA9PiAiLCBtYXRlcmlh
bGl6YXRpb24sICIgYXQgIiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAgICAgICAgfQogCkBAIC0x
ODUwLDcgKzE4NTIsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgICAgICAgICBkb0xv
d2VyID0gdHJ1ZTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUlu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkNy
ZWF0aW5nIGhpbnQgd2l0aCB2YWx1ZSAiLCBub2RlVmFsdWUsICIgYmVmb3JlICIsIG5vZGUsICJc
biIpOwogICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsCkBAIC0xOTkzLDcgKzE5OTUs
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpbnNlcnRPU1JIaW50c0ZvclVwZGF0ZSh1bnNpZ25l
ZCBub2RlSW5kZXgsIE5vZGVPcmlnaW4gb3JpZ2luLCBib29sJiBjYW5FeGl0LCBBdmFpbGFiaWxp
dHlNYXAmIGF2YWlsYWJpbGl0eSwgTm9kZSogZXNjYXBlZSwgTm9kZSogbWF0ZXJpYWxpemF0aW9u
KQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR09iamVjdEFs
bG9jYXRpb25TaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0
YUxvZygiSW5zZXJ0aW5nIE9TUiBoaW50cyBhdCAiLCBvcmlnaW4sICI6XG4iKTsKICAgICAgICAg
ICAgIGRhdGFMb2coIiAgICBFc2NhcGVlOiAiLCBlc2NhcGVlLCAiXG4iKTsKICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBNYXRlcmlhbGl6YXRpb246ICIsIG1hdGVyaWFsaXphdGlvbiwgIlxuIik7
CkBAIC0yMTY2LDcgKzIxNjgsNyBAQCBwcml2YXRlOgogCiAgICAgTm9kZSogY3JlYXRlUmVjb3Zl
cnkoQmFzaWNCbG9jayogYmxvY2ssIFByb21vdGVkSGVhcExvY2F0aW9uIGxvY2F0aW9uLCBOb2Rl
KiB3aGVyZSwgYm9vbCYgY2FuRXhpdCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgZGF0YUxvZygiUmVjb3ZlcmluZyAiLCBsb2NhdGlvbiwgIiBhdCAiLCB3
aGVyZSwgIlxuIik7CiAgICAgICAgIEFTU0VSVChsb2NhdGlvbi5iYXNlKCktPmlzUGhhbnRvbUFs
bG9jYXRpb24oKSk7CiAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXRNYXRlcmlhbGl6YXRpb24oYmxv
Y2ssIGxvY2F0aW9uLmJhc2UoKSk7CkBAIC0yMTc0LDcgKzIxNzYsNyBAQCBwcml2YXRlOgogCiAg
ICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gd2hlcmUtPm9yaWdpbi53aXRoU2VtYW50aWMoYmFz
ZS0+b3JpZ2luLnNlbWFudGljKTsKIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYg
KERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgIGRhdGFMb2coIkJhc2UgaXMgIiwgYmFzZSwgIiBhbmQgdmFsdWUgaXMgIiwgdmFsdWUs
ICJcbiIpOwogCiAgICAgICAgIGlmIChiYXNlLT5pc1BoYW50b21BbGxvY2F0aW9uKCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUluc2VydGlvblBo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUluc2VydGlvblBo
YXNlLmNwcAppbmRleCBkY2MxYzk3Njk4NmZlZDZlM2U5ZGNlZGNhZjVlOTQwNWI5ZDNiOGRhLi4z
YzA4OGE2YTRhNWVlNjUwOTA2MjJkNjYwMzJkNGYxNzEwMjkzNzQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21JbnNlcnRpb25QaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwCkBA
IC00Myw3ICs0Myw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogbmFtZXNw
YWNlIHsKIAotYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgREZHUGhhbnRvbUluc2Vy
dGlvblBoYXNlSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwor
fQogCiBjbGFzcyBQaGFudG9tSW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogcHVibGlj
OgpAQCAtNjAsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIFNldExvY2FscyBleGVjdXRl
LCB3aGljaCBpcyBpbmFjY3VyYXRlLiBUaGF0IGNhdXNlcyB1cyB0byBpbnNlcnQgdG9vIGZldyBQ
aGFudG9tcy4KICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1f
cmVmQ291bnRTdGF0ZSA9PSBFeGFjdFJlZkNvdW50KTsKICAgICAgICAgCi0gICAgICAgIGlmICh2
ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6
dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIFBoYW50b20gaW5z
ZXJ0aW9uOlxuIik7CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQpAQCAt
NzAsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBt
X2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpCiAgICAgICAgICAgICBoYW5kbGVCbG9jayhi
bG9jayk7CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZH
UGhhbnRvbUluc2VydGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRh
dGFMb2coIkdyYXBoIGFmdGVyIFBoYW50b20gaW5zZXJ0aW9uOlxuIik7CiAgICAgICAgICAgICBt
X2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQpAQCAtMTAxLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIHVuc2lnbmVkIGxhc3RFeGl0aW5nSW5kZXggPSAwOwogICAgICAgICBmb3IgKHVuc2ln
bmVkIG5vZGVJbmRleCA9IDA7IG5vZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbm9kZUluZGV4
KSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdQaGFudG9tSW5zZXJ0aW9u
UGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDb25zaWRl
cmluZyAiLCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgc3dpdGNoIChu
b2RlLT5vcCgpKSB7CkBAIC0xMzksNyArMTQxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFZp
cnR1YWxSZWdpc3RlciBhbHJlYWR5S2lsbGVkOwogCiAgICAgICAgICAgICBhdXRvIHByb2Nlc3NL
aWxsZWRPcGVyYW5kID0gWyZdIChWaXJ0dWFsUmVnaXN0ZXIgcmVnKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR1BoYW50b21JbnNlcnRpb25Q
aGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
S2lsbGVkIG9wZXJhbmQ6ICIsIHJlZywgIlxuIik7CiAKICAgICAgICAgICAgICAgICAvLyBBbHJl
YWR5IGhhbmRsZWQgZnJvbSBTZXRMb2NhbC4KQEAgLTE1NSw3ICsxNTcsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIGlmIChraWxsZWROb2RlLT5lcG9jaCgpID09IGN1cnJlbnRFcG9jaCkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgaWYgKERGR1BoYW50b21JbnNl
cnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coCiAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIEluc2VydGluZyBQaGFudG9tIG9uICIs
IGtpbGxlZE5vZGUsICIgYWZ0ZXIgIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLT5h
dChsYXN0RXhpdGluZ0luZGV4KSwgIlxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCmluZGV4IGQzZGE1NTI3ZDYzYmMw
NzY5ODBlZDQwNGQ1NzMwNjVkNGE4NTE2YmEuLjE0Y2VkMmFhOGQ4MmM2ZWJjYjM1ZTk0Y2E2ZmEy
ZTJhM2UzMzg0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0
U3RhY2tTaW5raW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCkBAIC00Miw3ICs0Miw5IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAotYm9vbCB2ZXJib3NlID0gZmFsc2U7
CituYW1lc3BhY2UgREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbCB7CitzdGF0aWMgY29u
c3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIFB1dFN0YWNrU2lua2luZ1BoYXNl
IDogcHVibGljIFBoYXNlIHsKIHB1YmxpYzoKQEAgLTcxLDcgKzczLDcgQEAgcHVibGljOgogICAg
ICAgICAvLyB0aGUgc3RhY2suIEl0J3Mgbm90IGNsZWFyIHRvIG1lIGlmIHRoaXMgaXMgaW1wb3J0
YW50IG9yIG5vdC4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0NTI5NgogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAg
aWYgKERGR1B1dFN0YWNrU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAg
ICAgIGRhdGFMb2coIkdyYXBoIGJlZm9yZSBQdXRTdGFjayBzaW5raW5nOlxuIik7CiAgICAgICAg
ICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQpAQCAtMTA1LDcgKzEwNyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICBPcGVyYW5kczxib29sPiBsaXZlID0gbGl2ZUF0VGFpbFtibG9j
a107CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXggPSBibG9jay0+c2l6
ZSgpOyBub2RlSW5kZXgtLTspIHsKICAgICAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJs
b2NrLT5hdChub2RlSW5kZXgpOwotICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJMaXZlIGF0ICIsIG5vZGUs
ICI6ICIsIGxpdmUsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgVmVjdG9yPFZpcnR1YWxSZWdpc3RlciwgND4gcmVhZHM7CkBAIC0xMTMsNyArMTE1LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBhdXRvIGVzY2FwZUhhbmRsZXIgPSBbJl0g
KFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
b3BlcmFuZC5pc0hlYWRlcigpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICIsIG9wZXJhbmQsICIgaXMgbGl2
ZSBhdCAiLCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRzLmFwcGVu
ZChvcGVyYW5kKTsKICAgICAgICAgICAgICAgICAgICAgfTsKQEAgLTIzMCw3ICsyMzIsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgT3BlcmFuZHM8Rmx1c2hGb3JtYXQ+IGRlZmVycmVkID0g
ZGVmZXJyZWRBdEhlYWRbYmxvY2tdOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IGZvciAoTm9kZSogbm9kZSA6ICpibG9jaykgewotICAgICAgICAgICAgICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2luZ1BoYXNlSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJEZWZlcnJl
ZCBhdCAiLCBub2RlLCAiOiIsIGRlZmVycmVkLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEdldFN0YWNrKSB7CkBAIC0y
NzcsNyArMjc5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBhdXRvIGVzY2FwZUhhbmRsZXIgPSBbJl0g
KFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQ
aGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIkZvciAiLCBub2RlLCAiIGVzY2FwaW5nICIsIG9wZXJhbmQsICJcbiIpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNIZWFkZXIoKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CkBAIC0zMDMsMTMgKzMwNSwxMyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBi
bG9jay0+c3VjY2Vzc29ycygpKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSBkZWZlcnJlZC5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2luZ1Bo
YXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiQ29uc2lkZXJpbmcgIiwgVmlydHVhbFJlZ2lzdGVyKGRlZmVycmVkLm9wZXJhbmRGb3JJbmRl
eChpKSksICIgYXQgIiwgcG9pbnRlckR1bXAoYmxvY2spLCAiLT4iLCBwb2ludGVyRHVtcChzdWNj
ZXNzb3IpLCAiOiAiLCBkZWZlcnJlZFtpXSwgIiBhbmQgIiwgZGVmZXJyZWRBdEhlYWRbc3VjY2Vz
c29yXVtpXSwgIiBtZXJnZXMgdG8gIik7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVy
cmVkQXRIZWFkW3N1Y2Nlc3Nvcl1baV0gPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1l
cmdlKGRlZmVycmVkQXRIZWFkW3N1Y2Nlc3Nvcl1baV0sIGRlZmVycmVkW2ldKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKGRlZmVycmVk
QXRIZWFkW3N1Y2Nlc3Nvcl1baV0sICJcbiIpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQpAQCAtMzg3LDcgKzM4OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICBpZiAoIWlzQ29uY3JldGUoZm9ybWF0KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBp
ZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiQWRkaW5nIFBoaSBmb3IgIiwgb3BlcmFuZCwgIiBhdCAiLCBwb2lu
dGVyRHVtcChibG9jayksICJcbiIpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IE5vZGUqIHBoaU5vZGUgPSBtX2dyYXBoLmFkZE5vZGUoU3BlY0hlYXBUb3AsIFBoaSwgYmxvY2st
PmF0KDApLT5vcmlnaW4ud2l0aEludmFsaWRFeGl0KCkpOwpAQCAtNDExLDcgKzQxMyw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICBtYXBwaW5nLm9wZXJhbmQob3BlcmFuZCkgPSBkZWYtPnZh
bHVlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiTWFwcGluZyBhdCB0b3Agb2YgIiwgcG9p
bnRlckR1bXAoYmxvY2spLCAiOiAiLCBtYXBwaW5nLCAiXG4iKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgZm9yIChTU0FDYWxjdWxhdG9yOjpEZWYqIHBoaURlZiA6IHNzYUNhbGN1bGF0b3Iu
cGhpc0ZvckJsb2NrKGJsb2NrKSkgewpAQCAtNDE5LDcgKzQyMSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0KDAsIHBoaURl
Zi0+dmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgICAgICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2luZ1BoYXNlSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgIE1hcHBpbmcgIiwgb3Bl
cmFuZCwgIiB0byAiLCBwaGlEZWYtPnZhbHVlKCksICJcbiIpOwogICAgICAgICAgICAgICAgIG1h
cHBpbmcub3BlcmFuZChvcGVyYW5kKSA9IHBoaURlZi0+dmFsdWUoKTsKICAgICAgICAgICAgIH0K
QEAgLTQyNyw3ICs0MjksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBkZWZlcnJlZCA9IGRlZmVy
cmVkQXRIZWFkW2Jsb2NrXTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0g
MDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAgICAgICAgICAg
ICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAgICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2luZ1BoYXNl
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkRlZmVycmVk
IGF0ICIsIG5vZGUsICI6IiwgZGVmZXJyZWQsICJcbiIpOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewpAQCAtNDM1LDcgKzQzNyw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICAgICAgU3RhY2tBY2Nlc3NEYXRhKiBkYXRhID0gbm9kZS0+
c3RhY2tBY2Nlc3NEYXRhKCk7CiAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBv
cGVyYW5kID0gZGF0YS0+bG9jYWw7CiAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLm9wZXJh
bmQob3BlcmFuZCkgPSBkYXRhLT5mb3JtYXQ7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgIE1hcHBp
bmcgIiwgb3BlcmFuZCwgIiB0byAiLCBub2RlLT5jaGlsZDEoKS5ub2RlKCksICIgYXQgIiwgbm9k
ZSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcub3BlcmFuZChvcGVyYW5kKSA9
IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC00
NzAsNyArNDcyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IGRlZmF1bHQ6IHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBlc2NhcGVIYW5kbGVyID0gWyZd
IChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5n
UGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKCJGb3IgIiwgbm9kZSwgIiBlc2NhcGluZyAiLCBvcGVyYW5kLCAiXG4iKTsKIAogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNIZWFkZXIoKSkKQEAgLTQ4NCw3ICs0ODYs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gR290dGEgaW5zZXJ0IGEgUHV0U3RhY2su
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkluc2VydGluZyBhIFB1dFN0YWNrIGZv
ciAiLCBvcGVyYW5kLCAiIGF0ICIsIG5vZGUsICJcbiIpOwogCiAgICAgICAgICAgICAgICAgICAg
ICAgICBOb2RlKiBpbmNvbWluZyA9IG1hcHBpbmcub3BlcmFuZChvcGVyYW5kKTsKQEAgLTUyMyw3
ICs1MjUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHBoaU5vZGUgPSBw
aGlEZWYtPnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIFNTQUNhbGN1bGF0b3I6OlZhcmlh
YmxlKiB2YXJpYWJsZSA9IHBoaURlZi0+dmFyaWFibGUoKTsKICAgICAgICAgICAgICAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBpbmRleFRvT3BlcmFuZFt2YXJpYWJsZS0+aW5kZXgo
KV07Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAg
ICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIkNyZWF0aW5nIFVwc2lsb24gZm9yICIsIG9wZXJhbmQs
ICIgYXQgIiwgcG9pbnRlckR1bXAoYmxvY2spLCAiLT4iLCBwb2ludGVyRHVtcChzdWNjZXNzb3JC
bG9jayksICJcbiIpOwogICAgICAgICAgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQgPSBk
ZWZlcnJlZEF0SGVhZFtzdWNjZXNzb3JCbG9ja10ub3BlcmFuZChvcGVyYW5kKTsKICAgICAgICAg
ICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBpc0NvbmNyZXRlKGZvcm1h
dCkpOwpAQCAtNTY4LDcgKzU3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR1B1dFN0
YWNrU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2co
IkdyYXBoIGFmdGVyIFB1dFN0YWNrIHNpbmtpbmc6XG4iKTsKICAgICAgICAgICAgIG1fZ3JhcGgu
ZHVtcCgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCmluZGV4IDNhMmE3MTcyYWQ3
M2Q2YTNlMDEwNzI5MmU1Yjk3MDU0OTQ3ZjhmMWEuLmI1ZTJjMzUwYjE4MWY5YjA2MzkzMjE1YTQy
YWFhZDc2YjY1ZWQ4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCkBAIC00Myw3ICs0Myw5IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAotYm9vbCB2
ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJ
bnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGVudW0g
Y2xhc3MgUGhhc2VNb2RlIHsKICAgICAvLyBEb2VzIG9ubHkgYSBsb2NhbCBhbmFseXNpcyBmb3Ig
c3RvcmUgYmFycmllciBpbnNlcnRpb24gYW5kIGFzc3VtZXMgdGhhdCBwb2ludGVycyBsaXZlCkBA
IC03NSw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIHJ1bigpCiAgICAgewotICAg
ICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiU3RhcnRpbmcg
c3RvcmUgYmFycmllciBpbnNlcnRpb246XG4iKTsKICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgp
OwogICAgICAgICB9CkBAIC0xNjcsNyArMTY5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBi
b29sIGhhbmRsZUJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrKQogICAgIHsKLSAgICAgICAgaWYgKHZl
cmJvc2UpIHsKKyAgICAgICAgaWYgKERGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlSW50ZXJu
YWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkRlYWxpbmcgd2l0aCBibG9jayAi
LCBwb2ludGVyRHVtcChibG9jayksICJcbiIpOwogICAgICAgICAgICAgaWYgKHJlYWxseUluc2Vy
dEJhcnJpZXJzKCkpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIFJlYWxseSBpbnNlcnRp
bmcgYmFycmllcnMuXG4iKTsKQEAgLTIwNiw3ICsyMDgsNyBAQCBwcml2YXRlOgogICAgICAgICBm
b3IgKG1fbm9kZUluZGV4ID0gMDsgbV9ub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyArK21fbm9k
ZUluZGV4KSB7CiAgICAgICAgICAgICBtX25vZGUgPSBibG9jay0+YXQobV9ub2RlSW5kZXgpOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgaWYg
KERGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAg
ICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAiICAgICIsIG1fY3VycmVu
dEVwb2NoLCAiOiBMb29raW5nIGF0IG5vZGUgIiwgbV9ub2RlLCAiIHdpdGggY2hpbGRyZW46ICIp
OwogICAgICAgICAgICAgICAgIENvbW1hUHJpbnRlciBjb21tYTsKQEAgLTM0OCw3ICszNTAsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgaWYgKERGR1N0
b3JlQmFycmllckluc2VydGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAg
ICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAiICAgICIsIG1fY3VycmVudEVwb2No
LCAiOiBEb25lIHdpdGggbm9kZSAiLCBtX25vZGUsICIgKCIsIG1fbm9kZS0+ZXBvY2goKSwKICAg
ICAgICAgICAgICAgICAgICAgIikgd2l0aCBjaGlsZHJlbjogIik7CkBAIC0zODAsNyArMzgyLDcg
QEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNvbnNpZGVyQmFycmllcihFZGdlIGJhc2UsIEVk
Z2UgY2hpbGQpCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR1N0
b3JlQmFycmllckluc2VydGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgICAgIENvbnNpZGVyaW5nIGFkZGluZyBiYXJyaWVyICIsIGJhc2UsICIgPT4g
IiwgY2hpbGQsICJcbiIpOwogICAgICAgICAKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCBhIHN0
b3JlIGJhcnJpZXIgaWYgdGhlIGNoaWxkIGlzIGd1YXJhbnRlZWQgdG8gbm90IGJlIGEgY2VsbC4K
QEAgLTM4OSw3ICszOTEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8gRG9uJ3QgdHJ5IHRv
byBoYXJkIGJlY2F1c2UgaXQncyB0b28gZXhwZW5zaXZlIHRvIHJ1biBBSS4KICAgICAgICAgICAg
IGlmIChjaGlsZC0+aGFzQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgICAgIGlmICghY2hpbGQt
PmFzSlNWYWx1ZSgpLmlzQ2VsbCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAg
ICAgICAgIFJlamVjdGluZyBiZWNhdXNlIG9mIGNvbnN0YW50IHR5cGUuXG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAgLTQwMCw3ICs0MDIsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgTm9kZVJlc3VsdEludDMyOgogICAgICAg
ICAgICAgICAgIGNhc2UgTm9kZVJlc3VsdEludDUyOgogICAgICAgICAgICAgICAgIGNhc2UgTm9k
ZVJlc3VsdEJvb2xlYW46Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgICAgICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgICAgIFJl
amVjdGluZyBiZWNhdXNlIG9mIHJlc3VsdCB0eXBlLlxuIik7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgICAgICBkZWZhdWx0OgpAQCAtNDE0LDcgKzQxNiw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAvLyBHbyBpbnRvIHJhZ2UgbW9kZSB0byBlbGltaW5hdGUgYW55
IGNoYW5jZSBvZiBhIGJhcnJpZXIgd2l0aCBhIG5vbi1jZWxsIGNoaWxkLiBXZQogICAgICAgICAg
ICAgLy8gY2FuIGFmZm9yZCB0byBrZWVwIGFyb3VuZCBBSSBpbiBHbG9iYWwgbW9kZS4KICAgICAg
ICAgICAgIGlmICghbV9pbnRlcnByZXRlci0+bmVlZHNUeXBlQ2hlY2soY2hpbGQsIH5TcGVjQ2Vs
bCkpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAo
REZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICAgICAgUmVqZWN0aW5nIGJlY2F1c2Ugb2YgQUkg
dHlwZS5cbiIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTQy
Niw3ICs0MjgsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgY29uc2lkZXJCYXJyaWVyKEVk
Z2UgYmFzZSkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHU3Rv
cmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRh
dGFMb2coIiAgICAgICAgQ29uc2lkZXJpbmcgYWRkaW5nIGJhcnJpZXIgb24gIiwgYmFzZSwgIlxu
Iik7CiAgICAgICAgIAogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIGEgc3RvcmUgYmFycmllciBp
ZiB0aGUgZXBvY2ggb2YgdGhlIGJhc2UgaXMgaWRlbnRpY2FsIHRvIHRoZSBjdXJyZW50CkBAIC00
MzQsMTIgKzQzNiwxMiBAQCBwcml2YXRlOgogICAgICAgICAvLyBiZSBpbiBuZXdnZW4sIG9yIHdl
IGp1c3QgcmFuIGEgYmFycmllciBvbiBpdCBzbyBpdCdzIGd1YXJhbnRlZWQgdG8gYmUgcmVtZW1i
ZXJlZAogICAgICAgICAvLyBhbHJlYWR5LgogICAgICAgICBpZiAoYmFzZS0+ZXBvY2goKSA9PSBt
X2N1cnJlbnRFcG9jaCkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBp
ZiAoREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgICAgICBSZWplY3RpbmcgYmVjYXVzZSBpdCdzIGlu
IHRoZSBjdXJyZW50IGVwb2NoLlxuIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHU3RvcmVCYXJy
aWVySW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2co
IiAgICAgICAgICAgIEluc2VydGluZyBiYXJyaWVyLlxuIik7CiAgICAgICAgIGluc2VydEJhcnJp
ZXIobV9ub2RlSW5kZXggKyAxLCBiYXNlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcAppbmRleCBlM2M1
MmFjYTlkYTEzZmNkODNjMThlMDFiODU2ZjhhNDgwOTg5ZTk3Li5lOTczOTU3NzdmYTllMGQ4MjY1
M2RjODc3OGQyYTAyMDBiMDk1OTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKQEAgLTQwLDcgKzQwLDkgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZl
cmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJu
YWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBjbGFzcyBWYXJh
cmdzRm9yd2FyZGluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKIHB1YmxpYzoKQEAgLTUzLDcgKzU1
LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRy
LCBtX2dyYXBoLm1fZm9ybSAhPSBTU0EpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2Up
IHsKKyAgICAgICAgaWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9z
ZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIHZhcmFyZ3MgZm9yd2FyZGlu
ZzpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KQEAgLTg1LDcg
Kzg3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gV2UgZXhwZWN0IGNhbGxzIGludG8gdGhpcyBm
dW5jdGlvbiB0byBiZSByYXJlLiBTbywgdGhpcyBpcyB3cml0dGVuIGluIGEgc2ltcGxlIE8obikg
bWFubmVyLgogICAgICAgICAKICAgICAgICAgTm9kZSogY2FuZGlkYXRlID0gYmxvY2stPmF0KGNh
bmRpZGF0ZU5vZGVJbmRleCk7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZH
VmFyYXJnc0ZvcndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0
YUxvZygiSGFuZGxpbmcgY2FuZGlkYXRlICIsIGNhbmRpZGF0ZSwgIlxuIik7CiAgICAgICAgIAog
ICAgICAgICAvLyBGaW5kIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBub2RlIGluIHRoaXMgYmxvY2sg
dG8gdXNlIHRoZSBjYW5kaWRhdGUsIGFuZCBsb29rIGZvciBlc2NhcGluZwpAQCAtMTIxLDcgKzEy
Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBzYXdFc2NhcGUgPSB0cnVl
OwogICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICBpZiAoc2F3RXNjYXBl
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAg
ICBpZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEVzY2FwZSBhdCAiLCBub2RlLCAiXG4iKTsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAgLTEzOCw3
ICsxNDAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6CiAg
ICAgICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnc0lubGluZWRDYWxsZXI6CiAgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpID09IGNhbmRpZGF0ZSB8fCBub2RlLT5jaGlsZDIoKSA9
PSBjYW5kaWRhdGUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICAgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRXNjYXBlIGF0ICIsIG5v
ZGUsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg
fQpAQCAtMTQ4LDcgKzE1MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICBjYXNlIFNldExvY2FsOgogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKSA9
PSBjYW5kaWRhdGUgJiYgbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmlzTG9hZGVkRnJvbSgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAg
ICBpZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEVzY2FwZSBhdCAiLCBub2RlLCAiXG4iKTsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAgLTE1Niw3
ICsxNTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC51c2VzKG5vZGUsIGNhbmRpZGF0ZSkpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlm
IChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRXNjYXBlIGF0ICIsIG5vZGUsICJcbiIpOwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtMTY1LDcgKzE2
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmb3JBbGxLaWxsZWRPcGVyYW5kcygKICAgICAg
ICAgICAgICAgICBtX2dyYXBoLCBub2RlLCBibG9jay0+dHJ5QXQobm9kZUluZGV4ICsgMSksCiAg
ICAgICAgICAgICAgICAgWyZdIChWaXJ0dWFsUmVnaXN0ZXIgcmVnKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHVmFyYXJnc0Zv
cndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiICAgIEtpbGxpbmcgIiwgcmVnLCAiIHdoaWxlIHdlIGFyZSBpbnRlcmVzdGVkIGlu
ICIsIGxpc3REdW1wKHJlbGV2YW50TG9jYWxzKSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWxldmFudExvY2Fscy5zaXplKCk7ICsraSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbGV2YW50TG9jYWxzW2ldID09IHJlZykgewpA
QCAtMTc2LDcgKzE3OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfQotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
aWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgIGRhdGFMb2coIlNlbGVjdGVkIGxhc3RVc2VySW5kZXggPSAiLCBsYXN0VXNlckluZGV4LCAi
LCAiLCBibG9jay0+YXQobGFzdFVzZXJJbmRleCksICJcbiIpOwogICAgICAgICAKICAgICAgICAg
Ly8gV2UncmUgc3RpbGwgaW4gYnVzaW5lc3MuIERldGVybWluZSBpZiBiZXR3ZWVuIHRoZSBjYW5k
aWRhdGUgYW5kIHRoZSBsYXN0IHVzZXIgdGhlcmUgaXMgYW55CkBAIC0xOTMsNyArMTk1LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgWm9tYmllSGludDoKICAgICAgICAgICAgIGNhc2Ug
S2lsbFN0YWNrOgogICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudHNJbnZvbHZlU3RhY2tTbG90
KGNhbmRpZGF0ZSwgbm9kZS0+dW5saW5rZWRMb2NhbCgpKSkgewotICAgICAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR1ZhcmFyZ3NGb3J3YXJk
aW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIiAgICBJbnRlcmZlcmVuY2UgYXQgIiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBAIC0yMDEsNyArMjAzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgUHV0U3RhY2s6CiAgICAgICAg
ICAgICAgICAgaWYgKGFyZ3VtZW50c0ludm9sdmVTdGFja1Nsb3QoY2FuZGlkYXRlLCBub2RlLT5z
dGFja0FjY2Vzc0RhdGEoKS0+bG9jYWwpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZUlu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIElu
dGVyZmVyZW5jZSBhdCAiLCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICAgIH0KQEAgLTIxMCw3ICsyMTIsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgY2FzZSBTZXRMb2NhbDoKICAgICAgICAgICAgIGNhc2UgRmx1c2g6CiAgICAgICAgICAg
ICAgICAgaWYgKGFyZ3VtZW50c0ludm9sdmVTdGFja1Nsb3QoY2FuZGlkYXRlLCBub2RlLT5sb2Nh
bCgpKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBJbnRlcmZlcmVuY2UgYXQgIiwgbm9k
ZSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9
CkBAIC0yMzIsNyArMjM0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgfSwKICAg
ICAgICAgICAgICAgICAgICAgTm9PcENsb2JiZXJpemUoKSk7CiAgICAgICAgICAgICAgICAgaWYg
KGRvZXNJbnRlcmZlcmUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgICAgICAgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgSW50ZXJmZXJlbmNl
IGF0ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgfQpAQCAtMjQwLDcgKzI0Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIC8vIFdlIGNhbiBtYWtlIHRoaXMgd29yay4KLSAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgV2lsbCBkbyBmb3J3YXJkaW5nIVxuIik7CiAg
ICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwCmluZGV4IDkwMjExZmQ5NGFjNjE1YzY1YzUxZDM0
YzdkNTg4ZjRkOTNiMTI5YzcuLjliOTkxNGFlOGI4NTRkMDM1MjhhNmI4ODdiYTI4ODhlNzllZGRk
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAK
QEAgLTM4LDggKzM4LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCi11
c2luZyBuYW1lc3BhY2UgQjM7Ci0KIEFic3RyYWN0SGVhcDo6QWJzdHJhY3RIZWFwKEFic3RyYWN0
SGVhcCogcGFyZW50LCBjb25zdCBjaGFyKiBoZWFwTmFtZSwgcHRyZGlmZl90IG9mZnNldCkKICAg
ICA6IG1fb2Zmc2V0KG9mZnNldCkKICAgICAsIG1faGVhcE5hbWUoaGVhcE5hbWUpCkBAIC03Nyw3
ICs3NSw3IEBAIHZvaWQgQWJzdHJhY3RIZWFwOjpjb21wdXRlKHVuc2lnbmVkIGJlZ2luKQogCiAg
ICAgaWYgKG1fY2hpbGRyZW4uaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIE11c3Qgc3BlY2lhbC1j
YXNlIGxlYXZlcyBzbyB0aGF0IHRoZXkgdXNlIGp1c3Qgb25lIHNsb3Qgb24gdGhlIG51bWJlciBs
aW5lLgotICAgICAgICBtX3JhbmdlID0gSGVhcFJhbmdlKGJlZ2luKTsKKyAgICAgICAgbV9yYW5n
ZSA9IEIzOjpIZWFwUmFuZ2UoYmVnaW4pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04
Nyw3ICs4NSw3IEBAIHZvaWQgQWJzdHJhY3RIZWFwOjpjb21wdXRlKHVuc2lnbmVkIGJlZ2luKQog
ICAgICAgICBjdXJyZW50ID0gY2hpbGQtPnJhbmdlKCkuZW5kKCk7CiAgICAgfQogCi0gICAgbV9y
YW5nZSA9IEhlYXBSYW5nZShiZWdpbiwgY3VycmVudCk7CisgICAgbV9yYW5nZSA9IEIzOjpIZWFw
UmFuZ2UoYmVnaW4sIGN1cnJlbnQpOwogfQogCiB2b2lkIEFic3RyYWN0SGVhcDo6c2hhbGxvd0R1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCmluZGV4IDU5MDNhOGU1M2Vk
M2Q1NzUwZTFjNWNkZjAxMThkMjkyMmM1Y2NmOTIuLjQwY2M4YjgxNGMzMGU0MWM1MmNiYzVjOTdi
YjE4OGU0NjIwYzNhNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcApAQCAtNDcsOCArNDcsNiBAQAogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKLXVzaW5nIG5hbWVzcGFjZSBCMzsKLQogQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeTo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeSgpCiAgICAgOiByb290
KG51bGxwdHIsICJqc2NSb290IikKIApAQCAtOTIsNDggKzkwLDQ5IEBAIEFic3RyYWN0SGVhcFJl
cG9zaXRvcnk6On5BYnN0cmFjdEhlYXBSZXBvc2l0b3J5KCkKIHsKIH0KIAotdm9pZCBBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZU1lbW9yeShjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAs
IFZhbHVlKiB2YWx1ZSkKK3ZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVNZW1v
cnkoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQogewogICAgIG1f
aGVhcEZvck1lbW9yeS5hcHBlbmQoSGVhcEZvclZhbHVlKGhlYXAsIHZhbHVlKSk7CiB9CiAKLXZv
aWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVDQ2FsbFJlYWQoY29uc3QgQWJzdHJh
Y3RIZWFwKiBoZWFwLCBWYWx1ZSogdmFsdWUpCit2b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6
OmRlY29yYXRlQ0NhbGxSZWFkKGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwgQjM6OlZhbHVlKiB2
YWx1ZSkKIHsKICAgICBtX2hlYXBGb3JDQ2FsbFJlYWQuYXBwZW5kKEhlYXBGb3JWYWx1ZShoZWFw
LCB2YWx1ZSkpOwogfQogCi12b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlQ0Nh
bGxXcml0ZShjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIFZhbHVlKiB2YWx1ZSkKK3ZvaWQgQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVDQ2FsbFdyaXRlKGNvbnN0IEFic3RyYWN0SGVh
cCogaGVhcCwgQjM6OlZhbHVlKiB2YWx1ZSkKIHsKICAgICBtX2hlYXBGb3JDQ2FsbFdyaXRlLmFw
cGVuZChIZWFwRm9yVmFsdWUoaGVhcCwgdmFsdWUpKTsKIH0KIAotdm9pZCBBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5OjpkZWNvcmF0ZVBhdGNocG9pbnRSZWFkKGNvbnN0IEFic3RyYWN0SGVhcCogaGVh
cCwgVmFsdWUqIHZhbHVlKQordm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZVBh
dGNocG9pbnRSZWFkKGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwgQjM6OlZhbHVlKiB2YWx1ZSkK
IHsKICAgICBtX2hlYXBGb3JQYXRjaHBvaW50UmVhZC5hcHBlbmQoSGVhcEZvclZhbHVlKGhlYXAs
IHZhbHVlKSk7CiB9CiAKLXZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVQYXRj
aHBvaW50V3JpdGUoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBWYWx1ZSogdmFsdWUpCit2b2lk
IEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlUGF0Y2hwb2ludFdyaXRlKGNvbnN0IEFi
c3RyYWN0SGVhcCogaGVhcCwgQjM6OlZhbHVlKiB2YWx1ZSkKIHsKICAgICBtX2hlYXBGb3JQYXRj
aHBvaW50V3JpdGUuYXBwZW5kKEhlYXBGb3JWYWx1ZShoZWFwLCB2YWx1ZSkpOwogfQogCi12b2lk
IEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlRmVuY2VSZWFkKGNvbnN0IEFic3RyYWN0
SGVhcCogaGVhcCwgVmFsdWUqIHZhbHVlKQordm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Ojpk
ZWNvcmF0ZUZlbmNlUmVhZChjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIEIzOjpWYWx1ZSogdmFs
dWUpCiB7CiAgICAgbV9oZWFwRm9yRmVuY2VSZWFkLmFwcGVuZChIZWFwRm9yVmFsdWUoaGVhcCwg
dmFsdWUpKTsKIH0KIAotdm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUZlbmNl
V3JpdGUoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBWYWx1ZSogdmFsdWUpCit2b2lkIEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlRmVuY2VXcml0ZShjb25zdCBBYnN0cmFjdEhlYXAq
IGhlYXAsIEIzOjpWYWx1ZSogdmFsdWUpCiB7CiAgICAgbV9oZWFwRm9yRmVuY2VXcml0ZS5hcHBl
bmQoSGVhcEZvclZhbHVlKGhlYXAsIHZhbHVlKSk7CiB9CiAKLXZvaWQgQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeTo6ZGVjb3JhdGVGZW5jZWRBY2Nlc3MoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBW
YWx1ZSogdmFsdWUpCit2b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlRmVuY2Vk
QWNjZXNzKGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwgQjM6OlZhbHVlKiB2YWx1ZSkKIHsKICAg
ICBtX2hlYXBGb3JGZW5jZWRBY2Nlc3MuYXBwZW5kKEhlYXBGb3JWYWx1ZShoZWFwLCB2YWx1ZSkp
OwogfQogCiB2b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmNvbXB1dGVSYW5nZXNBbmREZWNv
cmF0ZUluc3RydWN0aW9ucygpCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIEIzOwogICAgIHJvb3Qu
Y29tcHV0ZSgpOwogCiAgICAgaWYgKHZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKaW5kZXggNjc2YjM5MDljODdkMGRhOTBjNWQ4
ZGI2NjA4YWQyMTRjNTk4OTY2OS4uN2MwMTgxZDhkMWU0YjkzOGRlZTcwYWI5MWQ2NjJlMDg0YzAy
OTJhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCkBAIC00MSwxMCArNDEs
OSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKLXVzaW5nIG5hbWVzcGFj
ZSBERkc7Ci0KIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiB7CisgICAgdXNpbmcgbmFtZXNwYWNl
IERGRzsKICAgICBHcmFwaCYgZ3JhcGggPSBzdGF0ZS5ncmFwaDsKICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGdyYXBoLm1fY29kZUJsb2NrOwogICAgIFZNJiB2bSA9IGdyYXBoLm1fdm07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNl
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5j
cHAKaW5kZXggMDFjMDZlNzVjNWIwMGVkMTA2OGU3YjRjZjFhNzI4YzU5NGNmOTFlMi4uYzVhNmM2
Njk3NTkyZjc5NDBlZmZhNTU2MTllZjMzYTBkNTAxZDZlZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcApAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgIk1hcmtpbmdDb25zdHJhaW50U2V0LmgiCiAKICNpbmNsdWRlICJPcHRp
b25zLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1RpbWVXaXRo
RHluYW1pY0Nsb2NrVHlwZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEwNiwxNSArMTA3LDE1
IEBAIHZvaWQgTWFya2luZ0NvbnN0cmFpbnRTZXQ6OmRpZFN0YXJ0TWFya2luZygpCiAgICAgbV9p
dGVyYXRpb24gPSAxOwogfQogCi12b2lkIE1hcmtpbmdDb25zdHJhaW50U2V0OjphZGQoQ1N0cmlu
ZyBhYmJyZXZpYXRlZE5hbWUsIENTdHJpbmcgbmFtZSwgRnVuY3Rpb248dm9pZChTbG90VmlzaXRv
ciYsIGNvbnN0IFZpc2l0aW5nVGltZW91dCYpPiBmdW5jdGlvbiwgQ29uc3RyYWludFZvbGF0aWxp
dHkgdm9sYXRpbGl0eSkKK3ZvaWQgTWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZChDU3RyaW5nIGFi
YnJldmlhdGVkTmFtZSwgQ1N0cmluZyBuYW1lLCA6OkZ1bmN0aW9uPHZvaWQoU2xvdFZpc2l0b3Im
LCBjb25zdCBWaXNpdGluZ1RpbWVvdXQmKT4gZnVuY3Rpb24sIENvbnN0cmFpbnRWb2xhdGlsaXR5
IHZvbGF0aWxpdHkpCiB7CiAgICAgYWRkKHN0ZDo6bWFrZV91bmlxdWU8TWFya2luZ0NvbnN0cmFp
bnQ+KFdURk1vdmUoYWJicmV2aWF0ZWROYW1lKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShmdW5j
dGlvbiksIHZvbGF0aWxpdHkpKTsKIH0KIAogdm9pZCBNYXJraW5nQ29uc3RyYWludFNldDo6YWRk
KAogICAgIENTdHJpbmcgYWJicmV2aWF0ZWROYW1lLCBDU3RyaW5nIG5hbWUsCi0gICAgRnVuY3Rp
b248dm9pZChTbG90VmlzaXRvciYsIGNvbnN0IFZpc2l0aW5nVGltZW91dCYpPiBleGVjdXRlRnVu
Y3Rpb24sCi0gICAgRnVuY3Rpb248ZG91YmxlKFNsb3RWaXNpdG9yJik+IHF1aWNrV29ya0VzdGlt
YXRlRnVuY3Rpb24sCisgICAgOjpGdW5jdGlvbjx2b2lkKFNsb3RWaXNpdG9yJiwgY29uc3QgVmlz
aXRpbmdUaW1lb3V0Jik+IGV4ZWN1dGVGdW5jdGlvbiwKKyAgICA6OkZ1bmN0aW9uPGRvdWJsZShT
bG90VmlzaXRvciYpPiBxdWlja1dvcmtFc3RpbWF0ZUZ1bmN0aW9uLAogICAgIENvbnN0cmFpbnRW
b2xhdGlsaXR5IHZvbGF0aWxpdHkpCiB7CiAgICAgYWRkKHN0ZDo6bWFrZV91bmlxdWU8TWFya2lu
Z0NvbnN0cmFpbnQ+KFdURk1vdmUoYWJicmV2aWF0ZWROYW1lKSwgV1RGTW92ZShuYW1lKSwgV1RG
TW92ZShleGVjdXRlRnVuY3Rpb24pLCBXVEZNb3ZlKHF1aWNrV29ya0VzdGltYXRlRnVuY3Rpb24p
LCB2b2xhdGlsaXR5KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvU2hhZG93Q2hpY2tlbi5jcHAKaW5kZXggYWU2ZTE4MzVlMmUyZTdhNDMwMGY3ZGZhMGExMWIy
ODZkM2YxZmMzMS4uZjcwNjY2ZDg5NzBmNmM3MzMxNTkwNzgxNzdkM2VhM2M1NTgwYWI3MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0NoaWNrZW4u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2Vu
LmNwcApAQCAtMzMsNyArMzMsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFtZXNwYWNlIFNo
YWRvd0NoaWNrZW5JbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7
Cit9CiAKIHZvaWQgU2hhZG93Q2hpY2tlbjo6UGFja2V0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CiB7CkBAIC04Niw3ICs4OCw3IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6bG9nKFZNJiB2
bSwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBQYWNrZXQmIHBhY2tldCkKIAogdm9pZCBTaGFkb3dD
aGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgaWYgKHZlcmJv
c2UpIHsKKyAgICBpZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAg
IGRhdGFMb2coIlJ1bm5pbmcgdXBkYXRlIG9uOiAiLCAqdGhpcywgIlxuIik7CiAgICAgICAgIFdU
RlJlcG9ydEJhY2t0cmFjZSgpOwogICAgIH0KQEAgLTExMiwxMyArMTE0LDEzIEBAIHZvaWQgU2hh
ZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB9CiAg
ICAgfQogICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkhpZ2hlc3QgcG9pbnQgc2luY2UgbGFzdCB0
aW1lOiAiLCBSYXdQb2ludGVyKGhpZ2hlc3RQb2ludFNpbmNlTGFzdFRpbWUpLCAiXG4iKTsKICAg
ICAKICAgICB3aGlsZSAoIW1fc3RhY2suaXNFbXB0eSgpICYmIChtX3N0YWNrLmxhc3QoKS5mcmFt
ZSA8IGhpZ2hlc3RQb2ludFNpbmNlTGFzdFRpbWUgfHwgbV9zdGFjay5sYXN0KCkuaXNUYWlsRGVs
ZXRlZCkpCiAgICAgICAgIG1fc3RhY2sucmVtb3ZlTGFzdCgpOwogICAgIAotICAgIGlmICh2ZXJi
b3NlKQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRh
dGFMb2coIiAgICBSZXZpc2VkIHN0YWNrOiAiLCBsaXN0RHVtcChtX3N0YWNrKSwgIlxuIik7CiAg
ICAgCiAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSB0b3Agb2Ygc3RhY2sgaXMgbm93IHRh
aWwtZGVsZXRlZC4gVGhlIHN0YWNrIG5vIGxvbmdlciBjb250YWlucyBhbnkKQEAgLTE0MSw3ICsx
NDMsNyBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhl
YykKICAgICB9CiAKICAgICAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoU2hhZG93Q2hpY2tl
bkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCIgICAgUmV2aXNlZCBzdGFjazog
IiwgbGlzdER1bXAobV9zdGFjayksICJcbiIpOwogICAgIAogICAgIC8vIFRoZSBsb2ctYmFzZWQg
YW5kIGV4ZWMtYmFzZWQgcnVsZXMgcmVxdWlyZSB0aGF0IFNoYWRvd0NoaWNrZW4gd2FzIGVuYWJs
ZWQuIFRoZSBwb2ludCBvZgpAQCAtMTY5LDcgKzE3MSw3IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6
dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgfSk7CiAgICAgICAg
IHN0YWNrUmlnaHROb3cucmV2ZXJzZSgpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICBkYXRhTG9nKCIgICAgU3RhY2sgcmlnaHQgbm93OiAiLCBsaXN0RHVtcChzdGFja1JpZ2h0Tm93
KSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCBzaGFkb3dJbmRleCA9IDA7CkBA
IC0xOTQsNyArMTk2LDcgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIH0KICAgICAgICAgbV9zdGFjay5yZXNpemUoc2hhZG93SW5k
ZXgpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChTaGFkb3dD
aGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgUmV2aXNl
ZCBzdGFjazogIiwgbGlzdER1bXAobV9zdGFjayksICJcbiIpOwogICAgIH0KICAgICAKQEAgLTIw
OCwxNyArMjEwLDE3IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGlmICh2ZXJib3NlKQorICAg
IGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAg
ICBIaWdoZXN0IHBvaW50IHNpbmNlIGxhc3QgdGltZTogIiwgUmF3UG9pbnRlcihoaWdoZXN0UG9p
bnRTaW5jZUxhc3RUaW1lKSwgIlxuIik7CiAgICAgCiAgICAgLy8gU2V0IGV2ZXJ5dGhpbmcgdXAg
c28gdGhhdCB3ZSBrbm93IHdoZXJlIHRoZSB0b3AgZnJhbWUgaXMgaW4gdGhlIGxvZy4KICAgICB1
bnNpZ25lZCBpbmRleEluTG9nID0gbG9nQ3Vyc29ySW5kZXg7CiAgICAgCiAgICAgYXV0byBhZHZh
bmNlSW5kZXhJbkxvZ1RvID0gWyZdIChDYWxsRnJhbWUqIGZyYW1lLCBKU09iamVjdCogY2FsbGVl
LCBDYWxsRnJhbWUqIGNhbGxlckZyYW1lKSAtPiBib29sIHsKLSAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICBkYXRhTG9nKCIgICAgQWR2YW5jaW5nIHRvIGZyYW1lID0gIiwgUmF3UG9pbnRlcihmcmFtZSks
ICIgZnJvbSBpbmRleEluTG9nID0gIiwgaW5kZXhJbkxvZywgIlxuIik7CiAgICAgICAgIGlmIChp
bmRleEluTG9nID4gbG9nQ3Vyc29ySW5kZXgpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGluZy5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CkBAIC0yNDQsNyArMjQ2LDcgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1
cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBpZiAocGFja2V0Lmlz
UHJvbG9ndWUoKSAmJiBwYWNrZXQuZnJhbWUgPT0gZnJhbWUKICAgICAgICAgICAgICAgICAmJiAo
IWNhbGxlZSB8fCBwYWNrZXQuY2FsbGVlID09IGNhbGxlZSkKICAgICAgICAgICAgICAgICAmJiAo
IWNhbGxlckZyYW1lIHx8IHBhY2tldC5jYWxsZXJGcmFtZSA9PSBjYWxsZXJGcmFtZSkpIHsKLSAg
ICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoU2hhZG93Q2hp
Y2tlbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
Rm91bmQgYXQgaW5kZXhJbkxvZyA9ICIsIGluZGV4SW5Mb2csICJcbiIpOwogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMjY2LDcgKzI2OCw3IEBAIHZvaWQg
U2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAv
LyBJdCBzZWVtcyBsaWtlIHRoZSBsYXR0ZXIgb3B0aW9uIGlzIGxlc3MgaGFybWZ1bCwgc28gdGhh
dCdzIHdoYXQgd2UgZG8uCiAgICAgICAgIGluZGV4SW5Mb2cgPSBvbGRJbmRleEluTG9nOwogICAg
ICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRGlkbid0IGZpbmQgaXQu
XG4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH07CkBAIC0yODYsMTAgKzI4OCwxMCBA
QCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSB2aXNpdG9y
LT5jYWxsRnJhbWUoKTsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYg
KFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgRXhhbWluaW5nICIsIFJhd1BvaW50ZXIoY2FsbEZyYW1lKSwgIlxuIik7CiAgICAgICAg
ICAgICBpZiAoY2FsbEZyYW1lID09IGhpZ2hlc3RQb2ludFNpbmNlTGFzdFRpbWUpIHsKLSAgICAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoU2hhZG93Q2hpY2tl
bkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQmFp
bGluZyBhdCAiLCBSYXdQb2ludGVyKGNhbGxGcmFtZSksICIgYmVjYXVzZSBpdCdzIHRoZSBoaWdo
ZXN0IHBvaW50IHNpbmNlIGxhc3QgdGltZS5cbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBT
dGFja1Zpc2l0b3I6OkRvbmU7CiAgICAgICAgICAgICB9CkBAIC0zMTIsNyArMzE0LDcgQEAgdm9p
ZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAg
ICAgICAgICAgLy8gVGhpcyBjb25kaXRpb24gcHJvdGVjdHMgdXMgZnJvbSB0aGUgY2FzZSB3aGVy
ZSBhZHZhbmNlSW5kZXhJbkxvZ1RvIGRpZG4ndCBmaW5kCiAgICAgICAgICAgICAgICAgLy8gYW55
dGhpbmcuCiAgICAgICAgICAgICAgICAgJiYgbV9sb2dbaW5kZXhJbkxvZ10uZnJhbWUgPT0gdG9Q
dXNoLmxhc3QoKS5mcmFtZSkgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2coIiAgICBHb2luZyB0byBsb29wIHRocm91Z2ggdG8gZmluZCB0YWls
IGRlbGV0ZWQgZnJhbWVzIHdpdGggaW5kZXhJbkxvZyA9ICIsIGluZGV4SW5Mb2csICIgYW5kIHB1
c2gtc3RhY2sgdG9wID0gIiwgdG9QdXNoLmxhc3QoKSwgIlxuIik7CiAgICAgICAgICAgICAgICAg
Zm9yICg7OykgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9sb2dbaW5kZXhJbkxvZ10u
ZnJhbWUgPT0gdG9QdXNoLmxhc3QoKS5mcmFtZSk7CkBAIC0zMzcsNyArMzM5LDcgQEAgdm9pZCBT
aGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAg
ICAgICAgICAgIGluZGV4SW5Mb2ctLTsgLy8gU2tpcCBvdmVyIHRoZSB0YWlsIHBhY2tldC4KICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmICghYWR2YW5jZUluZGV4
SW5Mb2dUbyh0YWlsUGFja2V0LmZyYW1lLCBudWxscHRyLCBudWxscHRyKSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
U2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkNhbid0IGZpbmQgcHJvbG9ndWUgcGFja2V0IGZvciB0YWlsOiAiLCBSYXdQ
b2ludGVyKHRhaWxQYWNrZXQuZnJhbWUpLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIFdlIHdlcmUgdW5hYmxlIHRvIGxvY2F0ZSB0aGUgcHJvbG9ndWUgcGFja2V0IGZvciB0aGlz
IHRhaWwgcGFja2V0LgogICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyByYXJlIGJ1
dCBjYW4gaGFwcGVuIGluIGEgc2l0dWF0aW9uIGxpa2U6CkBAIC0zNTcsNyArMzU5LDcgQEAgdm9p
ZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAg
ICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKICAgICAgICAgfSk7CiAKLSAgICBp
ZiAodmVyYm9zZSkKKyAgICBpZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICBkYXRhTG9nKCIgICAgUHVzaGluZzogIiwgbGlzdER1bXAodG9QdXNoKSwgIlxuIik7CiAg
ICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gdG9QdXNoLnNpemUoKTsgaS0tOykKQEAgLTM3Myw3
ICszNzUsNyBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSog
ZXhlYykKICAgICB9IGVsc2UKICAgICAgICAgbV9sb2dDdXJzb3IgPSBtX2xvZzsKIAotICAgIGlm
ICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgIGRhdGFMb2coIiAgICBBZnRlciBwdXNoaW5nOiAiLCAqdGhpcywgIlxuIik7CiAKICAgICAv
LyBSZW1vdmUgdGFpbCBmcmFtZXMgdW50aWwgdGhlIG51bWJlciBvZiB0YWlsIGRlbGV0ZWQgZnJh
bWVzIGlzIHNtYWxsIGVub3VnaC4KQEAgLTM5OSw3ICs0MDEsNyBAQCB2b2lkIFNoYWRvd0NoaWNr
ZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgfQogICAgIH0KIAot
ICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgIGRhdGFMb2coIiAgICBBZnRlciBjbGVhbi11cDogIiwgKnRoaXMsICJcbiIpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0JpbmFyeVN3aXRjaC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0JpbmFyeVN3aXRjaC5jcHAKaW5kZXggZjNk
ZGNmY2E5MjFjOTgxZWYyOGMwYjdkNmQ3YTUxZjVlZmQ1Mzg4Yi4uMGVhYjU2NTE5MjUzMjllMTdi
M2Y1Y2EyNWRiMTM0YWI0ZGQ5YTY3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9CaW5hcnlTd2l0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQmlu
YXJ5U3dpdGNoLmNwcApAQCAtMzMsNyArMzMsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFt
ZXNwYWNlIEJpbmFyeVN3aXRjaEludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2Ug
PSBmYWxzZTsKK30KIAogc3RhdGljIHVuc2lnbmVkIGdsb2JhbENvdW50ZXI7IC8vIFdlIHVzZSBh
IGRpZmZlcmVudCBzZWVkIGV2ZXJ5IHRpbWUgd2UgYXJlIGludm9rZWQuCiAKQEAgLTQ3LDcgKzQ5
LDcgQEAgQmluYXJ5U3dpdGNoOjpCaW5hcnlTd2l0Y2goR1BSUmVnIHZhbHVlLCBjb25zdCBWZWN0
b3I8aW50NjRfdD4mIGNhc2VzLCBUeXBlIHR5cGUKICAgICBpZiAoY2FzZXMuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQmluYXJ5U3dpdGNo
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIk9yaWdpbmFsIGNhc2VzOiAiLCBs
aXN0RHVtcChjYXNlcyksICJcbiIpOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBjYXNlcy5zaXplKCk7ICsraSkKQEAgLTU1LDcgKzU3LDcgQEAgQmluYXJ5U3dpdGNoOjpCaW5h
cnlTd2l0Y2goR1BSUmVnIHZhbHVlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGNhc2VzLCBUeXBl
IHR5cGUKICAgICAKICAgICBzdGQ6OnNvcnQobV9jYXNlcy5iZWdpbigpLCBtX2Nhc2VzLmVuZCgp
KTsKIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChCaW5hcnlTd2l0Y2hJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgZGF0YUxvZygiU29ydGVkIGNhc2VzOiAiLCBsaXN0RHVtcChtX2Nhc2Vz
KSwgIlxuIik7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IG1fY2FzZXMuc2l6
ZSgpOyArK2kpCkBAIC0xMzcsMTEgKzEzOSwxMSBAQCBib29sIEJpbmFyeVN3aXRjaDo6YWR2YW5j
ZShNYWNyb0Fzc2VtYmxlciYgaml0KQogCiB2b2lkIEJpbmFyeVN3aXRjaDo6YnVpbGQodW5zaWdu
ZWQgc3RhcnQsIGJvb2wgaGFyZFN0YXJ0LCB1bnNpZ25lZCBlbmQpCiB7Ci0gICAgaWYgKHZlcmJv
c2UpCisgICAgaWYgKEJpbmFyeVN3aXRjaEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRh
TG9nKCJCdWlsZGluZyB3aXRoIHN0YXJ0ID0gIiwgc3RhcnQsICIsIGhhcmRTdGFydCA9ICIsIGhh
cmRTdGFydCwgIiwgZW5kID0gIiwgZW5kLCAiXG4iKTsKIAogICAgIGF1dG8gYXBwZW5kID0gWyZd
IChjb25zdCBCcmFuY2hDb2RlJiBjb2RlKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICBpZiAoQmluYXJ5U3dpdGNoSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9n
KCI9PT4gIiwgY29kZSwgIlxuIik7CiAgICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKGNvZGUpOwog
ICAgIH07CkBAIC0xNTksNyArMTYxLDcgQEAgdm9pZCBCaW5hcnlTd2l0Y2g6OmJ1aWxkKHVuc2ln
bmVkIHN0YXJ0LCBib29sIGhhcmRTdGFydCwgdW5zaWduZWQgZW5kKQogICAgIGNvbnN0IHVuc2ln
bmVkIGxlYWZUaHJlc2hvbGQgPSAzOwogICAgIAogICAgIGlmIChzaXplIDw9IGxlYWZUaHJlc2hv
bGQpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCaW5hcnlTd2l0Y2hJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkl0J3MgYSBsZWFmLlxuIik7CiAg
ICAgICAgIAogICAgICAgICAvLyBJdCB0dXJucyBvdXQgdGhhdCBmb3IgZXhhY3RseSB0aHJlZSBj
YXNlcyBvciBsZXNzLCBpdCdzIGJldHRlciB0byBqdXN0IGNvbXBhcmUgZWFjaApAQCAtMTg2LDcg
KzE4OCw3IEBAIHZvaWQgQmluYXJ5U3dpdGNoOjpidWlsZCh1bnNpZ25lZCBzdGFydCwgYm9vbCBo
YXJkU3RhcnQsIHVuc2lnbmVkIGVuZCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQmluYXJ5U3dpdGNoSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJhbGxDb25zZWN1dGl2ZSA9ICIsIGFsbENvbnNlY3V0
aXZlLCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZCwgMz4gbG9jYWxD
YXNlSW5kaWNlczsKQEAgLTIxNCw3ICsyMTYsNyBAQCB2b2lkIEJpbmFyeVN3aXRjaDo6YnVpbGQo
dW5zaWduZWQgc3RhcnQsIGJvb2wgaGFyZFN0YXJ0LCB1bnNpZ25lZCBlbmQpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQmluYXJ5U3dpdGNoSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkl0J3Mgbm90IGEgbGVhZi5cbiIpOwog
ICAgICAgICAKICAgICAvLyBUaGVyZSBhcmUgdHdvIGRpZmZlcmVudCBzdHJhdGVnaWVzIHdlIGNv
dWxkIGNvbnNpZGVyIGhlcmU6CkBAIC0zMTQsNyArMzE2LDcgQEAgdm9pZCBCaW5hcnlTd2l0Y2g6
OmJ1aWxkKHVuc2lnbmVkIHN0YXJ0LCBib29sIGhhcmRTdGFydCwgdW5zaWduZWQgZW5kKQogICAg
ICAgICAKICAgICB1bnNpZ25lZCBtZWRpYW5JbmRleCA9IChzdGFydCArIGVuZCkgLyAyOwogCi0g
ICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEJpbmFyeVN3aXRjaEludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICBkYXRhTG9nKCJtZWRpYW5JbmRleCA9ICIsIG1lZGlhbkluZGV4LCAiXG4iKTsKIAog
ICAgIC8vIFdlIHdhbnQgbWVkaWFuSW5kZXggdG8gcG9pbnQgdG8gdGhlIHRoaW5nIHdlIHdpbGwg
ZG8gYSBsZXNzLXRoYW4gY29tcGFyZSBhZ2FpbnN0LiBXZSB3YW50CkBAIC0zNDcsNyArMzQ5LDcg
QEAgdm9pZCBCaW5hcnlTd2l0Y2g6OmJ1aWxkKHVuc2lnbmVkIHN0YXJ0LCBib29sIGhhcmRTdGFy
dCwgdW5zaWduZWQgZW5kKQogICAgIFJFTEVBU0VfQVNTRVJUKG1lZGlhbkluZGV4ID4gc3RhcnQp
OwogICAgIFJFTEVBU0VfQVNTRVJUKG1lZGlhbkluZGV4ICsgMSA8IGVuZCk7CiAgICAgICAgIAot
ICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChCaW5hcnlTd2l0Y2hJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgZGF0YUxvZygiZml4ZWQgbWVkaWFuSW5kZXggPSAiLCBtZWRpYW5JbmRleCwgIlxu
Iik7CiAKICAgICBhcHBlbmQoQnJhbmNoQ29kZShMZXNzVGhhblRvUHVzaCwgbWVkaWFuSW5kZXgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggMWU0OWYy
Zjg1MzI1OGUzOTQxNjFjN2M0NDAwMzk5MzNmYWFhOTIxYy4uYWQ4NjlmMjBlMmU0ZDFiOWFlMGRh
Nzg3NDgyZmI2ZmU3ZDI4YWZhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAKQEAgLTIyNSw3ICsyMjUsOSBAQCB2b2lkIERhdGE6OmZpbmFsaXplU3RhdHMoKQog
fQogCiAjaWYgRU5BQkxFKExMSU5UX1NUQVRTKQorbmFtZXNwYWNlIExMSW50RGF0YUludGVybmFs
IHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2VTdGF0cyA9IGZhbHNlOworfQogCiBzdGF0aWMg
Ym9vbCBjb21wYXJlU3RhdHMoY29uc3QgT3Bjb2RlU3RhdHMmIGEsIGNvbnN0IE9wY29kZVN0YXRz
JiBiKQogewpAQCAtMjgzLDcgKzI4NSw3IEBAIHZvaWQgRGF0YTo6bG9hZFN0YXRzKCkKICAgICB1
bnNpZ25lZCBpbmRleDsKICAgICBjaGFyIG9wY29kZU5hbWVbMTAwXTsKICAgICB3aGlsZSAoZnNj
YW5mKGZpbGUsICJbJXVdOiBmYXN0OiV6dSBzbG93OiV6dSBpZDoldSAlc1xuIiwgJmluZGV4LCAm
bG9hZGVkLmNvdW50LCAmbG9hZGVkLnNsb3dQYXRoQ291bnQsICZsb2FkZWQuaWQsIG9wY29kZU5h
bWUpICE9IEVPRikgewotICAgICAgICBpZiAodmVyYm9zZVN0YXRzKQorICAgICAgICBpZiAoTExJ
bnREYXRhSW50ZXJuYWw6OnZlcmJvc2VTdGF0cykKICAgICAgICAgICAgIGRhdGFMb2dGKCJsb2Fk
ZWQgWyV1XTogZmFzdCAlenUgc2xvdyAlenUgaWQ6JXUgJXNcbiIsIGluZGV4LCBsb2FkZWQuY291
bnQsIGxvYWRlZC5zbG93UGF0aENvdW50LCBsb2FkZWQuaWQsIG9wY29kZU5hbWUpOwogCiAgICAg
ICAgIE9wY29kZVN0YXRzJiBzdGF0cyA9IG9wY29kZVN0YXRzKGxvYWRlZC5pZCk7CkBAIC0yOTEs
NyArMjkzLDcgQEAgdm9pZCBEYXRhOjpsb2FkU3RhdHMoKQogICAgICAgICBzdGF0cy5zbG93UGF0
aENvdW50ID0gbG9hZGVkLnNsb3dQYXRoQ291bnQ7CiAgICAgfQogCi0gICAgaWYgKHZlcmJvc2VT
dGF0cykgeworICAgIGlmIChMTEludERhdGFJbnRlcm5hbDo6dmVyYm9zZVN0YXRzKSB7CiAgICAg
ICAgIGRhdGFMb2dGKCJBZnRlciBsb2FkaW5nIGZyb20gJXMsICIsIGZpbGVuYW1lKTsKICAgICAg
ICAgZHVtcFN0YXRzKCk7CiAgICAgfQpAQCAtMzMwLDcgKzMzMiw3IEBAIHZvaWQgRGF0YTo6c2F2
ZVN0YXRzKCkKICAgICAgICAgaWYgKCFzdGF0cy5jb3VudCAmJiAhc3RhdHMuc2xvd1BhdGhDb3Vu
dCkKICAgICAgICAgICAgIGJyZWFrOyAvLyBzdGF0cyBhcmUgc29ydGVkLiBJZiB3ZSBlbmNvdW50
ZXJlZCAwIGNvdW50cywgdGhlbiB0aGVyZSBhcmUgbm8gbW9yZSBub24temVybyBjb3VudHMuCiAK
LSAgICAgICAgaWYgKHZlcmJvc2VTdGF0cykKKyAgICAgICAgaWYgKExMSW50RGF0YUludGVybmFs
Ojp2ZXJib3NlU3RhdHMpCiAgICAgICAgICAgICBkYXRhTG9nRigic2F2ZWQgWyV1XTogZmFzdDol
enUgc2xvdzolenUgaWQ6JXUgJXNcbiIsIGluZGV4LCBzdGF0cy5jb3VudCwgc3RhdHMuc2xvd1Bh
dGhDb3VudCwgc3RhdHMuaWQsIG9wY29kZU5hbWVzW3N0YXRzLmlkXSk7CiAKICAgICAgICAgZnBy
aW50ZihmaWxlLCAiWyV1XTogZmFzdDolenUgc2xvdzolenUgaWQ6JXUgJXNcbiIsIGluZGV4LCBz
dGF0cy5jb3VudCwgc3RhdHMuc2xvd1BhdGhDb3VudCwgc3RhdHMuaWQsIG9wY29kZU5hbWVzW3N0
YXRzLmlkXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAKaW5kZXggZGUwMmI3ZGY3ZGI1YzM5ZDdiYWEwNWQ0YzY4OGFhY2YyNzUxMjY4ZC4u
NjdhYzI1YWM1NDgzMzgwMTFiMTc5NGUxNGZjMGI3MjU3M2Q1MWI0NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMTM2Miw3ICsx
MzYyLDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvUHJpdmF0ZUZ1
bmNBcHBlbmRNZW1jcHkoRXhlY1N0YXRlKiBleGVjKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LSBBcnJheVByb3RvdHlwZS5jb25zdHJ1Y3RvciBXYXRjaHBvaW50IC0tLS0tLS0tLS0tLS0tLS0t
LQogCituYW1lc3BhY2UgQXJyYXlQcm90b3R5cGVJbnRlcm5hbCB7CiBzdGF0aWMgYm9vbCB2ZXJi
b3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIEFycmF5UHJvdG90eXBlQWRhcHRpdmVJbmZlcnJlZFBy
b3BlcnR5V2F0Y2hwb2ludCA6IHB1YmxpYyBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdh
dGNocG9pbnRCYXNlIHsKIHB1YmxpYzoKQEAgLTEzODQsNyArMTM4Niw3IEBAIHZvaWQgQXJyYXlQ
cm90b3R5cGU6OnRyeUluaXRpYWxpemVTcGVjaWVzV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMp
CiAKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAo
dmVyYm9zZSkKKyAgICBpZiAoQXJyYXlQcm90b3R5cGVJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgZGF0YUxvZygiSW5pdGlhbGl6aW5nIEFycmF5IHNwZWNpZXMgd2F0Y2hwb2ludHMgZm9yIEFy
cmF5LnByb3RvdHlwZTogIiwgcG9pbnRlckR1bXAodGhpcyksICIgd2l0aCBzdHJ1Y3R1cmU6ICIs
IHBvaW50ZXJEdW1wKHRoaXMtPnN0cnVjdHVyZSgpKSwgIlxuYW5kIEFycmF5OiAiLCBwb2ludGVy
RHVtcCh0aGlzLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlDb25zdHJ1Y3RvcigpKSwgIiB3aXRoIHN0
cnVjdHVyZTogIiwgcG9pbnRlckR1bXAodGhpcy0+Z2xvYmFsT2JqZWN0KCktPmFycmF5Q29uc3Ry
dWN0b3IoKS0+c3RydWN0dXJlKCkpLCAiXG4iKTsKICAgICAvLyBGaXJzdCB3ZSBuZWVkIHRvIG1h
a2Ugc3VyZSB0aGF0IHRoZSBBcnJheS5wcm90b3R5cGUuY29uc3RydWN0b3IgcHJvcGVydHkgcG9p
bnRzIHRvIEFycmF5CiAgICAgLy8gYW5kIHRoYXQgQXJyYXlbU3ltYm9sLnNwZWNpZXNdIGlzIHRo
ZSBwcmltb3JkaWFsIEdldHRlclNldHRlci4KQEAgLTE0NjIsNyArMTQ2NCw3IEBAIHZvaWQgQXJy
YXlQcm90b3R5cGVBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlXYXRjaHBvaW50OjpoYW5kbGVGaXJl
KGNvbnN0IEZpcmVEZXRhCiAKICAgICBTdHJpbmdGaXJlRGV0YWlsIHN0cmluZ0RldGFpbChvdXQu
dG9DU3RyaW5nKCkuZGF0YSgpKTsKIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChBcnJheVBy
b3RvdHlwZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBXVEY6OmRhdGFMb2coc3RyaW5nRGV0
YWlsLCAiXG4iKTsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2FycmF5
UHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKaW5kZXggZmUwN2VhZTNlOTVmZWExNDcyZTI0NTYyOTM3
NDkyZTBjNTliYTkwMC4uMGE2OGZjOWRiYWE3MDhjNzA3OTg1NTQ0MDVjMDJkMmJkODU0YjQ2YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAK
QEAgLTEwOSw0MSArMTA5LDYgQEAgc3RhdGljIHZvaWQgYXBwZW5kU291cmNlVG9FcnJvcihDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgRXJyb3JJbnN0YW5jZSogZXhjZXB0aW9uLAogCiB9CiAKLWNsYXNz
IEZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3IgewotcHVibGljOgotICAg
IEZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3IoQ2FsbEZyYW1lKiBzdGFy
dENhbGxGcmFtZSkKLSAgICAgICAgOiBtX3N0YXJ0Q2FsbEZyYW1lKHN0YXJ0Q2FsbEZyYW1lKQot
ICAgICAgICAsIG1fZm91bmRDYWxsRnJhbWUobnVsbHB0cikKLSAgICAgICAgLCBtX2ZvdW5kU3Rh
cnRDYWxsRnJhbWUoZmFsc2UpCi0gICAgICAgICwgbV9pbmRleCgwKQotICAgIHsgfQotCi0gICAg
U3RhY2tWaXNpdG9yOjpTdGF0dXMgb3BlcmF0b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpCi0g
ICAgewotICAgICAgICBpZiAoIW1fZm91bmRTdGFydENhbGxGcmFtZSAmJiAodmlzaXRvci0+Y2Fs
bEZyYW1lKCkgPT0gbV9zdGFydENhbGxGcmFtZSkpCi0gICAgICAgICAgICBtX2ZvdW5kU3RhcnRD
YWxsRnJhbWUgPSB0cnVlOwotCi0gICAgICAgIGlmIChtX2ZvdW5kU3RhcnRDYWxsRnJhbWUpIHsK
LSAgICAgICAgICAgIGlmICh2aXNpdG9yLT5jYWxsRnJhbWUoKS0+Y29kZUJsb2NrKCkpIHsKLSAg
ICAgICAgICAgICAgICBtX2ZvdW5kQ2FsbEZyYW1lID0gdmlzaXRvci0+Y2FsbEZyYW1lKCk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIG1faW5kZXgrKzsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBTdGFj
a1Zpc2l0b3I6OkNvbnRpbnVlOwotICAgIH0KLQotICAgIENhbGxGcmFtZSogZm91bmRDYWxsRnJh
bWUoKSBjb25zdCB7IHJldHVybiBtX2ZvdW5kQ2FsbEZyYW1lOyB9Ci0gICAgdW5zaWduZWQgaW5k
ZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9Ci0KLXByaXZhdGU6Ci0gICAgQ2FsbEZyYW1l
KiBtX3N0YXJ0Q2FsbEZyYW1lOwotICAgIENhbGxGcmFtZSogbV9mb3VuZENhbGxGcmFtZTsKLSAg
ICBib29sIG1fZm91bmRTdGFydENhbGxGcmFtZTsKLSAgICB1bnNpZ25lZCBtX2luZGV4OwotfTsK
LQogdm9pZCBFcnJvckluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFZN
JiB2bSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBib29sIHVzZUN1cnJlbnRGcmFtZSkKIHsKICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAppbmRleCAwMWYyNDBiYjc0NTQ1MDc4
Zjg1ODI5OWRhMGU2MjU5NDkxOTU2YjFiLi4wOGUyYzE1NjYzOGEyMDAzNDg2YTQ2ZDM2YTQyYjhi
M2E1YmEwZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdC5jcHAKQEAgLTQ5LDcgKzQ5LDEwIEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBjb25zdCBDbGFzc0luZm8gSW50bERhdGVUaW1lRm9ybWF0OjpzX2luZm8gPSB7ICJPYmplY3Qi
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKElu
dGxEYXRlVGltZUZvcm1hdCkgfTsKIAorbmFtZXNwYWNlIEludGxEVEZJbnRlcm5hbCB7CiBzdGF0
aWMgY29uc3QgY2hhciogY29uc3QgcmVsZXZhbnRFeHRlbnNpb25LZXlzWzJdID0geyAiY2EiLCAi
bnUiIH07Cit9CisKIHN0YXRpYyBjb25zdCBzaXplX3QgaW5kZXhPZkV4dGVuc2lvbktleUNhID0g
MDsKIHN0YXRpYyBjb25zdCBzaXplX3QgaW5kZXhPZkV4dGVuc2lvbktleU51ID0gMTsKIApAQCAt
NDUwLDcgKzQ1Myw3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRp
bWVGb3JtYXQoRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIGxvY2FsCiAgICAgLy8gMTEuIExldCBs
b2NhbGVEYXRhIGJlIHRoZSB2YWx1ZSBvZiAlRGF0ZVRpbWVGb3JtYXQlLltbbG9jYWxlRGF0YV1d
LgogICAgIC8vIDEyLiBMZXQgciBiZSBSZXNvbHZlTG9jYWxlKCAlRGF0ZVRpbWVGb3JtYXQlLltb
YXZhaWxhYmxlTG9jYWxlc11dLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHQsICVEYXRlVGltZUZvcm1h
dCUuW1tyZWxldmFudEV4dGVuc2lvbktleXNdXSwgbG9jYWxlRGF0YSkuCiAgICAgY29uc3QgSGFz
aFNldDxTdHJpbmc+IGF2YWlsYWJsZUxvY2FsZXMgPSBleGVjLmpzQ2FsbGVlKCktPmdsb2JhbE9i
amVjdCgpLT5pbnRsRGF0ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCk7Ci0gICAgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4gcmVzb2x2ZWQgPSByZXNvbHZlTG9jYWxlKGV4ZWMsIGF2YWlsYWJs
ZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGxvY2FsZU9wdCwgcmVsZXZhbnRFeHRlbnNpb25L
ZXlzLCBXVEZfQVJSQVlfTEVOR1RIKHJlbGV2YW50RXh0ZW5zaW9uS2V5cyksIGxvY2FsZURhdGEp
OworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHJlc29sdmVkID0gcmVzb2x2ZUxvY2FsZShl
eGVjLCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBsb2NhbGVPcHQsIEludGxE
VEZJbnRlcm5hbDo6cmVsZXZhbnRFeHRlbnNpb25LZXlzLCBXVEZfQVJSQVlfTEVOR1RIKEludGxE
VEZJbnRlcm5hbDo6cmVsZXZhbnRFeHRlbnNpb25LZXlzKSwgbG9jYWxlRGF0YSk7CiAKICAgICAv
LyAxMy4gU2V0IGRhdGVUaW1lRm9ybWF0LltbbG9jYWxlXV0gdG8gdGhlIHZhbHVlIG9mIHIuW1ts
b2NhbGVdXS4KICAgICBtX2xvY2FsZSA9IHJlc29sdmVkLmdldCh2bS5wcm9wZXJ0eU5hbWVzLT5s
b2NhbGUuc3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvbWlzZURlZmVycmVkVGltZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvbWlzZURlZmVycmVkVGltZXIuY3BwCmluZGV4IDNkY2FlYWFmZTViMzhmYmE1YmE4YWY5
NzY2MGY1MWJjNjU5ZmQyNDUuLjA4NzgwNDY5NWNkZjM1YTc0OTRiYmQ1ODk0NDI5MDRlYjljYTcw
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VEZWZl
cnJlZFRpbWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNl
RGVmZXJyZWRUaW1lci5jcHAKQEAgLTM0LDcgKzM0LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
K25hbWVzcGFjZSBQcm9taXNlRGVmZXJyZWRUaW1lckludGVybmFsIHsKIHN0YXRpYyBjb25zdCBi
b29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogUHJvbWlzZURlZmVycmVkVGltZXI6OlByb21pc2VE
ZWZlcnJlZFRpbWVyKFZNJiB2bSkKICAgICA6IEJhc2UoJnZtKQpAQCAtNTUsNyArNTcsNyBAQCB2
b2lkIFByb21pc2VEZWZlcnJlZFRpbWVyOjpkb1dvcmsoKQogICAgICAgICBKU1Byb21pc2VEZWZl
cnJlZCogdGlja2V0OwogICAgICAgICBUYXNrIHRhc2s7CiAgICAgICAgIHN0ZDo6dGllKHRpY2tl
dCwgdGFzaykgPSBtX3Rhc2tzLnRha2VMYXN0KCk7Ci0gICAgICAgIGRhdGFMb2dMbklmKHZlcmJv
c2UsICJEb2luZyB3b3JrIG9uIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CisgICAg
ICAgIGRhdGFMb2dMbklmKFByb21pc2VEZWZlcnJlZFRpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJE
b2luZyB3b3JrIG9uIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CiAKICAgICAgICAg
Ly8gV2UgbWF5IGhhdmUgYWxyZWFkeSBjYW5jZWxlZCB0aGVzZSBwcm9taXNlcy4KICAgICAgICAg
aWYgKG1fcGVuZGluZ1Byb21pc2VzLmNvbnRhaW5zKHRpY2tldCkpIHsKQEAgLTEwNSwxMSArMTA3
LDExIEBAIHZvaWQgUHJvbWlzZURlZmVycmVkVGltZXI6OmFkZFBlbmRpbmdQcm9taXNlKEpTUHJv
bWlzZURlZmVycmVkKiB0aWNrZXQsIFZlY3RvcjxTCiAKICAgICBhdXRvIHJlc3VsdCA9IG1fcGVu
ZGluZ1Byb21pc2VzLmFkZCh0aWNrZXQsIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4oKSk7CiAgICAg
aWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJB
ZGRpbmcgbmV3IHBlbmRpbmcgcHJvbWlzZTogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKKyAgICAg
ICAgZGF0YUxvZ0xuSWYoUHJvbWlzZURlZmVycmVkVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkFk
ZGluZyBuZXcgcGVuZGluZyBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwogICAgICAg
ICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KCptX3ZtLCB0aWNrZXQpKTsKICAg
ICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFdURk1vdmUoZGVwZW5kZW5jaWVzKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiQWRkaW5nIG5ldyBkZXBl
bmRlbmNpZXMgZm9yIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CisgICAgICAgIGRh
dGFMb2dMbklmKFByb21pc2VEZWZlcnJlZFRpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJBZGRpbmcg
bmV3IGRlcGVuZGVuY2llcyBmb3IgcHJvbWlzZTogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKICAg
ICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmRWZWN0b3IoZGVwZW5kZW5jaWVzKTsK
ICAgICB9CiAKQEAgLTEyNCw3ICsxMjYsNyBAQCBib29sIFByb21pc2VEZWZlcnJlZFRpbWVyOjpj
YW5jZWxQZW5kaW5nUHJvbWlzZShKU1Byb21pc2VEZWZlcnJlZCogdGlja2V0KQogICAgIGJvb2wg
cmVzdWx0ID0gbV9wZW5kaW5nUHJvbWlzZXMucmVtb3ZlKHRpY2tldCk7CiAKICAgICBpZiAocmVz
dWx0KQotICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiQ2FuY2VsaW5nIHByb21pc2U6ICIs
IFJhd1BvaW50ZXIodGlja2V0KSk7CisgICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VEZWZlcnJl
ZFRpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJDYW5jZWxpbmcgcHJvbWlzZTogIiwgUmF3UG9pbnRl
cih0aWNrZXQpKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcAppbmRleCBlMzE1YzQxMmI5MzMzMGIwNWFm
NjY0MDcwY2ExMTZjZDUzZTkyZGI3Li4wZjg1ZWY4ODI4NWMyZThiODFkNWZmMDBiY2FhMmI5OWNm
NmRjODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJv
ZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxl
ci5jcHAKQEAgLTMyLDcgKzMyLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK25hbWVzcGFjZSBU
eXBlUHJvZmlsZXJJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7
Cit9CiAKIFR5cGVQcm9maWxlcjo6VHlwZVByb2ZpbGVyKCkKICAgICA6IG1fbmV4dFVuaXF1ZVZh
cmlhYmxlSUQoMSkKQEAgLTU5LDcgKzYxLDcgQEAgdm9pZCBUeXBlUHJvZmlsZXI6OmxvZ1R5cGVz
Rm9yVHlwZUxvY2F0aW9uKFR5cGVMb2NhdGlvbiogbG9jYXRpb24sIFZNJiB2bSkKIAogdm9pZCBU
eXBlUHJvZmlsZXI6Omluc2VydE5ld0xvY2F0aW9uKFR5cGVMb2NhdGlvbiogbG9jYXRpb24pCiB7
Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKFR5cGVQcm9maWxlckludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICBkYXRhTG9nRigiUmVnaXN0ZXJpbmcgbG9jYXRpb246OiBkaXZvdFN0YXJ0OiV1
LCBkaXZvdEVuZDoldVxuIiwgbG9jYXRpb24tPm1fZGl2b3RTdGFydCwgbG9jYXRpb24tPm1fZGl2
b3RFbmQpOwogCiAgICAgaWYgKCFtX2J1Y2tldE1hcC5jb250YWlucyhsb2NhdGlvbi0+bV9zb3Vy
Y2VJRCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQ
cm9maWxlckxvZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmls
ZXJMb2cuY3BwCmluZGV4IDg1YzQ5ZDA0NmJhZmVhYzdjMmZkZWEyMTUyNThkM2M0NGVmY2QxMTUu
LjUzZDczZTg4YjE0ZTM4NmI3Mzc4Yjg4MjQ3Yjc3Njk2NGY2YjU3ZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcApAQCAtMzcsNyAr
MzcsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFtZXNwYWNlIFR5cGVQcm9maWxlckxvZ0lu
dGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogdm9pZCBU
eXBlUHJvZmlsZXJMb2c6OmluaXRpYWxpemVMb2coKQogewpAQCAtNTYsNyArNTgsNyBAQCBUeXBl
UHJvZmlsZXJMb2c6On5UeXBlUHJvZmlsZXJMb2coKQogdm9pZCBUeXBlUHJvZmlsZXJMb2c6OnBy
b2Nlc3NMb2dFbnRyaWVzKGNvbnN0IFN0cmluZyYgcmVhc29uKQogewogICAgIGRvdWJsZSBiZWZv
cmUgPSAwOwotICAgIGlmICh2ZXJib3NlKSB7CisgICAgaWYgKFR5cGVQcm9maWxlckxvZ0ludGVy
bmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2coIlByb2Nlc3MgY2FsbGVyOiciLCByZWFz
b24sICInIik7CiAgICAgICAgIGJlZm9yZSA9IGN1cnJlbnRUaW1lTVMoKTsKICAgICB9CkBAIC05
NSw3ICs5Nyw3IEBAIHZvaWQgVHlwZVByb2ZpbGVyTG9nOjpwcm9jZXNzTG9nRW50cmllcyhjb25z
dCBTdHJpbmcmIHJlYXNvbikKICAgICAvLyBwYXVzZXMgYW5kIGNhdXNlcyB0aGUgY29sbGVjdG9y
IHRvIG1hcmsgdGhlIGxvZy4KICAgICBtX2N1cnJlbnRMb2dFbnRyeVB0ciA9IG1fbG9nU3RhcnRQ
dHI7CiAKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChUeXBlUHJvZmlsZXJMb2dJbnRlcm5h
bDo6dmVyYm9zZSkgewogICAgICAgICBkb3VibGUgYWZ0ZXIgPSBjdXJyZW50VGltZU1TKCk7CiAg
ICAgICAgIGRhdGFMb2dGKCIgUHJvY2Vzc2luZyB0aGUgbG9nIHRvb2s6ICclZicgbXNcbiIsIGFm
dGVyIC0gYmVmb3JlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwCmluZGV4IDEyODg4OTlmOTk5ODBlYWNlNjkyMTZiZDYy
MjI4OWMzMGIzMjNkNjguLjk0NWZlMmEwNDA3ZmRlMTdmNzczZmJkNjU0NGQ3YjNlYzdlMDFlNDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5
cGUuY3BwCkBAIC01Myw2ICs1Myw3IEBAIHZvaWQgV2Vha01hcFByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJv
bCwganNTdHJpbmcoJnZtLCAiV2Vha01hcCIpLCBEb250RW51bSB8IFJlYWRPbmx5KTsKIH0KIAor
bmFtZXNwYWNlIFdlYWtNYXBQcm90b3R5cGVJbnRlcm5hbCB7CiBzdGF0aWMgV2Vha01hcERhdGEq
IGdldFdlYWtNYXBEYXRhKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHZhbHVlKQogewog
ICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKQEAgLTY5LDEwICs3MCwxMSBAQCBzdGF0aWMg
V2Vha01hcERhdGEqIGdldFdlYWtNYXBEYXRhKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVl
IHZhbHVlKQogICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIFdURjo6QVNDSUlM
aXRlcmFsKCJDYWxsZWQgV2Vha01hcCBmdW5jdGlvbiBvbiBhIG5vbi1XZWFrTWFwIG9iamVjdCIp
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KK30KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBwcm90b0Z1bmNXZWFrTWFwRGVsZXRlKENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IFdlYWtNYXBEYXRhKiBtYXAgPSBnZXRXZWFrTWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOworICAgIFdlYWtNYXBEYXRhKiBtYXAgPSBXZWFrTWFwUHJvdG90eXBlSW50
ZXJuYWw6OmdldFdlYWtNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CiAgICAgaWYgKCFtYXApCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAgICAgSlNWYWx1ZSBrZXkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwpAQCAtODEs
NyArODMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBE
ZWxldGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgcHJvdG9GdW5jV2Vha01hcEdldChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBXZWFr
TWFwRGF0YSogbWFwID0gZ2V0V2Vha01hcERhdGEoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKTsKKyAgICBXZWFrTWFwRGF0YSogbWFwID0gV2Vha01hcFByb3RvdHlwZUludGVybmFs
OjpnZXRXZWFrTWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAg
IGlmICghbWFwKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogICAgIEpTVmFsdWUga2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKQEAgLTkyLDcgKzk0
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwR2V0KENh
bGxGcmFtZSogY2FsbEZyYW1lKQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3Rv
RnVuY1dlYWtNYXBIYXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgV2Vha01hcERhdGEq
IG1hcCA9IGdldFdlYWtNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CisgICAgV2Vha01hcERhdGEqIG1hcCA9IFdlYWtNYXBQcm90b3R5cGVJbnRlcm5hbDo6Z2V0V2Vh
a01hcERhdGEoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIW1h
cCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBK
U1ZhbHVlIGtleSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CkBAIC0xMDQsNyArMTA2LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwU2V0KENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBXZWFrTWFwRGF0YSogbWFwID0g
Z2V0V2Vha01hcERhdGEoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBX
ZWFrTWFwRGF0YSogbWFwID0gV2Vha01hcFByb3RvdHlwZUludGVybmFsOjpnZXRXZWFrTWFwRGF0
YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIEFTU0VSVCghIXNjb3Bl
LmV4Y2VwdGlvbigpID09ICFtYXApOwogICAgIGlmICghbWFwKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmNwcAppbmRleCBjYzUyYzhkMGE2NGNjMTU4Y2Iw
Njk0MGJlOWY1YjM2YzMzNmI2NDllLi41MGMzYzVhZTQxMDUzYzU5YjIyN2EyYzQ3NmE0ZjgzODE3
Yzg5MDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0
UHJvdG90eXBlLmNwcApAQCAtNTEsNiArNTEsNyBAQCB2b2lkIFdlYWtTZXRQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdU
YWdTeW1ib2wsIGpzU3RyaW5nKCZ2bSwgIldlYWtTZXQiKSwgRG9udEVudW0gfCBSZWFkT25seSk7
CiB9CiAKK25hbWVzcGFjZSBXZWFrU2V0UHJvdG90eXBlSW50ZXJuYWwgewogc3RhdGljIFdlYWtN
YXBEYXRhKiBnZXRXZWFrTWFwRGF0YShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB2YWx1
ZSkKIHsKICAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CkBAIC02NywxMCArNjgsMTEgQEAg
c3RhdGljIFdlYWtNYXBEYXRhKiBnZXRXZWFrTWFwRGF0YShDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
SlNWYWx1ZSB2YWx1ZSkKICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBXVEY6
OkFTQ0lJTGl0ZXJhbCgiQ2FsbGVkIFdlYWtTZXQgZnVuY3Rpb24gb24gYSBub24tV2Vha1NldCBv
YmplY3QiKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9Cit9CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha1NldERlbGV0ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKLSAgICBXZWFrTWFwRGF0YSogbWFwID0gZ2V0V2Vha01hcERhdGEoY2FsbEZyYW1lLCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBXZWFrTWFwRGF0YSogbWFwID0gV2Vha1NldFByb3Rv
dHlwZUludGVybmFsOjpnZXRXZWFrTWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogICAgIGlmICghbWFwKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUga2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsK
QEAgLTc5LDcgKzgxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNX
ZWFrU2V0RGVsZXRlKENhbGxGcmFtZSogY2FsbEZyYW1lKQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHByb3RvRnVuY1dlYWtTZXRIYXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0g
ICAgV2Vha01hcERhdGEqIG1hcCA9IGdldFdlYWtNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1l
LT50aGlzVmFsdWUoKSk7CisgICAgV2Vha01hcERhdGEqIG1hcCA9IFdlYWtTZXRQcm90b3R5cGVJ
bnRlcm5hbDo6Z2V0V2Vha01hcERhdGEoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKICAgICBpZiAoIW1hcCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICBKU1ZhbHVlIGtleSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CkBAIC05
MSw3ICs5Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha1Nl
dEFkZChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgV2Vha01h
cERhdGEqIG1hcCA9IGdldFdlYWtNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CisgICAgV2Vha01hcERhdGEqIG1hcCA9IFdlYWtTZXRQcm90b3R5cGVJbnRlcm5hbDo6
Z2V0V2Vha01hcERhdGEoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBB
U1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhbWFwKTsKICAgICBpZiAoIW1hcCkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0UmVnRXhwLmNwcAppbmRleCAzYTYwYjFiNzk0NzlkYWFkOGJmOTYwZGU0ZTVjYTNmYThi
ZTIxZjQ5Li4yYzQ5MWY3YmYxMjA0NTVlOGE3M2EwM2I5MDVhNzUxMWViNzc2NTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCkBAIC0xODcsNyArMTg3LDkgQEAgaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIHJldHVybiByZXM7CiB9CiAKK25hbWVzcGFjZSB0
ZXN0UmVnRXhwSW50ZXJuYWwgewogc3RhdGljIGJvb2wgdGVzdE9uZVJlZ0V4cChWTSYgdm0sIFJl
Z0V4cCogcmVnZXhwLCBSZWdFeHBUZXN0KiByZWdFeHBUZXN0LCBib29sIHZlcmJvc2UsIHVuc2ln
bmVkIGludCBsaW5lTnVtYmVyKQorfQogewogICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKICAgICBW
ZWN0b3I8aW50PiBvdXRWZWN0b3I7CkBAIC0xOTYsMTIgKzE5OCwxMiBAQCBzdGF0aWMgYm9vbCB0
ZXN0T25lUmVnRXhwKFZNJiB2bSwgUmVnRXhwKiByZWdleHAsIFJlZ0V4cFRlc3QqIHJlZ0V4cFRl
c3QsIGJvb2wgdgogCiAgICAgaWYgKG1hdGNoUmVzdWx0ICE9IHJlZ0V4cFRlc3QtPnJlc3VsdCkg
ewogICAgICAgICByZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
IGlmICh0ZXN0UmVnRXhwSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBwcmludGYoIkxp
bmUgJWQ6IHJlc3VsdHMgbWlzbWF0Y2ggLSBleHBlY3RlZCAlZCBnb3QgJWRcbiIsIGxpbmVOdW1i
ZXIsIHJlZ0V4cFRlc3QtPnJlc3VsdCwgbWF0Y2hSZXN1bHQpOwogICAgIH0gZWxzZSBpZiAobWF0
Y2hSZXN1bHQgIT0gLTEpIHsKICAgICAgICAgaWYgKG91dFZlY3Rvci5zaXplKCkgIT0gcmVnRXhw
VGVzdC0+ZXhwZWN0VmVjdG9yLnNpemUoKSkgewogICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7
Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgaWYgKHRlc3RSZWdFeHBJ
bnRlcm5hbDo6dmVyYm9zZSkgewogI2lmIE9TKFdJTkRPV1MpCiAgICAgICAgICAgICAgICAgcHJp
bnRmKCJMaW5lICVkOiBvdXRwdXQgdmVjdG9yIHNpemUgbWlzbWF0Y2ggLSBleHBlY3RlZCAlSXUg
Z290ICVJdVxuIiwgbGluZU51bWJlciwgcmVnRXhwVGVzdC0+ZXhwZWN0VmVjdG9yLnNpemUoKSwg
b3V0VmVjdG9yLnNpemUoKSk7CiAjZWxzZQpAQCAtMjEwLDcgKzIxMiw3IEBAIHN0YXRpYyBib29s
IHRlc3RPbmVSZWdFeHAoVk0mIHZtLCBSZWdFeHAqIHJlZ2V4cCwgUmVnRXhwVGVzdCogcmVnRXhw
VGVzdCwgYm9vbCB2CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAob3V0VmVjdG9y
LnNpemUoKSAlIDIpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgICAgICAgICAg
aWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGlmICh0ZXN0UmVnRXhwSW50ZXJuYWw6OnZlcmJv
c2UpIHsKICNpZiBPUyhXSU5ET1dTKQogICAgICAgICAgICAgICAgIHByaW50ZigiTGluZSAlZDog
b3V0cHV0IHZlY3RvciBzaXplIGlzIG9kZCAoJUl1KSwgc2hvdWxkIGJlIGV2ZW5cbiIsIGxpbmVO
dW1iZXIsIG91dFZlY3Rvci5zaXplKCkpOwogI2Vsc2UKQEAgLTIyNCw3ICsyMjYsNyBAQCBzdGF0
aWMgYm9vbCB0ZXN0T25lUmVnRXhwKFZNJiB2bSwgUmVnRXhwKiByZWdleHAsIFJlZ0V4cFRlc3Qq
IHJlZ0V4cFRlc3QsIGJvb2wgdgogICAgICAgICAgICAgICAgIHNpemVfdCBzdGFydEluZGV4ID0g
aSoyOwogICAgICAgICAgICAgICAgIGlmIChvdXRWZWN0b3Jbc3RhcnRJbmRleF0gIT0gcmVnRXhw
VGVzdC0+ZXhwZWN0VmVjdG9yW3N0YXJ0SW5kZXhdKSB7CiAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAg
ICAgICAgICAgICAgICBpZiAodGVzdFJlZ0V4cEludGVybmFsOjp2ZXJib3NlKSB7CiAjaWYgT1Mo
V0lORE9XUykKICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiTGluZSAlZDogb3V0cHV0
IHZlY3RvciBtaXNtYXRjaCBhdCBpbmRleCAlSXUgLSBleHBlY3RlZCAlZCBnb3QgJWRcbiIsIGxp
bmVOdW1iZXIsIHN0YXJ0SW5kZXgsIHJlZ0V4cFRlc3QtPmV4cGVjdFZlY3RvcltzdGFydEluZGV4
XSwgb3V0VmVjdG9yW3N0YXJ0SW5kZXhdKTsKICNlbHNlCkBAIC0yMzQsNyArMjM2LDcgQEAgc3Rh
dGljIGJvb2wgdGVzdE9uZVJlZ0V4cChWTSYgdm0sIFJlZ0V4cCogcmVnZXhwLCBSZWdFeHBUZXN0
KiByZWdFeHBUZXN0LCBib29sIHYKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
aWYgKChpID4gMCkgJiYgKHJlZ0V4cFRlc3QtPmV4cGVjdFZlY3RvcltzdGFydEluZGV4XSAhPSAt
MSkgJiYgKG91dFZlY3RvcltzdGFydEluZGV4KzFdICE9IHJlZ0V4cFRlc3QtPmV4cGVjdFZlY3Rv
cltzdGFydEluZGV4KzFdKSkgewogICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHRlc3RSZWdFeHBJbnRlcm5hbDo6dmVyYm9zZSkgewogI2lmIE9TKFdJTkRPV1MpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBwcmludGYoIkxpbmUgJWQ6IG91dHB1dCB2ZWN0b3IgbWlzbWF0
Y2ggYXQgaW5kZXggJUl1IC0gZXhwZWN0ZWQgJWQgZ290ICVkXG4iLCBsaW5lTnVtYmVyLCBzdGFy
dEluZGV4ICsgMSwgcmVnRXhwVGVzdC0+ZXhwZWN0VmVjdG9yW3N0YXJ0SW5kZXggKyAxXSwgb3V0
VmVjdG9yW3N0YXJ0SW5kZXggKyAxXSk7CiAjZWxzZQpAQCAtNDA3LDcgKzQwOSw5IEBAIHN0YXRp
YyBSZWdFeHBUZXN0KiBwYXJzZVRlc3RMaW5lKGNoYXIqIGxpbmUsIGludCBsaW5lTGVuZ3RoKQog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK25hbWVzcGFjZSB0ZXN0UmVnRXhwSW50ZXJuYWwgewog
c3RhdGljIGJvb2wgcnVuRnJvbUZpbGVzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMsIGJvb2wgdmVyYm9zZSkKK30KIHsKICAgICBTdHJpbmcg
c2NyaXB0OwogICAgIFN0cmluZyBmaWxlTmFtZTsKQEAgLTQ1MCw3ICs0NTQsNyBAQCBzdGF0aWMg
Ym9vbCBydW5Gcm9tRmlsZXMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBmaWxlcwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChy
ZWdleHAgJiYgcmVnRXhwVGVzdCkgewogICAgICAgICAgICAgICAgICAgICArK3Rlc3RzOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoIXRlc3RPbmVSZWdFeHAodm0sIHJlZ2V4cCwgcmVnRXhwVGVz
dCwgdmVyYm9zZSwgbGluZU51bWJlcikpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZXN0
T25lUmVnRXhwKHZtLCByZWdleHAsIHJlZ0V4cFRlc3QsIHRlc3RSZWdFeHBJbnRlcm5hbDo6dmVy
Ym9zZSwgbGluZU51bWJlcikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmVzKys7
CiAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIkZhaWx1cmUgb24gbGluZSAldVxuIiwg
bGluZU51bWJlcik7CiAgICAgICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCAwMGFjM2MxYWRiZDdhYzgy
ZDIxNTkwZjYwMTI4Yjk0YTQwMGM2MjhlLi5hZDdkNjIxZWM4Nzg4NWFjMDM2ZDgxMzEzZDViMGZh
MDkxYTRlZjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJ
UkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJH
ZW5lcmF0b3IuY3BwCkBAIC03Niw3ICs3Niw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
V2FzbSB7CiB1c2luZyBuYW1lc3BhY2UgQjM7CiAKIG5hbWVzcGFjZSB7Ci1jb25zdCBib29sIHZl
cmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBXYXNtQjNJUkdlbmVyYXRvckludGVybmFsIHsKK3N0
YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIH0KIAogY2xhc3MgQjNJUkdlbmVy
YXRvciB7CkBAIC0xNTY2LDkgKzE1NjgsOSBAQCBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8SW50
ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxlKENvbXBpbGF0aW9uQwogICAg
IGlmICghQVNTRVJUX0RJU0FCTEVEKQogICAgICAgICB2YWxpZGF0ZShwcm9jZWR1cmUsICJBZnRl
ciBwYXJzaW5nOlxuIik7CiAKLSAgICBkYXRhTG9nSWYodmVyYm9zZSwgIlByZSBTU0E6ICIsIHBy
b2NlZHVyZSk7CisgICAgZGF0YUxvZ0lmKFdhc21CM0lSR2VuZXJhdG9ySW50ZXJuYWw6OnZlcmJv
c2UsICJQcmUgU1NBOiAiLCBwcm9jZWR1cmUpOwogICAgIGZpeFNTQShwcm9jZWR1cmUpOwotICAg
IGRhdGFMb2dJZih2ZXJib3NlLCAiUG9zdCBTU0E6ICIsIHByb2NlZHVyZSk7CisgICAgZGF0YUxv
Z0lmKFdhc21CM0lSR2VuZXJhdG9ySW50ZXJuYWw6OnZlcmJvc2UsICJQb3N0IFNTQTogIiwgcHJv
Y2VkdXJlKTsKICAgICAKICAgICB7CiAgICAgICAgIEIzOjpwcmVwYXJlRm9yR2VuZXJhdGlvbihw
cm9jZWR1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJC
UVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCmlu
ZGV4IDUwZmViNzMwYjAwZmRkOWQwZjAxNmUzNjY5MDgxMDcyMmRiYWRiMTUuLjIyZWRkMTYwMTNl
NTE5NmZlNzRhYmRkODQwYzZlNGJjYzk3NTBkMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQkJRUGxhbi5jcHAKQEAgLTQ5LDcgKzQ5LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBXYXNtIHsKIAorbmFtZXNwYWNlIFdhc21CQlFQbGFuSW50ZXJuYWwgewogc3Rh
dGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBCQlFQbGFuOjpCQlFQbGFuKFZN
KiB2bSwgUmVmPE1vZHVsZUluZm9ybWF0aW9uPiBpbmZvLCBBc3luY1dvcmsgd29yaywgQ29tcGxl
dGlvblRhc2smJiB0YXNrKQogICAgIDogQmFzZSh2bSwgV1RGTW92ZShpbmZvKSwgV1RGTW92ZSh0
YXNrKSkKQEAgLTg2LDcgKzg4LDcgQEAgY29uc3QgY2hhciogQkJRUGxhbjo6c3RhdGVTdHJpbmco
U3RhdGUgc3RhdGUpCiB2b2lkIEJCUVBsYW46Om1vdmVUb1N0YXRlKFN0YXRlIHN0YXRlKQogewog
ICAgIEFTU0VSVChzdGF0ZSA+PSBtX3N0YXRlKTsKLSAgICBkYXRhTG9nTG5JZih2ZXJib3NlICYm
IHN0YXRlICE9IG1fc3RhdGUsICJtb3ZpbmcgdG8gc3RhdGU6ICIsIHN0YXRlU3RyaW5nKHN0YXRl
KSwgIiBmcm9tIHN0YXRlOiAiLCBzdGF0ZVN0cmluZyhtX3N0YXRlKSk7CisgICAgZGF0YUxvZ0xu
SWYoV2FzbUJCUVBsYW5JbnRlcm5hbDo6dmVyYm9zZSAmJiBzdGF0ZSAhPSBtX3N0YXRlLCAibW92
aW5nIHRvIHN0YXRlOiAiLCBzdGF0ZVN0cmluZyhzdGF0ZSksICIgZnJvbSBzdGF0ZTogIiwgc3Rh
dGVTdHJpbmcobV9zdGF0ZSkpOwogICAgIG1fc3RhdGUgPSBzdGF0ZTsKIH0KIApAQCAtOTUsOSAr
OTcsOSBAQCBib29sIEJCUVBsYW46OnBhcnNlQW5kVmFsaWRhdGVNb2R1bGUoKQogICAgIGlmICht
X3N0YXRlICE9IFN0YXRlOjpJbml0aWFsKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGRh
dGFMb2dMbklmKHZlcmJvc2UsICJzdGFydGluZyB2YWxpZGF0aW9uIik7CisgICAgZGF0YUxvZ0xu
SWYoV2FzbUJCUVBsYW5JbnRlcm5hbDo6dmVyYm9zZSwgInN0YXJ0aW5nIHZhbGlkYXRpb24iKTsK
ICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0VGltZTsKLSAgICBpZiAodmVyYm9zZSB8fCBPcHRpb25z
OjpyZXBvcnRDb21waWxlVGltZXMoKSkKKyAgICBpZiAoV2FzbUJCUVBsYW5JbnRlcm5hbDo6dmVy
Ym9zZSB8fCBPcHRpb25zOjpyZXBvcnRDb21waWxlVGltZXMoKSkKICAgICAgICAgc3RhcnRUaW1l
ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKICAgICB7CkBAIC0xMTEsNyArMTEzLDcgQEAgYm9v
bCBCQlFQbGFuOjpwYXJzZUFuZFZhbGlkYXRlTW9kdWxlKCkKIAogICAgIGNvbnN0IGF1dG8mIGZ1
bmN0aW9uTG9jYXRpb25zID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+ZnVuY3Rpb25Mb2NhdGlvbklu
QmluYXJ5OwogICAgIGZvciAodW5zaWduZWQgZnVuY3Rpb25JbmRleCA9IDA7IGZ1bmN0aW9uSW5k
ZXggPCBmdW5jdGlvbkxvY2F0aW9ucy5zaXplKCk7ICsrZnVuY3Rpb25JbmRleCkgewotICAgICAg
ICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiUHJvY2Vzc2luZyBmdW5jdGlvbiBzdGFydGluZyBhdDog
IiwgZnVuY3Rpb25Mb2NhdGlvbnNbZnVuY3Rpb25JbmRleF0uc3RhcnQsICIgYW5kIGVuZGluZyBh
dDogIiwgZnVuY3Rpb25Mb2NhdGlvbnNbZnVuY3Rpb25JbmRleF0uZW5kKTsKKyAgICAgICAgZGF0
YUxvZ0xuSWYoV2FzbUJCUVBsYW5JbnRlcm5hbDo6dmVyYm9zZSwgIlByb2Nlc3NpbmcgZnVuY3Rp
b24gc3RhcnRpbmcgYXQ6ICIsIGZ1bmN0aW9uTG9jYXRpb25zW2Z1bmN0aW9uSW5kZXhdLnN0YXJ0
LCAiIGFuZCBlbmRpbmcgYXQ6ICIsIGZ1bmN0aW9uTG9jYXRpb25zW2Z1bmN0aW9uSW5kZXhdLmVu
ZCk7CiAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGZ1bmN0aW9uU3RhcnQgPSBtX3NvdXJjZSArIGZ1
bmN0aW9uTG9jYXRpb25zW2Z1bmN0aW9uSW5kZXhdLnN0YXJ0OwogICAgICAgICBzaXplX3QgZnVu
Y3Rpb25MZW5ndGggPSBmdW5jdGlvbkxvY2F0aW9uc1tmdW5jdGlvbkluZGV4XS5lbmQgLSBmdW5j
dGlvbkxvY2F0aW9uc1tmdW5jdGlvbkluZGV4XS5zdGFydDsKICAgICAgICAgQVNTRVJUKGZ1bmN0
aW9uTGVuZ3RoIDw9IG1fc291cmNlTGVuZ3RoKTsKQEAgLTEyMCw3ICsxMjIsNyBAQCBib29sIEJC
UVBsYW46OnBhcnNlQW5kVmFsaWRhdGVNb2R1bGUoKQogCiAgICAgICAgIGF1dG8gdmFsaWRhdGlv
blJlc3VsdCA9IHZhbGlkYXRlRnVuY3Rpb24oZnVuY3Rpb25TdGFydCwgZnVuY3Rpb25MZW5ndGgs
IHNpZ25hdHVyZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi5nZXQoKSk7CiAgICAgICAgIGlmICghdmFs
aWRhdGlvblJlc3VsdCkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAg
IGlmIChXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGZ1bmN0aW9uTGVuZ3RoOyArK2kpCiAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihmdW5jdGlv
blN0YXJ0W2ldKSksICIsICIpOwogICAgICAgICAgICAgICAgIGRhdGFMb2dMbigpOwpAQCAtMTMw
LDcgKzEzMiw3IEBAIGJvb2wgQkJRUGxhbjo6cGFyc2VBbmRWYWxpZGF0ZU1vZHVsZSgpCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBpZiAodmVyYm9zZSB8fCBPcHRpb25zOjpyZXBvcnRDb21waWxl
VGltZXMoKSkKKyAgICBpZiAoV2FzbUJCUVBsYW5JbnRlcm5hbDo6dmVyYm9zZSB8fCBPcHRpb25z
OjpyZXBvcnRDb21waWxlVGltZXMoKSkKICAgICAgICAgZGF0YUxvZ0xuKCJUb29rICIsIChNb25v
dG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0VGltZSkubWljcm9zZWNvbmRzKCksICIgdXMgdG8gdmFs
aWRhdGUgbW9kdWxlIik7CiAKICAgICBtb3ZlVG9TdGF0ZShTdGF0ZTo6VmFsaWRhdGVkKTsKQEAg
LTE0Miw3ICsxNDQsNyBAQCBib29sIEJCUVBsYW46OnBhcnNlQW5kVmFsaWRhdGVNb2R1bGUoKQog
dm9pZCBCQlFQbGFuOjpwcmVwYXJlKCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6
VmFsaWRhdGVkKTsKLSAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiU3RhcnRpbmcgcHJlcGFyYXRp
b24iKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlLCAiU3Rh
cnRpbmcgcHJlcGFyYXRpb24iKTsKIAogICAgIGF1dG8gdHJ5UmVzZXJ2ZUNhcGFjaXR5ID0gW3Ro
aXNdIChhdXRvJiB2ZWN0b3IsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiB3aGF0KSB7CiAgICAg
ICAgIGlmIChVTkxJS0VMWSghdmVjdG9yLnRyeVJlc2VydmVDYXBhY2l0eShzaXplKSkpIHsKQEAg
LTE3NCw3ICsxNzYsNyBAQCB2b2lkIEJCUVBsYW46OnByZXBhcmUoKQogICAgICAgICBpZiAoaW1w
b3J0LT5raW5kICE9IEV4dGVybmFsS2luZDo6RnVuY3Rpb24pCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgdW5zaWduZWQgaW1wb3J0RnVuY3Rpb25JbmRleCA9IG1fd2FzbVRvV2FzbUV4
aXRTdHVicy5zaXplKCk7Ci0gICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJQcm9jZXNzaW5n
IGltcG9ydCBmdW5jdGlvbiBudW1iZXIgIiwgaW1wb3J0RnVuY3Rpb25JbmRleCwgIjogIiwgbWFr
ZVN0cmluZyhpbXBvcnQtPm1vZHVsZSksICI6ICIsIG1ha2VTdHJpbmcoaW1wb3J0LT5maWVsZCkp
OworICAgICAgICBkYXRhTG9nTG5JZihXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlLCAiUHJv
Y2Vzc2luZyBpbXBvcnQgZnVuY3Rpb24gbnVtYmVyICIsIGltcG9ydEZ1bmN0aW9uSW5kZXgsICI6
ICIsIG1ha2VTdHJpbmcoaW1wb3J0LT5tb2R1bGUpLCAiOiAiLCBtYWtlU3RyaW5nKGltcG9ydC0+
ZmllbGQpKTsKICAgICAgICAgYXV0byBiaW5kaW5nID0gd2FzbVRvV2FzbShpbXBvcnRGdW5jdGlv
bkluZGV4KTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFiaW5kaW5nKSkgewogICAgICAgICAgICAg
c3dpdGNoIChiaW5kaW5nLmVycm9yKCkpIHsKQEAgLTIzMCw3ICsyMzIsNyBAQCBwdWJsaWM6CiB2
b2lkIEJCUVBsYW46OmNvbXBpbGVGdW5jdGlvbnMoQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQog
ewogICAgIEFTU0VSVChtX3N0YXRlID49IFN0YXRlOjpQcmVwYXJlZCk7Ci0gICAgZGF0YUxvZ0xu
SWYodmVyYm9zZSwgIlN0YXJ0aW5nIGNvbXBpbGF0aW9uIik7CisgICAgZGF0YUxvZ0xuSWYoV2Fz
bUJCUVBsYW5JbnRlcm5hbDo6dmVyYm9zZSwgIlN0YXJ0aW5nIGNvbXBpbGF0aW9uIik7CiAKICAg
ICBpZiAoIWhhc1dvcmsoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjk0LDcgKzI5Niw3IEBAIHZv
aWQgQkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9ucyhDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiB2
b2lkIEJCUVBsYW46OmNvbXBsZXRlKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIpCiB7CiAg
ICAgQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6OkNvbXBpbGVkIHx8IG1fY3VycmVudEluZGV4ID49
IG1fbW9kdWxlSW5mb3JtYXRpb24tPmZ1bmN0aW9uTG9jYXRpb25JbkJpbmFyeS5zaXplKCkpOwot
ICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJTdGFydGluZyBDb21wbGV0aW9uIik7CisgICAgZGF0
YUxvZ0xuSWYoV2FzbUJCUVBsYW5JbnRlcm5hbDo6dmVyYm9zZSwgIlN0YXJ0aW5nIENvbXBsZXRp
b24iKTsKIAogICAgIGlmICghZmFpbGVkKCkgJiYgbV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGlsZWQp
IHsKICAgICAgICAgZm9yICh1aW50MzJfdCBmdW5jdGlvbkluZGV4ID0gMDsgZnVuY3Rpb25JbmRl
eCA8IG1fbW9kdWxlSW5mb3JtYXRpb24tPmZ1bmN0aW9uTG9jYXRpb25JbkJpbmFyeS5zaXplKCk7
IGZ1bmN0aW9uSW5kZXgrKykgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAppbmRleCBlODZmZDQ3OTkwZTg4ODhkMjZmZGRm
YTczOTRlNDc2YWJjYzgwMTg0Li4yYjFkODI4ZTI3Yzc1MzUwZmRkOTRmYzE5NWNlNjRkN2MxZWM1
YTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWdu
YWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRT
aWduYWxIYW5kbGVyLmNwcApAQCAtNDIsOCArNDIsMTAgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgV2FzbSB7CiAKIG5hbWVzcGFjZSB7CituYW1lc3BhY2UgV2FzbUZhdWx0U2lnbmFsSGFu
ZGxlckludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKIH0KK30K
IAogc3RhdGljIFN0YXRpY0xvY2sgY29kZUxvY2F0aW9uc0xvY2s7CiBzdGF0aWMgTGF6eU5ldmVy
RGVzdHJveWVkPEhhc2hTZXQ8c3RkOjp0dXBsZTx2b2lkKiwgdm9pZCo+Pj4gY29kZUxvY2F0aW9u
czsgLy8gKHN0YXJ0LCBlbmQpCkBAIC01NSwzMyArNTcsMzMgQEAgc3RhdGljIGJvb2wgZmFzdEhh
bmRsZXJJbnN0YWxsZWQgeyBmYWxzZSB9Owogc3RhdGljIFNpZ25hbEFjdGlvbiB0cmFwSGFuZGxl
cihTaWduYWwsIFNpZ0luZm8mIHNpZ0luZm8sIFBsYXRmb3JtUmVnaXN0ZXJzJiBjb250ZXh0KQog
ewogICAgIHZvaWQqIGZhdWx0aW5nSW5zdHJ1Y3Rpb24gPSBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1
Y3Rpb25Qb2ludGVyKGNvbnRleHQpOwotICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJzdGFydGlu
ZyBoYW5kbGVyIGZvciBmYXVsdCBhdDogIiwgUmF3UG9pbnRlcihmYXVsdGluZ0luc3RydWN0aW9u
KSk7CisgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJi
b3NlLCAic3RhcnRpbmcgaGFuZGxlciBmb3IgZmF1bHQgYXQ6ICIsIFJhd1BvaW50ZXIoZmF1bHRp
bmdJbnN0cnVjdGlvbikpOwogCi0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIkpJVCBtZW1vcnkg
c3RhcnQ6ICIsIFJhd1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhcnRPZkZpeGVk
RXhlY3V0YWJsZU1lbW9yeVBvb2wpKSwgIiBlbmQ6ICIsIFJhd1BvaW50ZXIocmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oZW5kT2ZGaXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sKSkpOworICAgIGRhdGFM
b2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkpJVCBtZW1v
cnkgc3RhcnQ6ICIsIFJhd1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhcnRPZkZp
eGVkRXhlY3V0YWJsZU1lbW9yeVBvb2wpKSwgIiBlbmQ6ICIsIFJhd1BvaW50ZXIocmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oZW5kT2ZGaXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sKSkpOwogICAgIC8v
IEZpcnN0IHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGFyZSBpbiBKSVQgY29kZSBiZWZvcmUgd2Ug
Y2FuIGFxdWlyZSBhbnkgbG9ja3MuIE90aGVyd2lzZSwKICAgICAvLyB3ZSBtaWdodCBoYXZlIGNy
YXNoZWQgaW4gY29kZSB0aGF0IGlzIGFscmVhZHkgaG9sZGluZyBvbmUgb2YgdGhlIGxvY2tzIHdl
IHdhbnQgdG8gYXF1aXJlLgogICAgIGlmIChpc0pJVFBDKGZhdWx0aW5nSW5zdHJ1Y3Rpb24pKSB7
CiAgICAgICAgIGJvb2wgZmF1bHRlZEluQWN0aXZlRmFzdE1lbW9yeSA9IGZhbHNlOwogICAgICAg
ICB7CiAgICAgICAgICAgICB2b2lkKiBmYXVsdGluZ0FkZHJlc3MgPSBzaWdJbmZvLmZhdWx0aW5n
QWRkcmVzczsKLSAgICAgICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJjaGVja2luZyBmYXVs
dGluZyBhZGRyZXNzOiAiLCBSYXdQb2ludGVyKGZhdWx0aW5nQWRkcmVzcyksICIgaXMgaW4gYW4g
YWN0aXZlIGZhc3QgbWVtb3J5Iik7CisgICAgICAgICAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRT
aWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJjaGVja2luZyBmYXVsdGluZyBhZGRyZXNz
OiAiLCBSYXdQb2ludGVyKGZhdWx0aW5nQWRkcmVzcyksICIgaXMgaW4gYW4gYWN0aXZlIGZhc3Qg
bWVtb3J5Iik7CiAgICAgICAgICAgICBmYXVsdGVkSW5BY3RpdmVGYXN0TWVtb3J5ID0gV2FzbTo6
TWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUZhc3RNZW1vcnkoZmF1bHRpbmdBZGRyZXNzKTsKICAg
ICAgICAgfQogICAgICAgICBpZiAoZmF1bHRlZEluQWN0aXZlRmFzdE1lbW9yeSkgewotICAgICAg
ICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgImZvdW5kIGFjdGl2ZSBmYXN0IG1lbW9yeSBmb3Ig
ZmF1bHRpbmcgYWRkcmVzcyIpOworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2ln
bmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAiZm91bmQgYWN0aXZlIGZhc3QgbWVtb3J5IGZv
ciBmYXVsdGluZyBhZGRyZXNzIik7CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihjb2Rl
TG9jYXRpb25zTG9jayk7CiAgICAgICAgICAgICBmb3IgKGF1dG8gcmFuZ2UgOiBjb2RlTG9jYXRp
b25zLmdldCgpKSB7CiAgICAgICAgICAgICAgICAgdm9pZCogc3RhcnQ7CiAgICAgICAgICAgICAg
ICAgdm9pZCogZW5kOwogICAgICAgICAgICAgICAgIHN0ZDo6dGllKHN0YXJ0LCBlbmQpID0gcmFu
Z2U7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgImZ1bmN0aW9uIHN0YXJ0
OiAiLCBSYXdQb2ludGVyKHN0YXJ0KSwgIiBlbmQ6ICIsIFJhd1BvaW50ZXIoZW5kKSk7CisgICAg
ICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2
ZXJib3NlLCAiZnVuY3Rpb24gc3RhcnQ6ICIsIFJhd1BvaW50ZXIoc3RhcnQpLCAiIGVuZDogIiwg
UmF3UG9pbnRlcihlbmQpKTsKICAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPD0gZmF1bHRpbmdJ
bnN0cnVjdGlvbiAmJiBmYXVsdGluZ0luc3RydWN0aW9uIDwgZW5kKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJmb3VuZCBtYXRjaCIpOworICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJv
c2UsICJmb3VuZCBtYXRjaCIpOwogICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgZXhjZXB0aW9uU3R1YiA9IFRodW5rczo6c2luZ2xldG9uKCkuZXhpc3RpbmdTdHViKHRo
cm93RXhjZXB0aW9uRnJvbVdhc21UaHVua0dlbmVyYXRvcik7CiAgICAgICAgICAgICAgICAgICAg
IC8vIElmIGZvciB3aGF0ZXZlciByZWFzb24gd2UgZG9uJ3QgaGF2ZSBhIHN0dWIgdGhlbiB3ZSBz
aG91bGQganVzdCB0cmVhdCB0aGlzIGxpa2UgYSByZWd1bGFyIGNyYXNoLgogICAgICAgICAgICAg
ICAgICAgICBpZiAoIWV4Y2VwdGlvblN0dWIpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgImZvdW5kIHN0dWI6
ICIsIFJhd1BvaW50ZXIoZXhjZXB0aW9uU3R1Yi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkp
OworICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVy
SW50ZXJuYWw6OnZlcmJvc2UsICJmb3VuZCBzdHViOiAiLCBSYXdQb2ludGVyKGV4Y2VwdGlvblN0
dWIuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKICAgICAgICAgICAgICAgICAgICAgTWFj
aGluZUNvbnRleHQ6OmFyZ3VtZW50UG9pbnRlcjwxPihjb250ZXh0KSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzTWVtb3J5QWNjZXNzKTsKICAgICAg
ICAgICAgICAgICAgICAgTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihjb250ZXh0
KSA9IGV4Y2VwdGlvblN0dWIuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBTaWduYWxBY3Rpb246OkhhbmRsZWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKaW5kZXggNTkxOGY5MmJiODBiYmRlZTU0MDEwNDcx
MzFkODMyYmQxOTZiZjc1Yi4uNzRjZjY1MzQ5NzUyNWNlMjYxZDQwYzcyYzQ2MjNhY2Q4MGY2NWNl
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcApAQCAtNDcs
NyArNDcsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCituYW1lc3Bh
Y2UgV2FzbU9NR1BsYW5JbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFs
c2U7Cit9CiAKIE9NR1BsYW46Ok9NR1BsYW4oUmVmPE1vZHVsZT4gbW9kdWxlLCB1aW50MzJfdCBm
dW5jdGlvbkluZGV4LCBNZW1vcnlNb2RlIG1vZGUsIENvbXBsZXRpb25UYXNrJiYgdGFzaykKICAg
ICA6IEJhc2UobnVsbHB0ciwgbWFrZVJlZihjb25zdF9jYXN0PE1vZHVsZUluZm9ybWF0aW9uJj4o
bW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpKSksIFdURk1vdmUodGFzaykpCkBAIC01OCw3ICs2
MCw3IEBAIE9NR1BsYW46Ok9NR1BsYW4oUmVmPE1vZHVsZT4gbW9kdWxlLCB1aW50MzJfdCBmdW5j
dGlvbkluZGV4LCBNZW1vcnlNb2RlIG1vZGUsIENvCiAgICAgc2V0TW9kZShtb2RlKTsKICAgICBB
U1NFUlQobV9jb2RlQmxvY2stPnJ1bm5hYmxlKCkpOwogICAgIEFTU0VSVChtX2NvZGVCbG9jay5w
dHIoKSA9PSBtX21vZHVsZS0+Y29kZUJsb2NrRm9yKG1fbW9kZSkpOwotICAgIGRhdGFMb2dMbklm
KHZlcmJvc2UsICJTdGFydGluZyBPTUcgcGxhbiBmb3IgIiwgZnVuY3Rpb25JbmRleCwgIiBvZiBt
b2R1bGU6ICIsIFJhd1BvaW50ZXIoJm1fbW9kdWxlLmdldCgpKSk7CisgICAgZGF0YUxvZ0xuSWYo
V2FzbU9NR1BsYW5JbnRlcm5hbDo6dmVyYm9zZSwgIlN0YXJ0aW5nIE9NRyBwbGFuIGZvciAiLCBm
dW5jdGlvbkluZGV4LCAiIG9mIG1vZHVsZTogIiwgUmF3UG9pbnRlcigmbV9tb2R1bGUuZ2V0KCkp
KTsKIH0KIAogdm9pZCBPTUdQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQpAQCAtMTM4LDkg
KzE0MCw5IEBAIHZvaWQgT01HUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkKIAogICAgICAg
ICBhdXRvIHJlcGF0Y2hDYWxscyA9IFsmXSAoY29uc3QgVmVjdG9yPFVubGlua2VkV2FzbVRvV2Fz
bUNhbGw+JiAgY2FsbHNpdGVzKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGNhbGwgOiBjYWxs
c2l0ZXMpIHsKLSAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiQ29uc2lkZXJp
bmcgcmVwYXRjaGluZyBjYWxsIGF0OiAiLCBSYXdQb2ludGVyKGNhbGwuY2FsbExvY2F0aW9uLmRh
dGFMb2NhdGlvbigpKSwgIiB0aGF0IHRhcmdldHMgIiwgY2FsbC5mdW5jdGlvbkluZGV4U3BhY2Up
OworICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21PTUdQbGFuSW50ZXJuYWw6OnZlcmJv
c2UsICJDb25zaWRlcmluZyByZXBhdGNoaW5nIGNhbGwgYXQ6ICIsIFJhd1BvaW50ZXIoY2FsbC5j
YWxsTG9jYXRpb24uZGF0YUxvY2F0aW9uKCkpLCAiIHRoYXQgdGFyZ2V0cyAiLCBjYWxsLmZ1bmN0
aW9uSW5kZXhTcGFjZSk7CiAgICAgICAgICAgICAgICAgaWYgKGNhbGwuZnVuY3Rpb25JbmRleFNw
YWNlID09IGZ1bmN0aW9uSW5kZXhTcGFjZSkgewotICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
TG5JZih2ZXJib3NlLCAiUmVwYXRjaGluZyBjYWxsIGF0OiAiLCBSYXdQb2ludGVyKGNhbGwuY2Fs
bExvY2F0aW9uLmRhdGFMb2NhdGlvbigpKSwgIiB0byAiLCBSYXdQb2ludGVyKGVudHJ5cG9pbnQp
KTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbU9NR1BsYW5JbnRlcm5hbDo6
dmVyYm9zZSwgIlJlcGF0Y2hpbmcgY2FsbCBhdDogIiwgUmF3UG9pbnRlcihjYWxsLmNhbGxMb2Nh
dGlvbi5kYXRhTG9jYXRpb24oKSksICIgdG8gIiwgUmF3UG9pbnRlcihlbnRyeXBvaW50KSk7CiAg
ICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwoY2FsbC5j
YWxsTG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKGVudHJ5cG9pbnQpKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xNTYsNyArMTU4LDcgQEAgdm9pZCBPTUdQbGFuOjp3
b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogICAgICAgICByZXBhdGNoQ2FsbHModW5saW5rZWRDYWxs
cyk7CiAgICAgfQogCi0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIkZpbmlzaGVkIHdpdGggdGll
ciB1cCBjb3VudCBhdDogIiwgbV9jb2RlQmxvY2stPnRpZXJVcENvdW50KG1fZnVuY3Rpb25JbmRl
eCkuY291bnQoKSk7CisgICAgZGF0YUxvZ0xuSWYoV2FzbU9NR1BsYW5JbnRlcm5hbDo6dmVyYm9z
ZSwgIkZpbmlzaGVkIHdpdGggdGllciB1cCBjb3VudCBhdDogIiwgbV9jb2RlQmxvY2stPnRpZXJV
cENvdW50KG1fZnVuY3Rpb25JbmRleCkuY291bnQoKSk7CiAgICAgY29tcGxldGUoaG9sZExvY2so
bV9sb2NrKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21QbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcAppbmRl
eCAxNDgzYWM3NDg5MmIyZjE2NDJhNmNiMzYwYmM2NDk4N2JjZjVmMTFmLi5iYTI3Y2Y5Zjk2ZjU1
NTBmMmY0ODEyZTA5MTI0YjViZjgxMDA1YWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVBsYW4uY3BwCkBAIC00Nyw3ICs0Nyw5IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgV2FzbSB7CiAKK25hbWVzcGFjZSBXYXNtUGxhbkludGVybmFsIHsKIHN0YXRpYyBjb25zdCBi
b29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogUGxhbjo6UGxhbihWTSogdm0sIFJlZjxNb2R1bGVJ
bmZvcm1hdGlvbj4gaW5mbywgQ29tcGxldGlvblRhc2smJiB0YXNrKQogICAgIDogbV9tb2R1bGVJ
bmZvcm1hdGlvbihXVEZNb3ZlKGluZm8pKQpAQCAtMTI4LDcgKzEzMCw3IEBAIGJvb2wgUGxhbjo6
dHJ5UmVtb3ZlVk1BbmRDYW5jZWxJZkxhc3QoVk0mIHZtKQogCiB2b2lkIFBsYW46OmZhaWwoY29u
c3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgU3RyaW5nJiYgZXJyb3JNZXNzYWdlKQogewotICAg
IGRhdGFMb2dMbklmKHZlcmJvc2UsICJmYWlsaW5nIHdpdGggbWVzc2FnZTogIiwgZXJyb3JNZXNz
YWdlKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtUGxhbkludGVybmFsOjp2ZXJib3NlLCAiZmFpbGlu
ZyB3aXRoIG1lc3NhZ2U6ICIsIGVycm9yTWVzc2FnZSk7CiAgICAgbV9lcnJvck1lc3NhZ2UgPSBX
VEZNb3ZlKGVycm9yTWVzc2FnZSk7CiAgICAgY29tcGxldGUobG9ja2VyKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5jcHAKaW5kZXggYjIyOThkNjVjYmFi
OGQ1MGJlODdlMDIyZGE0M2JiNjIyYzU4ZmU3Yi4uOGI2MDBlZDM4NjQ0MzEyODgyZjEzYzVmNDlm
YzhmZDllNjc5Mjk3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVNpZ25hdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25h
dHVyZS5jcHAKQEAgLTM2LDcgKzM2LDkgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2Fz
bSB7CiAKIG5hbWVzcGFjZSB7Ci1jb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFj
ZSBXYXNtU2lnbmF0dXJlSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZh
bHNlOworfQogfQogCiBTdHJpbmcgU2lnbmF0dXJlOjp0b1N0cmluZygpIGNvbnN0CkBAIC0xMDMs
NyArMTA1LDcgQEAgc3RkOjpwYWlyPFNpZ25hdHVyZUluZGV4LCBSZWY8U2lnbmF0dXJlPj4gU2ln
bmF0dXJlSW5mb3JtYXRpb246OmFkb3B0KFJlZjxTaWduYXQKICAgICAgICAgKytpbmZvLm1fbmV4
dEluZGV4OwogICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmZvLm1fbmV4dEluZGV4ID4gbmV4dFZh
bHVlKTsgLy8gY3Jhc2ggb24gb3ZlcmZsb3cuCiAgICAgICAgIEFTU0VSVChuZXh0VmFsdWUgPT0g
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICBpZiAoV2FzbVNpZ25hdHVyZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxv
Z0xuKCJBZG9wdCBuZXcgc2lnbmF0dXJlICIsIHNpZ25hdHVyZS5nZXQoKSwgIiB3aXRoIGluZGV4
ICIsIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUsICIgaGFzaDogIiwgc2lnbmF0dXJlLT5oYXNo
KCkpOwogCiAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gaW5mby5tX2luZGV4TWFwLmFkZChuZXh0
VmFsdWUsIHNpZ25hdHVyZS5jb3B5UmVmKCkpOwpAQCAtMTExLDcgKzExMyw3IEBAIHN0ZDo6cGFp
cjxTaWduYXR1cmVJbmRleCwgUmVmPFNpZ25hdHVyZT4+IFNpZ25hdHVyZUluZm9ybWF0aW9uOjph
ZG9wdChSZWY8U2lnbmF0CiAgICAgICAgIEFTU0VSVChpbmZvLm1faW5kZXhNYXAuc2l6ZSgpID09
IGluZm8ubV9zaWduYXR1cmVNYXAuc2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9w
YWlyKG5leHRWYWx1ZSwgV1RGTW92ZShzaWduYXR1cmUpKTsKICAgICB9Ci0gICAgaWYgKHZlcmJv
c2UpCisgICAgaWYgKFdhc21TaWduYXR1cmVJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0
YUxvZ0xuKCJFeGlzdGluZyBzaWduYXR1cmUgIiwgc2lnbmF0dXJlLmdldCgpLCAiIHdpdGggaW5k
ZXggIiwgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSwgIiBoYXNoOiAiLCBzaWduYXR1cmUtPmhh
c2goKSk7CiAgICAgQVNTRVJUKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgIT0gU2lnbmF0dXJl
OjppbnZhbGlkSW5kZXgpOwogICAgIEFTU0VSVChpbmZvLm1faW5kZXhNYXAuY29udGFpbnMoYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Xb3JrbGlzdC5jcHAKaW5kZXggNzZhODdhYzFiNDczNmYzY2YzN2MzNTM5ZGJjOTYxZjY3ODZh
MDEzNC4uOWM1YjY4NDRjNDZiNzRmMDI2ZTBkODU2YjQxOWNlOTc1YzYwMDkyZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwCkBAIC0zMyw3ICszMyw5IEBA
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKK25hbWVzcGFjZSBXYXNtV29y
a2xpc3RJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAK
IGNvbnN0IGNoYXIqIFdvcmtsaXN0Ojpwcmlvcml0eVN0cmluZyhQcmlvcml0eSBwcmlvcml0eSkK
IHsKQEAgLTE0NCw3ICsxNDYsNyBAQCB2b2lkIFdvcmtsaXN0OjplbnF1ZXVlKFJlZjxQbGFuPiBw
bGFuKQogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChlbGVtZW50LCBlbGVtZW50LnBsYW4uZ2V0
KCkgIT0gJnBsYW4uZ2V0KCkpOwogICAgIH0KIAotICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJF
bnF1ZXVpbmcgcGxhbiIpOworICAgIGRhdGFMb2dMbklmKFdhc21Xb3JrbGlzdEludGVybmFsOjp2
ZXJib3NlLCAiRW5xdWV1aW5nIHBsYW4iKTsKICAgICBtX3F1ZXVlLmVucXVldWUoeyBQcmlvcml0
eTo6UHJlcGFyYXRpb24sIG5leHRUaWNrZXQoKSwgIFdURk1vdmUocGxhbikgfSk7CiAgICAgbV9w
bGFuRW5xdWV1ZWQtPm5vdGlmeU9uZShsb2NrZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvQXNzZXJ0aW9ucy5oIGIvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oCmluZGV4IDZh
YWEwMmMwZDI5NjE5ZDhmZWJkYWJmZTdkNGFmMmM1MTdkZTRlZWIuLmY0ODViMDBlMTlmN2NkMzVi
Yjg1NTZiYjc3NWJmYTFjY2NkMjZjMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Fzc2Vy
dGlvbnMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgKQEAgLTUzNSwxOCArNTM1
LDIyIEBAIGlubGluZSB2b2lkIGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpCiAjZW5kaWYKIH0KIAot
I2lmbmRlZiBDUkFTSF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OX0FORF9JTkZPCisjaWZuZGVm
IENSQVNIX1dJVEhfSU5GTwogLy8gVGhpcyBpcyB1c2VmdWwgaWYgeW91IGFyZSBnb2luZyB0byBz
dHVmZiBkYXRhIGludG8gcmVnaXN0ZXJzIGJlZm9yZSBjcmFzaGluZy4gTGlrZSB0aGUgY3Jhc2hX
aXRoSW5mbyBmdW5jdGlvbnMgYmVsb3cuLi4KIC8vIEdDQyBkb2Vzbid0IGxpa2UgdGhlICMjX19W
QV9BUkdTX18gaGVyZSBzaW5jZSB0aGlzIG1hY3JvIGlzIGNhbGxlZCBmcm9tIGFub3RoZXIgbWFj
cm8gc28gd2UganVzdCBDUkFTSCBpbnN0ZWFkIHRoZXJlLgogI2lmIENPTVBJTEVSKENMQU5HKSB8
fCBDT01QSUxFUihNU1ZDKQotI2RlZmluZSBDUkFTSF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
X0FORF9JTkZPKC4uLikgZG8geyBcCisjZGVmaW5lIENSQVNIX1dJVEhfSU5GTyguLi4pIGRvIHsg
XAogICAgICAgICBXVEY6OmlzSW50ZWdyYWxUeXBlKF9fVkFfQVJHU19fKTsgXAogICAgICAgICBj
b21waWxlckZlbmNlRm9yQ3Jhc2goKTsgXAogICAgICAgICBXVEZDcmFzaFdpdGhJbmZvKF9fTElO
RV9fLCBfX0ZJTEVfXywgV1RGX1BSRVRUWV9GVU5DVElPTiwgX19DT1VOVEVSX18sICMjX19WQV9B
UkdTX18pOyBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAjZWxzZQotI2RlZmluZSBDUkFTSF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OX0FORF9JTkZPKC4uLikgQ1JBU0goKQorI2RlZmluZSBDUkFT
SF9XSVRIX0lORk8oLi4uKSBDUkFTSCgpCiAjZW5kaWYKKyNlbmRpZiAvLyBDUkFTSF9XSVRIX0lO
Rk8KKworI2lmbmRlZiBDUkFTSF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OX0FORF9JTkZPCisj
ZGVmaW5lIENSQVNIX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fQU5EX0lORk8gQ1JBU0hfV0lU
SF9JTkZPCiAjZW5kaWYgLy8gQ1JBU0hfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTl9BTkRfSU5G
TwogCiAjZW5kaWYgLy8gX19jcGx1c3BsdXMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320442</attachid>
            <date>2017-09-11 10:43:33 -0700</date>
            <delta_ts>2017-09-11 12:51:21 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-176076-20170911104225.patch</filename>
            <type>text/plain</type>
            <size>203113</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxODU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YmNjZWFjYzVkY2IxNTdmMjAzMDNkYzUzODlmOGMzNzk0YWQwMTlmLi42NTY3NThkNmQ5MjgxN2Ex
ZTlhNGQyZDNhNjkyYmVlZjZhM2MxNjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMjkgQEAKKzIwMTctMDktMTEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgRG8gdW5pZmllZCBzb3VyY2UgYnVpbGRzIGZvciBKU0MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjA3NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEpTQyBidWlsZHMgd2l0
aCBDTWFrZSBsb2NhbGx5LgorCisgICAgICAgIFRoaW5ncyB0byBkbzoKKworICAgICAgICBNYWtl
IHN1cmUgWGNvZGUgc3RpbGwgYnVpbGRzLgorICAgICAgICBNb3ZlIGJ1bmRsZXIgdG8gZ2VuZXJh
bCBzY3JpcHQuCisgICAgICAgIE1ha2UgZGVwZW5kZW5jaWVzIGFjdHVhbGx5IHdvcmsgaW4gQ01h
a2UuIENNYWtlIHNlZW1zIHRvLCByZWFzb25hYmx5LCB0aGluIHRoYXQgY3BwIGZpbGVzIGFyZSB0
aGVpciBvd24gdHJhbnNsYXRpb24gdW5pdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBiMy9CM0NoZWNrU3BlY2lhbC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpDaGVj
a1NwZWNpYWw6OmZvckVhY2hBcmcpOgorICAgICAgICAoSlNDOjpCMzo6Q2hlY2tTcGVjaWFsOjpn
ZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Om51bUIzQXJncyk6IERlbGV0ZWQuCisg
ICAgICAgICogYjMvQjNEdXBsaWNhdGVUYWlscy5jcHA6CisgICAgICAgICogYjMvQjNFbGltaW5h
dGVDb21tb25TdWJleHByZXNzaW9ucy5jcHA6CisgICAgICAgICogYjMvQjNGaXhTU0EuY3BwOgor
ICAgICAgICAoSlNDOjpCMzo6ZGVtb3RlVmFsdWVzKToKKyAgICAgICAgKiBiMy9CM0ZvbGRQYXRo
Q29uc3RhbnRzLmNwcDoKKyAgICAgICAgKiBiMy9CM0luZmVyU3dpdGNoZXMuY3BwOgorICAgICAg
ICAqIGIzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwOgorICAgICAgICAoKTog
RGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpMb3dlclRvQWlyOjpMb3dlclRvQWlyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6cnVuKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6c2hvdWxkQ29weVByb3BhZ2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OkFyZ1Byb21pc2UpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjpzd2FwKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6
b3BlcmF0b3I9KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
QXJnUHJvbWlzZTo6fkFyZ1Byb21pc2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjpzZXRUcmFwcyk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OnRtcCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6Om9wZXJhdG9yIGJvb2wg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQ
cm9taXNlOjpraW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6cGVlayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OmNvbnN1bWUpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjppbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dG1wKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dG1wUHJvbWlzZSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNhbkJlSW50ZXJuYWwpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpjb21taXRJbnRlcm5hbCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyb3NzZXNJbnRlcmZl
cmVuY2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzY2Fs
ZUZvclNobCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmVm
ZmVjdGl2ZUFkZHIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
OjphZGRyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJh
cHBpbmdJbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
bG9hZFByb21pc2VBbnlPcGNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpsb2FkUHJvbWlzZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okxvd2VyVG9BaXI6OmltbSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6OmJpdEltbSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OmJpdEltbTY0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fp
cjo6aW1tT3JUbXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
Ojp0cnlPcGNvZGVGb3JUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6b3Bjb2RlRm9yVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okxvd2VyVG9BaXI6OmFwcGVuZFVuT3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjpwcmVmZXJSaWdodEZvclJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZEJpbk9wKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kU2hpZnQpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0cnlBcHBlbmRTdG9yZVVuT3ApOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0cnlBcHBlbmRTdG9yZUJpbk9w
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRlU3Rv
cmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzdG9yZU9w
Y29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVu
ZFN0b3JlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bW92
ZUZvclR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpy
ZWxheGVkTW92ZUZvclR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpwcmludCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OmFwcGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OmFwcGVuZFRyYXBwaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJU
b0Fpcjo6ZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bmV3QmxvY2spOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzcGxpdEJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6ZW5zdXJlU3BlY2lhbCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmVuc3VyZUNoZWNrU3BlY2lhbCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmZpbGxTdGFja21hcCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZUdlbmVyaWNDb21w
YXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRl
QnJhbmNoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3Jl
YXRlQ29tcGFyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OmNyZWF0ZVNlbGVjdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OnRyeUFwcGVuZExlYSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6OmFwcGVuZFg4NkRpdik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6OmFwcGVuZFg4NlVEaXYpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjpsb2FkTGlua09wY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OnN0b3JlQ29uZE9wY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZENBUyk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFZvaWRBdG9taWMpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRHZW5lcmFsQXRvbWljKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG93ZXIpOiBEZWxldGVk
LgorICAgICAgICAqIGIzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwOgorICAgICAgICAoSlNDOjpC
Mzo6UGF0Y2hwb2ludFNwZWNpYWw6OmdlbmVyYXRlKToKKyAgICAgICAgKiBiMy9CM1JlZHVjZURv
dWJsZVRvRmxvYXQuY3BwOgorICAgICAgICAoSlNDOjpCMzo6cmVkdWNlRG91YmxlVG9GbG9hdCk6
CisgICAgICAgICogYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHA6CisgICAgICAgICogYjMvQjNTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMuY3BwOgorICAgICAgICAqIGIzL0IzU3RhY2ttYXBTcGVjaWFs
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlN0YWNrbWFwU3BlY2lhbDo6cmVwc0ltcGwpOgorICAg
ICAgICAoSlNDOjpCMzo6U3RhY2ttYXBTcGVjaWFsOjpyZXBGb3JBcmcpOgorICAgICAgICAqIGIz
L2Fpci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6YWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZyk6CisgICAgICAgICogYjMvYWly
L0FpckVtaXRTaHVmZmxlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6ZW1pdFNodWZmbGUp
OgorICAgICAgICAqIGIzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcDoKKyAgICAgICAgKiBi
My9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
bG93ZXJBZnRlclJlZ0FsbG9jKToKKyAgICAgICAgKiBiMy9haXIvQWlyU3RhY2tBbGxvY2F0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6YXR0ZW1wdEFzc2lnbm1lbnQpOgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjphc3NpZ24pOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVERkdTdGF0dXNlcyk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVt
aXRET01KSVRHZXR0ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0LmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6Cisg
ICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcyk6CisgICAgICAgIChKU0M6
OlBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Qcm9w
ZXJ0eUNvbmRpdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjppc1N0
aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCBjb25zdCk6CisgICAgICAg
ICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0Vs
aW1pbmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OkRlbGF5ZWRTZXRMb2NhbDo6RGVs
YXllZFNldExvY2FsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5p
bmdDb3N0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lubGluZUNhbGwp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBsYW5Mb2FkKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6c3RvcmUpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6bGlua0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bGlua0Js
b2Nrcyk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
SW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0
cmFjdFN0YXRlOjptZXJnZSk6CisgICAgICAgICogZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmlu
Z1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFz
ZTo6aGFuZGxlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRp
b25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR01vdkhpbnRSZW1vdmFsUGhhc2UuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHUGhhbnRvbUluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
UHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhh
c2UuY3BwOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXAuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OkFic3RyYWN0SGVhcDo6Y29tcHV0ZSk6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9z
aXRvcnk6OmRlY29yYXRlTWVtb3J5KToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5OjpkZWNvcmF0ZUNDYWxsUmVhZCk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVDQ2FsbFdyaXRlKToKKyAgICAgICAgKEpTQzo6RlRM
OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZVBhdGNocG9pbnRSZWFkKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZVBhdGNocG9pbnRX
cml0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3Jh
dGVGZW5jZVJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6
OmRlY29yYXRlRmVuY2VXcml0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVw
b3NpdG9yeTo6ZGVjb3JhdGVGZW5jZWRBY2Nlc3MpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3Ry
YWN0SGVhcFJlcG9zaXRvcnk6OmNvbXB1dGVSYW5nZXNBbmREZWNvcmF0ZUluc3RydWN0aW9ucyk6
CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgor
ICAgICAgICAqIGhlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwOgorICAgICAgICAoSlNDOjpN
YXJraW5nQ29uc3RyYWludFNldDo6YWRkKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9TaGFkb3dD
aGlja2VuLmNwcDoKKyAgICAgICAgKEpTQzo6U2hhZG93Q2hpY2tlbjo6dXBkYXRlKToKKyAgICAg
ICAgKiBqaXQvQmluYXJ5U3dpdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6QmluYXJ5U3dpdGNoOjpC
aW5hcnlTd2l0Y2gpOgorICAgICAgICAoSlNDOjpCaW5hcnlTd2l0Y2g6OmJ1aWxkKToKKyAgICAg
ICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6bG9h
ZFN0YXRzKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnNhdmVTdGF0cyk6CisgICAgICAg
ICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFycmF5UHJvdG90
eXBlOjp0cnlJbml0aWFsaXplU3BlY2llc1dhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBcnJh
eVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ6OmhhbmRsZUZpcmUp
OgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkZp
bmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3I6OkZpbmRGaXJzdENhbGxlckZy
YW1lV2l0aENvZGVibG9ja0Z1bmN0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGaW5kRmly
c3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjpvcGVyYXRvcigpKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2NrRnVuY3Rvcjo6
Zm91bmRDYWxsRnJhbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGaW5kRmlyc3RD
YWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjppbmRleCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJ
bnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCk6CisgICAgICAgICog
cnVudGltZS9Qcm9taXNlRGVmZXJyZWRUaW1lci5jcHA6CisgICAgICAgIChKU0M6OlByb21pc2VE
ZWZlcnJlZFRpbWVyOjpkb1dvcmspOgorICAgICAgICAoSlNDOjpQcm9taXNlRGVmZXJyZWRUaW1l
cjo6YWRkUGVuZGluZ1Byb21pc2UpOgorICAgICAgICAoSlNDOjpQcm9taXNlRGVmZXJyZWRUaW1l
cjo6Y2FuY2VsUGVuZGluZ1Byb21pc2UpOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVByb2ZpbGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVByb2ZpbGVyOjppbnNlcnROZXdMb2NhdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwOgorICAgICAgICAoSlNDOjpUeXBl
UHJvZmlsZXJMb2c6OnByb2Nlc3NMb2dFbnRyaWVzKToKKyAgICAgICAgKiBydW50aW1lL1dlYWtN
YXBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwRGVsZXRlKToK
KyAgICAgICAgKEpTQzo6cHJvdG9GdW5jV2Vha01hcEdldCk6CisgICAgICAgIChKU0M6OnByb3Rv
RnVuY1dlYWtNYXBIYXMpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwU2V0KToKKyAg
ICAgICAgKEpTQzo6Z2V0V2Vha01hcERhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
V2Vha1NldFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtTZXREZWxl
dGUpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrU2V0SGFzKToKKyAgICAgICAgKEpTQzo6
cHJvdG9GdW5jV2Vha1NldEFkZCk6CisgICAgICAgIChKU0M6OmdldFdlYWtNYXBEYXRhKTogRGVs
ZXRlZC4KKyAgICAgICAgKiB0ZXN0UmVnRXhwLmNwcDoKKyAgICAgICAgKHRlc3RPbmVSZWdFeHAp
OgorICAgICAgICAocnVuRnJvbUZpbGVzKToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlKToKKyAgICAgICAg
KiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6bW92
ZVRvU3RhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpwYXJzZUFuZFZhbGlkYXRl
TW9kdWxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6cHJlcGFyZSk6CisgICAgICAg
IChKU0M6Oldhc206OkJCUVBsYW46OmNvbXBpbGVGdW5jdGlvbnMpOgorICAgICAgICAoSlNDOjpX
YXNtOjpCQlFQbGFuOjpjb21wbGV0ZSk6CisgICAgICAgICogd2FzbS9XYXNtRmF1bHRTaWduYWxI
YW5kbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6dHJhcEhhbmRsZXIpOgorICAgICAgICAq
IHdhc20vV2FzbU9NR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjpPTUdQ
bGFuKToKKyAgICAgICAgKEpTQzo6V2FzbTo6T01HUGxhbjo6d29yayk6CisgICAgICAgICogd2Fz
bS9XYXNtUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlBsYW46OmZhaWwpOgorICAgICAg
ICAqIHdhc20vV2FzbVNpZ25hdHVyZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlNpZ25hdHVy
ZUluZm9ybWF0aW9uOjphZG9wdCk6CisgICAgICAgICogd2FzbS9XYXNtV29ya2xpc3QuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpXb3JrbGlzdDo6ZW5xdWV1ZSk6CisKIDIwMTctMDktMDMgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0RGR10gT3B0
aW1pemUgV2Vha01hcDo6Z2V0IGJ5IGFkZGluZyBpbnRyaW5zaWMgYW5kIGZpeHVwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGFm
ODVmNWYzY2Q0NTdhNDRlOTkyNWE5YWNmMzZmMWMxOWYzOWRhMjcuLmM1NTQ0Mzg5ZjgwNDRhMDU2
ODlhZjM3ODBkMDUwOWI0Y2E3NDQyZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDktMTEg
IEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgRG8gdW5p
ZmllZCBzb3VyY2UgYnVpbGRzIGZvciBKU0MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NjA3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuaDoKKwogMjAxNy0wOS0wMyAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbREZHXSBPcHRp
bWl6ZSBXZWFrTWFwOjpnZXQgYnkgYWRkaW5nIGludHJpbnNpYyBhbmQgZml4dXAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBkYTFiYTFkOWJlMTU3YjU4M2M4MTA3OGJhZGJl
ZmRlYWQ1YmIyMGZhLi5hNTVhNWUyYWQyNmQ0NzYzMTFhMjYwM2M1MDY2YmNmNjEwYTNhNzhmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMDE3LDYgKzEwMTcsNzQgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICB5YXJyL1lhcnJTeW50YXhDaGVja2VyLmNw
cAogKQogCitzZXQoX3VuaWZpZWRTb3VyY2VDb3VudCAwKQorbGlzdChTT1JUIEphdmFTY3JpcHRD
b3JlX1NPVVJDRVMpCitsaXN0KExFTkdUSCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTIEphdmFTY3Jp
cHRDb3JlX1NPVVJDRV9DT1VOVCkKK21hdGgoRVhQUiBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VfQ09V
TlQgIiR7SmF2YVNjcmlwdENvcmVfU09VUkNFX0NPVU5UfSAtIDEiKQorbGlzdChHRVQgSmF2YVNj
cmlwdENvcmVfU09VUkNFUyAwIF9maXJzdFNvdXJjZUZpbGUpCitnZXRfZmlsZW5hbWVfY29tcG9u
ZW50KF91bmlmaWVkU291cmNlQ3VycmVudERpcmVjdG9yeSAke19maXJzdFNvdXJjZUZpbGV9IERJ
UkVDVE9SWSkKK2ZvcmVhY2ggKF9pbmRleCBSQU5HRSAke0phdmFTY3JpcHRDb3JlX1NPVVJDRV9D
T1VOVH0pCisgICAgbWF0aChFWFBSIF9uZXdVbmlmaWVkU291cmNlRmlsZSAiJHtfaW5kZXh9ICUg
OCIpCisgICAgbGlzdChHRVQgSmF2YVNjcmlwdENvcmVfU09VUkNFUyAke19pbmRleH0gX3NvdXJj
ZUZpbGUpCisgICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChfdW5pZmllZFNvdXJjZUZpbGVEaXJl
Y3RvcnkgJHtfc291cmNlRmlsZX0gRElSRUNUT1JZKQorCisgICAgaWYgKChOT1QgJHtfbmV3VW5p
ZmllZFNvdXJjZUZpbGV9KSBPUiAoTk9UICgke191bmlmaWVkU291cmNlRmlsZURpcmVjdG9yeX0g
U1RSRVFVQUwgJHtfdW5pZmllZFNvdXJjZUN1cnJlbnREaXJlY3Rvcnl9KSkpCisgICAgICAgIHNl
dChfdW5pZmllZFNvdXJjZUN1cnJlbnREaXJlY3RvcnkgJHtfdW5pZmllZFNvdXJjZUZpbGVEaXJl
Y3Rvcnl9KQorICAgICAgICBtYXRoKEVYUFIgX3VuaWZpZWRTb3VyY2VDb3VudCAiJHtfdW5pZmll
ZFNvdXJjZUNvdW50fSArIDEiKQorICAgICAgICBzZXQoX3VuaWZpZWRTb3VyY2VOYW1lICIke0RF
UklWRURfU09VUkNFU19ESVJ9L0phdmFTY3JpcHRDb3JlL1VuaWZpZWRTb3VyY2Uke191bmlmaWVk
U291cmNlQ291bnR9LmNwcCIpCisgICAgICAgIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1VO
SUZJRURfU09VUkNFUyAke191bmlmaWVkU291cmNlTmFtZX0pCisgICAgZW5kaWYgKCkKKworICAg
IGZpbGUoQVBQRU5EICR7X3VuaWZpZWRTb3VyY2VOYW1lfSAiIikKKyAgICBpZiAoJHtfc291cmNl
RmlsZX0gTUFUQ0hFUyAiLioobW18YykkIikKKyAgICAgIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRD
b3JlX1VOSUZJRURfU09VUkNFUyAke19zb3VyY2VGaWxlfSkKKyAgICBlbHNlICgpCisgICAgICAj
ICAgICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChfc291cmNlRmlsZSAke19zb3VyY2VGaWxlfSBO
QU1FKQorICAgICAgZmlsZShBUFBFTkQgJHtfdW5pZmllZFNvdXJjZU5hbWV9ICIjaW5jbHVkZSBc
IiR7X3NvdXJjZUZpbGV9XCJcbiIpCisgICAgZW5kaWYgKCkKK2VuZGZvcmVhY2ggKCkKKworc2V0
KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMgJHtKYXZhU2NyaXB0Q29yZV9VTklGSUVEX1NPVVJDRVN9
KQorbWVzc2FnZSgke0phdmFTY3JpcHRDb3JlX1NPVVJDRVN9KQorCisjIHNldChfdW5pZmllZFNv
dXJjZUNvdW50IDApCisjIGxpc3QoU09SVCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTKQorIyBsaXN0
KExFTkdUSCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTIEphdmFTY3JpcHRDb3JlX1NPVVJDRV9DT1VO
VCkKKyMgbWF0aChFWFBSIEphdmFTY3JpcHRDb3JlX1NPVVJDRV9DT1VOVCAiJHtKYXZhU2NyaXB0
Q29yZV9TT1VSQ0VfQ09VTlR9IC0gMSIpCisjIGxpc3QoR0VUIEphdmFTY3JpcHRDb3JlX1NPVVJD
RVMgMCBfZmlyc3RTb3VyY2VGaWxlKQorIyBtZXNzYWdlKCR7X2ZpcnN0U291cmNlRmlsZX0pCisj
IGdldF9maWxlbmFtZV9jb21wb25lbnQoX3VuaWZpZWRTb3VyY2VDdXJyZW50RGlyZWN0b3J5ICR7
X2ZpcnN0U291cmNlRmlsZX0gRElSRUNUT1JZKQorIyBmb3JlYWNoIChfaW5kZXggUkFOR0UgJHtK
YXZhU2NyaXB0Q29yZV9TT1VSQ0VfQ09VTlR9KQorIyAgICAgbWF0aChFWFBSIF9uZXdVbmlmaWVk
U291cmNlRmlsZSAiJHtfaW5kZXh9ICUgOCIpCisjICAgICBsaXN0KEdFVCBKYXZhU2NyaXB0Q29y
ZV9TT1VSQ0VTICR7X2luZGV4fSBfc291cmNlRmlsZSkKKyMgICAgIGdldF9maWxlbmFtZV9jb21w
b25lbnQoX3VuaWZpZWRTb3VyY2VGaWxlRGlyZWN0b3J5ICR7X3NvdXJjZUZpbGV9IERJUkVDVE9S
WSkKKyMgICAgIG1lc3NhZ2UoJHtfdW5pZmllZFNvdXJjZUN1cnJlbnREaXJlY3Rvcnl9KQorIyAg
ICAgbWVzc2FnZSgke191bmlmaWVkU291cmNlRmlsZURpcmVjdG9yeX0pCisjICAgICBpZigoJHtf
dW5pZmllZFNvdXJjZUZpbGVEaXJlY3Rvcnl9IFNUUkVRVUFMICR7X3VuaWZpZWRTb3VyY2VDdXJy
ZW50RGlyZWN0b3J5fSkpCisjICAgICAgIG1lc3NhZ2UodHJ1ZSkKKyMgICAgIGVsc2UgKCkKKyMg
ICAgICAgbWVzc2FnZShmYWxzZSkKKyMgICAgIGVuZGlmICgpCisKKyMgICAgIGlmICgoTk9UICR7
X25ld1VuaWZpZWRTb3VyY2VGaWxlfSkgT1IgKE5PVCAoJHtfdW5pZmllZFNvdXJjZUZpbGVEaXJl
Y3Rvcnl9IFNUUkVRVUFMICR7X3VuaWZpZWRTb3VyY2VDdXJyZW50RGlyZWN0b3J5fSkpKQorIyAg
ICAgICAgIHNldChfdW5pZmllZFNvdXJjZUN1cnJlbnREaXJlY3RvcnkgJHtfdW5pZmllZFNvdXJj
ZUZpbGVEaXJlY3Rvcnl9KQorIyAgICAgICAgIG1hdGgoRVhQUiBfdW5pZmllZFNvdXJjZUNvdW50
ICIke191bmlmaWVkU291cmNlQ291bnR9ICsgMSIpCisjICAgICAgICAgc2V0KF91bmlmaWVkU291
cmNlTmFtZSAiJHtERVJJVkVEX1NPVVJDRVNfRElSfS9KYXZhU2NyaXB0Q29yZS9VbmlmaWVkU291
cmNlJHtfdW5pZmllZFNvdXJjZUNvdW50fS5jcHAiKQorIyAgICAgICAgIGxpc3QoQVBQRU5EIEph
dmFTY3JpcHRDb3JlX1VOSUZJRURfU09VUkNFUyAke191bmlmaWVkU291cmNlTmFtZX0pCisjICAg
ICBlbmRpZiAoKQorCisjICAgICBsaXN0KEdFVCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTICR7X2lu
ZGV4fSBfc291cmNlRmlsZSkKKyMgICAgIGlmICgke19zb3VyY2VGaWxlfSBNQVRDSEVTICIuKiht
bXxjfGgpJCIpCisjICAgICAgIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1VOSUZJRURfU09V
UkNFUyAke19zb3VyY2VGaWxlfSkKKyMgICAgIGVsc2UgKCkKKyMgICAgICAgV0VCS0lUX0FERF9T
T1VSQ0VfREVQRU5ERU5DSUVTKCR7X3VuaWZpZWRTb3VyY2VOYW1lfSAke19zb3VyY2VGaWxlfSkK
KyMgICAgICAgZmlsZShBUFBFTkQgJHtfdW5pZmllZFNvdXJjZU5hbWV9ICIjaW5jbHVkZSBcIiR7
X3NvdXJjZUZpbGV9XCJcbiIpCisjICAgICBlbmRpZiAoKQorIyBlbmRmb3JlYWNoICgpCisKKyMg
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMgJHtKYXZhU2NyaXB0Q29yZV9VTklGSUVEX1NPVVJD
RVN9KQorIyBtZXNzYWdlKCR7SmF2YVNjcmlwdENvcmVfU09VUkNFU30pCisKICMgRXh0cmEgZmxh
Z3MgZm9yIGNvbXBpbGUgc291cmNlcyBjYW4gZ28gaGVyZS4KIGlmIChOT1QgTVNWQykKICAgICBz
ZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMocnVudGltZS9Qcm94eU9iamVjdC5jcHAgUFJPUEVS
VElFUyBDT01QSUxFX0ZMQUdTIC1mbm8tb3B0aW1pemUtc2libGluZy1jYWxscykKQEAgLTEzMzYs
NiArMTQwNCw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBNQUlOX0RFUEVOREVOQ1kgJHtD
TUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2NyZWF0ZV9yZWdleF90YWJsZXMKICAgICBDT01NQU5E
ICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9jcmVhdGVf
cmVnZXhfdGFibGVzID4gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9SZWdF
eHBKaXRUYWJsZXMuaAogICAgIFZFUkJBVElNKQorbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVf
SEVBREVSUyAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L1JlZ0V4cEppdFRh
Ymxlcy5oKQogV0VCS0lUX0FERF9TT1VSQ0VfREVQRU5ERU5DSUVTKCR7Q01BS0VfQ1VSUkVOVF9T
T1VSQ0VfRElSfS95YXJyL1lhcnJQYXR0ZXJuLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L1JlZ0V4cEppdFRhYmxlcy5oKQogCiBhZGRfY3VzdG9tX2NvbW1hbmQoCkBA
IC0xMzU2LDYgKzE0MjUsNyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgREVQRU5EUyAke0NN
QUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vcGFyc2VyL0tleXdvcmRzLnRhYmxlCiAgICAgQ09NTUFO
RCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vS2V5d29y
ZExvb2t1cEdlbmVyYXRvci5weSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vcGFyc2VyL0tl
eXdvcmRzLnRhYmxlID4gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9LZXl3
b3JkTG9va3VwLmgKICAgICBWRVJCQVRJTSkKK2xpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hF
QURFUlMgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9LZXl3b3JkTG9va3Vw
LmgpCiBXRUJLSVRfQUREX1NPVVJDRV9ERVBFTkRFTkNJRVMoJHtDTUFLRV9DVVJSRU5UX1NPVVJD
RV9ESVJ9L3BhcnNlci9MZXhlci5jcHAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVf
RElSfS9LZXl3b3JkTG9va3VwLmgpCiAKIApAQCAtMTUwMyw3ICsxNTczLDcgQEAgYWRkX2N1c3Rv
bV9jb21tYW5kKAogICAgIFdPUktJTkdfRElSRUNUT1JZICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUFRDT1JFX0RJUn0KICkKIAotbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfU09VUkNFUwor
bGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwogICAgICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vQWlyT3Bjb2RlLmgKICAgICAke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9L0Fpck9wY29kZUdlbmVyYXRlZC5oCiApCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcAppbmRleCBiZWI4NzkyODU4OGZkNWI2ZDcz
MTBmN2YzNDg1YmMxNzViYTNkYmZmLi43YzUzNzJhYzVlMjcxMTQxOTkzZjc4YmUxNjgzZTA5MzE4
NTNjODk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNp
YWwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAK
QEAgLTM2LDExICszNiwxMyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAot
dXNpbmcgbmFtZXNwYWNlIEFpcjsKK3VzaW5nIEluc3QgPSBBaXI6Okluc3Q7Cit1c2luZyBBcmcg
PSBBaXI6OkFyZzsKK3VzaW5nIEdlbmVyYXRpb25Db250ZXh0ID0gQWlyOjpHZW5lcmF0aW9uQ29u
dGV4dDsKIAogbmFtZXNwYWNlIHsKIAotdW5zaWduZWQgbnVtQjNBcmdzKEIzOjpLaW5kIGtpbmQp
Cit1bnNpZ25lZCBudW1CM0FyZ3MoS2luZCBraW5kKQogewogICAgIHN3aXRjaCAoa2luZC5vcGNv
ZGUoKSkgewogICAgIGNhc2UgQ2hlY2tBZGQ6CkBAIC0xMDgsNiArMTEwLDcgQEAgSW5zdCBDaGVj
a1NwZWNpYWw6OmhpZGRlbkJyYW5jaChjb25zdCBJbnN0JiBpbnN0KSBjb25zdAogCiB2b2lkIENo
ZWNrU3BlY2lhbDo6Zm9yRWFjaEFyZyhJbnN0JiBpbnN0LCBjb25zdCBTY29wZWRMYW1iZGE8SW5z
dDo6RWFjaEFyZ0NhbGxiYWNrPiYgY2FsbGJhY2spCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIEFp
cjsKICAgICBzdGQ6Om9wdGlvbmFsPFdpZHRoPiBvcHRpb25hbERlZkFyZ1dpZHRoOwogICAgIElu
c3QgaGlkZGVuID0gaGlkZGVuQnJhbmNoKGluc3QpOwogICAgIGhpZGRlbi5mb3JFYWNoQXJnKApA
QCAtMTU2LDYgKzE1OSw3IEBAIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IENoZWNrU3BlY2lhbDo6
c2hvdWxkVHJ5QWxpYXNpbmdEZWYoSW5zdCYgaW5zdCkKIAogQ0NhbGxIZWxwZXJzOjpKdW1wIENo
ZWNrU3BlY2lhbDo6Z2VuZXJhdGUoSW5zdCYgaW5zdCwgQ0NhbGxIZWxwZXJzJiBqaXQsIEdlbmVy
YXRpb25Db250ZXh0JiBjb250ZXh0KQogeworICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wIGZhaWwgPSBoaWRkZW5CcmFuY2goaW5zdCkuZ2VuZXJhdGUoaml0
LCBjb250ZXh0KTsKICAgICBBU1NFUlQoZmFpbC5pc1NldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRHVwbGljYXRlVGFpbHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzRHVwbGljYXRlVGFpbHMuY3BwCmluZGV4IGZkNjU3OTBlOTljMmZlYWQ0
ZjVmYmI5ZWFmNjBjMWE3NWM5MzIyNTUuLmNmZjQ0YTRjMWUwMDkxZWJhNGE3ODNiMzhmMzVhM2Jk
Y2VkMWJjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0R1cGxpY2F0
ZVRhaWxzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNEdXBsaWNhdGVUYWls
cy5jcHAKQEAgLTQ0LDcgKzQ0LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAK
IG5hbWVzcGFjZSB7CiAKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEIz
RHVwbGljYXRlVGFpbHNJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFs
c2U7Cit9CiAKIGNsYXNzIER1cGxpY2F0ZVRhaWxzIHsKIHB1YmxpYzoKQEAgLTk0LDcgKzk2LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGRlbW90ZVZhbHVl
cyhtX3Byb2MsIHZhbHVlc1RvRGVtb3RlKTsKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAg
ICAgaWYgKEIzRHVwbGljYXRlVGFpbHNJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAg
ZGF0YUxvZygiUHJvY2VkdXJlIGFmdGVyIHZhbHVlIGRlbW90aW9uOlxuIik7CiAgICAgICAgICAg
ICBkYXRhTG9nKG1fcHJvYyk7CiAgICAgICAgIH0KQEAgLTExNiw3ICsxMTgsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAvLyBwb2ludC4KICAgICAgICAgICAgIGNhbmRpZGF0ZXMucmVtb3ZlKGJs
b2NrKTsKIAotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNEdXBs
aWNhdGVUYWlsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkR1
cGxpY2F0aW5nICIsICp0YWlsLCAiIGludG8gIiwgKmJsb2NrLCAiXG4iKTsKIAogICAgICAgICAg
ICAgYmxvY2stPnJlbW92ZUxhc3QobV9wcm9jKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAppbmRl
eCAxYWU0MzU1NjE1MTdlOTFjMDllNjY4YzY5ZWFmYzE1NGE3NDhiZGU2Li45YTJlOThhYTQzODU2
MjgwMDlmMTJhNDQ1MjRhNGQxYWZmNTVmOWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCkBA
IC01Myw3ICs1Myw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBuYW1lc3Bh
Y2UgewogCi1jb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBCM0VsaW1pbmF0
ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9z
ZSA9IGZhbHNlOworfQogCiAvLyBGSVhNRTogV2UgY291bGQgdHJlYXQgUGF0Y2hwb2ludHMgd2l0
aCBhIG5vbi1lbXB0eSBzZXQgb2YgcmVhZHMgYXMgYSAibWVtb3J5IHZhbHVlIiBhbmQgc29tZWhv
dwogLy8gZWxpbWluYXRlIHJlZHVuZGFudCBvbmVzLiBXZSB3b3VsZCBuZWVkIHNvbWUgd2F5IG9m
IGRldGVybWluaW5nIGlmIHR3byBwYXRjaHBvaW50cyBhcmUgcmVwbGFjYWJsZS4KQEAgLTE2MCw3
ICsxNjIsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHJ1bigpCiAgICAgewotICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkIzIGJlZm9yZSBDU0U6XG4iLCBt
X3Byb2MpOwogICAgICAgICAKICAgICAgICAgbV9wcm9jLnJlc2V0VmFsdWVPd25lcnMoKTsKQEAg
LTE4OCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGRhdGEubWVtb3J5
VmFsdWVzQXRUYWlsLmFkZChtZW1vcnkpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Np
b25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiQmxvY2sgIiwg
KmJsb2NrLCAiOiAiLCBkYXRhLCAiXG4iKTsKICAgICAgICAgfQogCkBAIC0xOTYsNyArMTk4LDcg
QEAgcHVibGljOgogICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IHBvc3RPcmRlciA9IG1fcHJv
Yy5ibG9ja3NJblBvc3RPcmRlcigpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBwb3N0T3Jk
ZXIuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBtX2Jsb2NrID0gcG9zdE9yZGVyW2ldOwot
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21t
b25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFM
b2coIkxvb2tpbmcgYXQgIiwgKm1fYmxvY2ssICI6XG4iKTsKIAogICAgICAgICAgICAgbV9kYXRh
ID0gSW1wdXJlQmxvY2tEYXRhKCk7CkBAIC0yMjIsNyArMjI0LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lv
bnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkIzIGFmdGVyIENTRTpc
biIsIG1fcHJvYyk7CiAKICAgICAgICAgcmV0dXJuIG1fY2hhbmdlZDsKQEAgLTQ4Nyw3ICs0ODks
NyBAQCBwcml2YXRlOgogICAgICAgICAvLyBleHBlbnNpdmUsIGJ1dCBpbiB0aGUgb3ZlcndoZWxt
aW5nIG1ham9yaXR5IG9mIGNhc2VzIGl0IHdpbGwgYWxtb3N0IGltbWVkaWF0ZWx5IGhpdCBhbiAK
ICAgICAgICAgLy8gb3BlcmF0aW9uIHRoYXQgaW50ZXJmZXJlcy4KIAotICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coKm1fdmFsdWUsICI6IGxvb2tpbmcgZm9y
d2FyZCBmb3Igc3RvcmVzIHRvICIsICpwdHIsICIuLi5cbiIpOwogCiAgICAgICAgIC8vIEZpcnN0
IHNlYXJjaCBmb3J3YXJkIGluIHRoaXMgYmFzaWMgYmxvY2suCkBAIC01NTcsNyArNTU5LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgaWYgKG1hdGNoZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQjNFbGltaW5h
dGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0
YUxvZygiRWxpbWluYXRpbmcgIiwgKm1fdmFsdWUsICIgZHVlIHRvICIsIHBvaW50ZXJMaXN0RHVt
cChtYXRjaGVzKSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwpA
QCAtNTY2LDcgKzU2OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBNZW1vcnlWYWx1ZSogZG9t
aW5hdGluZ01hdGNoID0gbWF0Y2hlc1swXTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1f
ZG9taW5hdG9ycy5kb21pbmF0ZXMoZG9taW5hdGluZ01hdGNoLT5vd25lciwgbV9ibG9jaykpOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChC
M0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiICAgIEVsaW1pbmF0aW5nIHVzaW5nICIsICpkb21pbmF0aW5nTWF0
Y2gsICJcbiIpOwogICAgICAgICAgICAgVmVjdG9yPFZhbHVlKj4gZXh0cmFWYWx1ZXM7CiAgICAg
ICAgICAgICBpZiAoVmFsdWUqIHZhbHVlID0gcmVwbGFjZShkb21pbmF0aW5nTWF0Y2gsIGV4dHJh
VmFsdWVzKSkgewpAQCAtNTkwLDcgKzU5Miw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgVmFyaWFi
bGVWYWx1ZSogZ2V0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhcmlhYmxlVmFsdWU+KAogICAg
ICAgICAgICAgbV9pbmRleCwgR2V0LCBtX3ZhbHVlLT5vcmlnaW4oKSwgdmFyaWFibGUpOwotICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVz
c2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBJbnNlcnRp
bmcgZ2V0IG9mIHZhbHVlOiAiLCAqZ2V0LCAiXG4iKTsKICAgICAgICAgbV92YWx1ZS0+cmVwbGFj
ZVdpdGhJZGVudGl0eShnZXQpOwogICAgICAgICAgICAgCkBAIC02MTUsMjMgKzYxNywyMyBAQCBw
cml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlcj4KICAgICBNZW1vcnlNYXRjaGVz
IGZpbmRNZW1vcnlWYWx1ZShWYWx1ZSogcHRyLCBIZWFwUmFuZ2UgcmFuZ2UsIGNvbnN0IEZpbHRl
ciYgZmlsdGVyKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCM0Vs
aW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICBkYXRhTG9nKCptX3ZhbHVlLCAiOiBsb29raW5nIGJhY2t3YXJkIGZvciAiLCAqcHRyLCAiLi4u
XG4iKTsKICAgICAgICAgCiAgICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+
aGFzRmVuY2UoKSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAo
QjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgICAgIGRhdGFMb2coIiAgICBHaXZpbmcgdXAgYmVjYXVzZSBmZW5jZXMuXG4iKTsKICAg
ICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChN
ZW1vcnlWYWx1ZSogbWF0Y2ggPSBtX2RhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmZpbmQocHRyLCBm
aWx0ZXIpKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0Vs
aW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiICAgIEZvdW5kICIsICptYXRjaCwgIiBsb2NhbGx5LlxuIik7CiAgICAg
ICAgICAgICByZXR1cm4geyBtYXRjaCB9OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fZGF0
YS53cml0ZXMub3ZlcmxhcHMocmFuZ2UpKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEdpdmluZyB1cCBiZWNhdXNlIG9m
IHdyaXRlcy5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQpAQCAtNjQy
LDI3ICs2NDQsMjcgQEAgcHJpdmF0ZToKICAgICAgICAgTWVtb3J5TWF0Y2hlcyBtYXRjaGVzOwog
CiAgICAgICAgIHdoaWxlIChCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnBvcCgpKSB7Ci0g
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1v
blN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiICAgIExvb2tpbmcgYXQgIiwgKmJsb2NrLCAiXG4iKTsKIAogICAgICAgICAgICAgSW1wdXJl
QmxvY2tEYXRhJiBkYXRhID0gbV9pbXB1cmVCbG9ja0RhdGFbYmxvY2tdOwogCiAgICAgICAgICAg
ICBNZW1vcnlWYWx1ZSogbWF0Y2ggPSBkYXRhLm1lbW9yeVZhbHVlc0F0VGFpbC5maW5kKHB0ciwg
ZmlsdGVyKTsKICAgICAgICAgICAgIGlmIChtYXRjaCAmJiBtYXRjaCAhPSBtX3ZhbHVlKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEIzRWxpbWlu
YXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiICAgIEZvdW5kIG1hdGNoOiAiLCAqbWF0Y2gsICJcbiIpOwogICAgICAg
ICAgICAgICAgIG1hdGNoZXMuYXBwZW5kKG1hdGNoKTsKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGRhdGEud3JpdGVzLm92ZXJsYXBz
KHJhbmdlKSkgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAg
IGlmIChCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBHaXZpbmcgdXAgYmVjYXVzZSBvZiB3cml0
ZXMuXG4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBpZiAoIWJsb2NrLT5udW1QcmVkZWNlc3NvcnMoKSkgewotICAgICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1vblN1
YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIiAgICBHaXZpbmcgdXAgYmVjYXVzZSBpdCdzIGxpdmUgYXQgcm9vdC5cbiIpOwogICAgICAg
ICAgICAgICAgIC8vIFRoaXMgZXNzZW50aWFsbHkgcHJvdmVzIHRoYXQgdGhpcyBpcyBsaXZlIGF0
IHRoZSBwcm9sb2d1ZS4gVGhhdCBtZWFucyB0aGF0IHdlCiAgICAgICAgICAgICAgICAgLy8gY2Fu
bm90IHJlbGlhYmx5IG9wdGltaXplIHRoaXMgY2FzZS4KQEAgLTY3Miw3ICs2NzQsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgd29ya2xpc3QucHVzaEFsbChibG9jay0+cHJlZGVjZXNzb3JzKCkp
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCM0VsaW1p
bmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgR290IG1hdGNoZXM6ICIsIHBvaW50ZXJMaXN0RHVtcChtYXRjaGVzKSwgIlxu
Iik7CiAgICAgICAgIHJldHVybiBtYXRjaGVzOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0ZpeFNTQS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNGaXhTU0EuY3BwCmluZGV4IGQyMDM4MWQyMDIyZmEwNGYyNjNhODdlZmIxYjNjZDkyMDJlNjc1
OGEuLmIyOGYyMWYxMTA3YzgyNmZhZjYyYjNmODM3MDYyNTgzNjg3ZTM3ZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZpeFNTQS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzRml4U1NBLmNwcApAQCAtNDgsNyArNDgsOSBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEIzIHsKIAogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7CituYW1lc3BhY2UgQjNGaXhTU0FJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2
ZXJib3NlID0gZmFsc2U7Cit9CiAKIHZvaWQga2lsbERlYWRWYXJpYWJsZXMoUHJvY2VkdXJlJiBw
cm9jKQogewpAQCAtMTU3LDcgKzE1OSw3IEBAIHZvaWQgZml4U1NBR2xvYmFsbHkoUHJvY2VkdXJl
JiBwcm9jKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBWYWx1ZSogcGhpID0gcHJvYy5hZGQ8VmFsdWU+KFBoaSwg
dmFyaWFibGUtPnR5cGUoKSwgYmxvY2stPmF0KDApLT5vcmlnaW4oKSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICBpZiAoQjNGaXhTU0FJbnRlcm5hbDo6
dmVyYm9zZSkgewogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAg
ICAgICAgICAgIkFkZGluZyBQaGkgZm9yICIsIHBvaW50ZXJEdW1wKHZhcmlhYmxlKSwgIiBhdCAi
LCAqYmxvY2ssICI6ICIsCiAgICAgICAgICAgICAgICAgICAgICAgICBkZWVwRHVtcChwcm9jLCBw
aGkpLCAiXG4iKTsKQEAgLTIzMSw3ICsyMzMsNyBAQCB2b2lkIGZpeFNTQUdsb2JhbGx5KFByb2Nl
ZHVyZSYgcHJvYykKICAgICAgICAgICAgICAgICBWYXJpYWJsZSogdmFyaWFibGUgPSBjYWxjVmFy
VG9WYXJpYWJsZVtjYWxjVmFyLT5pbmRleCgpXTsKIAogICAgICAgICAgICAgICAgIFZhbHVlKiBt
YXBwZWRWYWx1ZSA9IGVuc3VyZU1hcHBpbmcodmFyaWFibGUsIHVwc2lsb25JbnNlcnRpb25Qb2lu
dCwgdXBzaWxvbk9yaWdpbik7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoQjNGaXhTU0FJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgIk1hcHBlZCB2YWx1ZSBm
b3IgIiwgKnZhcmlhYmxlLCAiIHdpdGggc3VjY2Vzc29yIFBoaSAiLCAqcGhpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIiBhdCBlbmQgb2YgIiwgKmJsb2NrLCAiOiAiLCBwb2ludGVyRHVtcCht
YXBwZWRWYWx1ZSksICJcbiIpOwpAQCAtMjQ1LDcgKzI0Nyw3IEBAIHZvaWQgZml4U1NBR2xvYmFs
bHkoUHJvY2VkdXJlJiBwcm9jKQogICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7
CiAgICAgfQogCi0gICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoQjNGaXhTU0FJbnRlcm5hbDo6
dmVyYm9zZSkgewogICAgICAgICBkYXRhTG9nKCJCMyBhZnRlciBTU0EgY29udmVyc2lvbjpcbiIp
OwogICAgICAgICBkYXRhTG9nKHByb2MpOwogICAgIH0KQEAgLTI2Niw3ICsyNjgsNyBAQCB2b2lk
IGRlbW90ZVZhbHVlcyhQcm9jZWR1cmUmIHByb2MsIGNvbnN0IEluZGV4U2V0PFZhbHVlKj4mIHZh
bHVlcykKICAgICAgICAgICAgIHBoaU1hcC5hZGQodmFsdWUsIHByb2MuYWRkVmFyaWFibGUodmFs
dWUtPnR5cGUoKSkpOwogICAgIH0KIAotICAgIGlmICh2ZXJib3NlKSB7CisgICAgaWYgKEIzRml4
U1NBSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZGF0YUxvZygiRGVtb3RpbmcgdmFsdWVz
IGFzIGZvbGxvd3M6XG4iKTsKICAgICAgICAgZGF0YUxvZygiICAgbWFwID0gIik7CiAgICAgICAg
IENvbW1hUHJpbnRlciBjb21tYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0ZvbGRQYXRoQ29uc3RhbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Zv
bGRQYXRoQ29uc3RhbnRzLmNwcAppbmRleCBiOWJkYzhkNGYyODhiODJjNjMzMWVmMzEwZDMzM2Uz
YTU2NDdlMDRkLi4yMjI1MGNiYzdmMzVjNGNmY2Y5OTE2YTVhYjJlZTcyNmFmYzRhZDVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGb2xkUGF0aENvbnN0YW50cy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRm9sZFBhdGhDb25zdGFudHMuY3BwCkBA
IC00MSw3ICs0MSw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBuYW1lc3Bh
Y2UgewogCi1jb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBCM0ZvbGRQYXRo
Q29uc3RhbnRzSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwor
fQogCiBjbGFzcyBGb2xkUGF0aENvbnN0YW50cyB7CiBwdWJsaWM6CkBAIC01NSw3ICs1Nyw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwogCi0gICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQjNGb2xkUGF0aENvbnN0YW50c0ludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQjMgYmVmb3JlIGZvbGRpbmcgcGF0aCBjb25z
dGFudHM6IFxuIiwgbV9wcm9jLCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZpbmQgYWxs
IG9mIHRoZSB2YWx1ZXMgdGhhdCBhcmUgdGhlIHN1YmplY3Qgb2YgYSBicmFuY2ggb3Igc3dpdGNo
LiBGb3IgYW55IHN1Y2Nlc3NvcgpAQCAtODAsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVF9VTlVTRUQob3RoZXJPdmVycmlkZSwgb3RoZXJPdmVycmlkZS5ibG9j
ayAhPSBvdmVycmlkZS5ibG9jayk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzRm9sZFBhdGhDb25zdGFudHNJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJPdmVycmlkaW5nICIsICp2YWx1ZSwgIiBm
cm9tICIsICpmcm9tLCAiOiAiLCBvdmVycmlkZSwgIlxuIik7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGZvclZhbHVlLmFwcGVuZChvdmVycmlkZSk7CkBAIC0xNDksNyArMTUxLDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBvdmVycmlkZTsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNGb2xkUGF0
aENvbnN0YW50c0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIklu
IGJsb2NrICIsICpibG9jaywgIiBnZXR0aW5nIG92ZXJyaWRlIGZvciAiLCAqdmFsdWUsICI6ICIs
IHJlc3VsdCwgIlxuIik7CiAKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbmZlclN3aXRjaGVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0luZmVyU3dpdGNoZXMuY3BwCmluZGV4IGYyOWY0ZjA5NTRiMmFl
NzIwMDVhMTMwMmVmZmNjZDRlMzRkZmI4NzguLmVlNjEyZmVmMjhjNmE3N2FhYzE1Yzk4YTk3YWM5
MzkyYjEzYzVhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luZmVy
U3dpdGNoZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luZmVyU3dpdGNo
ZXMuY3BwCkBAIC00Miw3ICs0Miw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewog
CiBuYW1lc3BhY2UgewogCi1jb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBC
M0luZmVyU3dpdGNoZXNJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFs
c2U7Cit9CiAKIGNsYXNzIEluZmVyU3dpdGNoZXMgewogcHVibGljOgpAQCAtNTUsNyArNTcsNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBydW4oKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgIGRhdGFMb2coIkIzIGJlZm9yZSBpbmZlclN3aXRjaGVzOlxuIiwgbV9wcm9jKTsKICAg
ICAgICAgCiAgICAgICAgIGJvb2wgY2hhbmdlZCA9IHRydWU7CkBAIC02Myw3ICs2NSw3IEBAIHB1
YmxpYzoKICAgICAgICAgd2hpbGUgKGNoYW5nZWQpIHsKICAgICAgICAgICAgIGNoYW5nZWQgPSBm
YWxzZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAg
ICBpZiAoQjNJbmZlclN3aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiUGVyZm9ybWluZyBmaXhwb2ludCBpdGVyYXRpb246XG4iKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fcHJvYykKQEAgLTc4LDcg
KzgwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX3Byb2MuZGVsZXRl
T3JwaGFucygpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJCMyBhZnRlciBpbmZlclN3aXRjaGVzOlxuIiwgbV9wcm9jKTsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC05NiwxMCArOTgsMTAgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIFN3aXRjaERl
c2NyaXB0aW9uIGRlc2NyaXB0aW9uID0gZGVzY3JpYmUoYmxvY2spOwotICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICAgICAgZGF0YUxvZygiRGVzY3JpcHRpb24gb2YgcHJpbWFyeSBibG9jayAiLCAqYmxvY2ss
ICI6ICIsIGRlc2NyaXB0aW9uLCAiXG4iKTsKICAgICAgICAgaWYgKCFkZXNjcmlwdGlvbikgewot
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNJbmZlclN3aXRjaGVz
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEJhaWxpbmcg
YmVjYXVzZSBub3Qgc3dpdGNoLWxpa2UuXG4iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQpAQCAtMTE1LDE3ICsxMTcsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBkZXNjcmlwdGlvbi5icmFuY2gp
CiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGluZyBiZWNhdXNlIG9mICIsIGRlZXBEdW1wKG1fcHJv
YywgdmFsdWUpLCAiXG4iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgPSBibG9jay0+cHJlZGVj
ZXNzb3IoMCk7CiAgICAgICAgIFN3aXRjaERlc2NyaXB0aW9uIHByZWRlY2Vzc29yRGVzY3JpcHRp
b24gPSBkZXNjcmliZShwcmVkZWNlc3Nvcik7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICBpZiAoQjNJbmZlclN3aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgRGVzY3JpcHRpb24gb2YgcHJlZGVjZXNzb3IgYmxvY2sgIiwgKnByZWRlY2Vzc29y
LCAiOiAiLCBwcmVkZWNlc3NvckRlc2NyaXB0aW9uLCAiXG4iKTsKICAgICAgICAgaWYgKCFwcmVk
ZWNlc3NvckRlc2NyaXB0aW9uKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCIgICAgQmFpbGluZyBiZWNhdXNlIG5vdCBzd2l0Y2gtbGlrZS5cbiIpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0xMzMsNyArMTM1LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgLy8gQm90aCB1cyBhbmQgdGhlIHByZWRlY2Vzc29yIGFyZSBzd2l0Y2gt
bGlrZSwgYnV0IHRoYXQgZG9lc24ndCBtZWFuIHRoYXQgd2UncmUgY29tcGF0aWJsZS4KICAgICAg
ICAgLy8gV2UgbWF5IGJlIHN3aXRjaGluZyBvbiBkaWZmZXJlbnQgdmFsdWVzIQogICAgICAgICBp
ZiAoZGVzY3JpcHRpb24uc291cmNlICE9IHByZWRlY2Vzc29yRGVzY3JpcHRpb24uc291cmNlKSB7
Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0luZmVyU3dpdGNo
ZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGlu
ZyBiZWNhdXNlIHNvdXJjZXMgZG9uJ3QgbWF0Y2guXG4iKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQpAQCAtMTQzLDcgKzE0NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8v
IGp1c3QgdG90YWxseSByZWR1bmRhbnQgYW5kIHdlIHNob3VsZCBiZSBnZXR0aW5nIHJpZCBvZiBp
dC4gQnV0IHdlIGRvbid0IGhhbmRsZSB0aGF0IGhlcmUsCiAgICAgICAgIC8vIHlldC4KICAgICAg
ICAgaWYgKHByZWRlY2Vzc29yRGVzY3JpcHRpb24uZmFsbFRocm91Z2guYmxvY2soKSAhPSBibG9j
aykgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNJbmZlclN3
aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEJh
aWxpbmcgYmVjYXVzZSBmYWxsLXRocm91Z2ggb2YgcHJlZGVjZXNzb3IgaXMgbm90IHRoZSBwcmlt
YXJ5IGJsb2NrLlxuIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAg
LTE1MSwxNCArMTUzLDE0IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRo
ZXJlIGFpbid0IG5vIGxvb3BzLgogICAgICAgICBpZiAoZGVzY3JpcHRpb24uZmFsbFRocm91Z2gu
YmxvY2soKSA9PSBibG9jawogICAgICAgICAgICAgfHwgZGVzY3JpcHRpb24uZmFsbFRocm91Z2gu
YmxvY2soKSA9PSBwcmVkZWNlc3NvcikgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgICAgICBpZiAoQjNJbmZlclN3aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiICAgIEJhaWxpbmcgYmVjYXVzZSBvZiBmYWxsLXRocm91Z2ggbG9vcC5c
biIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGZvciAo
U3dpdGNoQ2FzZSBzd2l0Y2hDYXNlIDogZGVzY3JpcHRpb24uY2FzZXMpIHsKICAgICAgICAgICAg
IGlmIChzd2l0Y2hDYXNlLnRhcmdldEJsb2NrKCkgPT0gYmxvY2sKICAgICAgICAgICAgICAgICB8
fCBzd2l0Y2hDYXNlLnRhcmdldEJsb2NrKCkgPT0gcHJlZGVjZXNzb3IpIHsKLSAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQjNJbmZlclN3aXRjaGVzSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBCYWlsaW5n
IGJlY2F1c2Ugb2YgbG9vcCBpbiBwcmltYXJ5IGNhc2VzLlxuIik7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQpAQCAtMTY2LDEzICsxNjgsMTMgQEAgcHJpdmF0
ZToKICAgICAgICAgZm9yIChTd2l0Y2hDYXNlIHN3aXRjaENhc2UgOiBwcmVkZWNlc3NvckRlc2Ny
aXB0aW9uLmNhc2VzKSB7CiAgICAgICAgICAgICBpZiAoc3dpdGNoQ2FzZS50YXJnZXRCbG9jaygp
ID09IGJsb2NrCiAgICAgICAgICAgICAgICAgfHwgc3dpdGNoQ2FzZS50YXJnZXRCbG9jaygpID09
IHByZWRlY2Vzc29yKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAg
ICAgICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGluZyBiZWNhdXNlIG9mIGxvb3AgaW4gcHJlZGVjZXNz
b3IgY2FzZXMuXG4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBp
ZiAoQjNJbmZlclN3aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgRG9pbmcgaXQhXG4iKTsKICAgICAgICAgLy8gV2UncmUgY29tbWl0dGVkIHRvIGRvaW5n
IHRoZSB0aGluZy4KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAKaW5kZXggOTYzYzEw
ZWRjNWU0OTM5ZjVmYmUyZWQ0MjU2NGRkM2Q3ZTA3NjNkZC4uZGE0MDc3ZGExZjgyMWEzYTY0ZTFj
MzU2NWIxOGQ2MGQ5YjFiMzYzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkFpckFyZy5oIgogI2lu
Y2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0Jsb2NrSW5zZXJ0aW9u
U2V0LmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgiCkBAIC0zOSwxMSArNDAsMTYgQEAKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKKyAgICB1c2luZyBBcmcgPSBBaXI6OkFy
ZzsKKyAgICB1c2luZyBJbnN0ID0gQWlyOjpJbnN0OworICAgIHVzaW5nIENvZGUgPSBBaXI6OkNv
ZGU7CisgICAgdXNpbmcgVG1wID0gQWlyOjpUbXA7CisKIG5hbWVzcGFjZSB7CiAKLWNsYXNzIExv
d2VyTWFjcm9zIHsKK2NsYXNzIExvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zIHsKIHB1Ymxp
YzoKLSAgICBMb3dlck1hY3JvcyhQcm9jZWR1cmUmIHByb2MpCisgICAgTG93ZXJNYWNyb3NBZnRl
ck9wdGltaXphdGlvbnMoUHJvY2VkdXJlJiBwcm9jKQogICAgICAgICA6IG1fcHJvYyhwcm9jKQog
ICAgICAgICAsIG1fYmxvY2tJbnNlcnRpb25TZXQocHJvYykKICAgICAgICAgLCBtX2luc2VydGlv
blNldChwcm9jKQpAQCAtMTgzLDcgKzE4OSw3IEBAIHByaXZhdGU6CiAKIGJvb2wgbG93ZXJNYWNy
b3NJbXBsKFByb2NlZHVyZSYgcHJvYykKIHsKLSAgICBMb3dlck1hY3JvcyBsb3dlck1hY3Jvcyhw
cm9jKTsKKyAgICBMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucyBsb3dlck1hY3Jvcyhwcm9j
KTsKICAgICByZXR1cm4gbG93ZXJNYWNyb3MucnVuKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggMTQ4OWMzMTFjNjNlZTAwMmZhOTFhNzYxYjFk
NjA2MGNhZjRlMjkzMS4uMTUwZWExNGZlNmM5YTgzNDViMzgyMDQ5Y2YxMTlhYmU5Y2NhNjA3NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTY5LDIxICs2
OSwyMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAotdXNpbmcgbmFtZXNw
YWNlIEFpcjsKLQogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Citu
YW1lc3BhY2UgQjNMb3dlclRvQWlySW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9z
ZSA9IGZhbHNlOworfQogCiAvLyBGSVhNRTogV2Ugd291bGRuJ3QgbmVlZCB0aGlzIGlmIEFpciBz
dXBwb3J0ZWQgV2lkdGggbW9kaWZpZXJzIGluIEFpcjo6S2luZC4KIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkyNDcKICNkZWZpbmUgT1BDT0RFX0ZPUl9XSURU
SChvcGNvZGUsIHdpZHRoKSAoIFwKLSAgICAod2lkdGgpID09IFdpZHRoOCA/IG9wY29kZSAjIyA4
IDogXAotICAgICh3aWR0aCkgPT0gV2lkdGgxNiA/IG9wY29kZSAjIyAxNiA6IFwKLSAgICAod2lk
dGgpID09IFdpZHRoMzIgPyBvcGNvZGUgIyMgMzIgOiBcCi0gICAgb3Bjb2RlICMjIDY0KQorICAg
ICh3aWR0aCkgPT0gV2lkdGg4ID8gQWlyOjpvcGNvZGUgIyMgOCA6IFwKKyAgICAod2lkdGgpID09
IFdpZHRoMTYgPyBBaXI6Om9wY29kZSAjIyAxNiA6ICAgIFwKKyAgICAod2lkdGgpID09IFdpZHRo
MzIgPyBBaXI6Om9wY29kZSAjIyAzMiA6ICAgIFwKKyAgICBBaXI6Om9wY29kZSAjIyA2NCkKICNk
ZWZpbmUgT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgob3Bjb2RlLCB3aWR0aCkgKCBcCi0gICAg
KHdpZHRoKSA9PSBXaWR0aDY0ID8gb3Bjb2RlICMjIDY0IDogb3Bjb2RlICMjIDMyKQorICAgICh3
aWR0aCkgPT0gV2lkdGg2NCA/IEFpcjo6b3Bjb2RlICMjIDY0IDogQWlyOjpvcGNvZGUgIyMgMzIp
CiAKIGNsYXNzIExvd2VyVG9BaXIgewogcHVibGljOgpAQCAtMTA3LDYgKzEwNyw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgcnVuKCkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7
CiAgICAgICAgIGZvciAoQjM6OkJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jZWR1cmUpCiAgICAg
ICAgICAgICBtX2Jsb2NrVG9CbG9ja1tibG9ja10gPSBtX2NvZGUuYWRkQmxvY2soYmxvY2stPmZy
ZXF1ZW5jeSgpKTsKICAgICAgICAgCkBAIC0xMTQsNyArMTE1LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgc3dpdGNoICh2YWx1ZS0+b3Bjb2RlKCkpIHsKICAgICAgICAgICAgIGNhc2UgUGhpOiB7
CiAgICAgICAgICAgICAgICAgbV9waGlUb1RtcFt2YWx1ZV0gPSBtX2NvZGUubmV3VG1wKHZhbHVl
LT5yZXN1bHRCYW5rKCkpOwotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAg
ICAgICAgIGlmIChCM0xvd2VyVG9BaXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiUGhpIHRtcCBmb3IgIiwgKnZhbHVlLCAiOiAiLCBtX3BoaVRvVG1wW3Zh
bHVlXSwgIlxuIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0x
NDYsNyArMTQ3LDcgQEAgcHVibGljOgogCiAgICAgICAgICAgICBtX2lzUmFyZSA9ICFtX2Zhc3RX
b3JrbGlzdC5zYXcoYmxvY2spOwogCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgIGlmIChCM0xvd2VyVG9BaXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBk
YXRhTG9nKCJMb3dlcmluZyBCbG9jayAiLCAqYmxvY2ssICI6XG4iKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHN1Y2Nlc3NvcnMgYXJlIHNldCB1cCBj
b3JyZWN0bHkuCkBAIC0xNjMsMTAgKzE2NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
aWYgKG1fbG9ja2VkLmNvbnRhaW5zKG1fdmFsdWUpKQogICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgICAgICBtX2luc3RzLmFwcGVuZChWZWN0b3I8SW5zdD4oKSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEIzTG93ZXJU
b0FpckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJMb3dl
cmluZyAiLCBkZWVwRHVtcChtX3Byb2NlZHVyZSwgbV92YWx1ZSksICI6XG4iKTsKICAgICAgICAg
ICAgICAgICBsb3dlcigpOwotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAg
ICAgICAgICAgaWYgKEIzTG93ZXJUb0FpckludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGZvciAoSW5zdCYgaW5zdCA6IG1faW5zdHMubGFzdCgpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiICAgICIsIGluc3QsICJcbiIpOwogICAgICAgICAgICAgICAg
IH0KQEAgLTM3OSw3ICszODAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJlYWxUbXAg
PSBtX2NvZGUubmV3VG1wKHZhbHVlLT5yZXN1bHRCYW5rKCkpOwogICAgICAgICAgICAgICAgIGlm
IChtX3Byb2NlZHVyZS5pc0Zhc3RDb25zdGFudCh2YWx1ZS0+a2V5KCkpKQogICAgICAgICAgICAg
ICAgICAgICBtX2NvZGUuYWRkRmFzdFRtcChyZWFsVG1wKTsKLSAgICAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQjNMb3dlclRvQWlySW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIlRtcCBmb3IgIiwgKnZhbHVlLCAiOiAi
LCByZWFsVG1wLCAiXG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRtcCA9IHJlYWxU
bXA7CkBAIC05MDYsNiArOTA3LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxBaXI6Ok9wY29k
ZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQ+CiAgICAgdm9pZCBhcHBlbmRTaGlmdChW
YWx1ZSogdmFsdWUsIFZhbHVlKiBhbW91bnQpCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3Bh
Y2UgQWlyOwogICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBvcGNvZGVGb3JUeXBlKG9wY29k
ZTMyLCBvcGNvZGU2NCwgdmFsdWUtPnR5cGUoKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoaW1t
KGFtb3VudCkpIHsKQEAgLTEwMTksNiArMTAyMSw3IEBAIHByaXZhdGU6CiAKICAgICBJbnN0IGNy
ZWF0ZVN0b3JlKEFpcjo6S2luZCBtb3ZlLCBWYWx1ZSogdmFsdWUsIGNvbnN0IEFyZyYgZGVzdCkK
ICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAgIGlmIChhdXRvIGlt
bV92YWx1ZSA9IGltbSh2YWx1ZSkpIHsKICAgICAgICAgICAgIGlmIChpc0FSTTY0KCkgJiYgaW1t
X3ZhbHVlLnZhbHVlKCkgPT0gMCkgewogICAgICAgICAgICAgICAgIHN3aXRjaCAobW92ZS5vcGNv
ZGUpIHsKQEAgLTEwNDMsNiArMTA0Niw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgQWlyOjpPcGNv
ZGUgc3RvcmVPcGNvZGUoV2lkdGggd2lkdGgsIEJhbmsgYmFuaykKICAgICB7CisgICAgICAgIHVz
aW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAgIHN3aXRjaCAod2lkdGgpIHsKICAgICAgICAgY2Fz
ZSBXaWR0aDg6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChiYW5rID09IEdQKTsKQEAgLTEw
NzMsNiArMTA3Nyw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBhcHBlbmRTdG9yZShWYWx1
ZSogdmFsdWUsIGNvbnN0IEFyZyYgZGVzdCkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFj
ZSBBaXI7CiAgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSB2YWx1ZS0+YXM8TWVtb3J5VmFs
dWU+KCk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1lbW9yeS0+aXNTdG9yZSgpKTsKIApAQCAt
MTEwMCw2ICsxMTA1LDcgQEAgcHJpdmF0ZToKIAogICAgIEFpcjo6T3Bjb2RlIG1vdmVGb3JUeXBl
KFR5cGUgdHlwZSkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAg
IHN3aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIEludDMyOgogICAgICAgICAgICAgcmV0dXJu
IE1vdmUzMjsKQEAgLTExMTksNiArMTEyNSw3IEBAIHByaXZhdGU6CiAKICAgICBBaXI6Ok9wY29k
ZSByZWxheGVkTW92ZUZvclR5cGUoVHlwZSB0eXBlKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFt
ZXNwYWNlIEFpcjsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgSW50MzI6
CiAgICAgICAgIGNhc2UgSW50NjQ6CkBAIC0xMTYyLDggKzExNjksOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgcHJpbnQoVmFsdWUqIG9yaWdpbiwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAg
IHsKICAgICAgICAgYXV0byBwcmludExpc3QgPSBQcmludGVyOjptYWtlUHJpbnRSZWNvcmRMaXN0
KGFyZ3VtZW50cy4uLik7Ci0gICAgICAgIGF1dG8gcHJpbnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8
UHJpbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxQcmludFNw
ZWNpYWw+KHByaW50TGlzdCkpKTsKLSAgICAgICAgSW5zdCBpbnN0KFBhdGNoLCBvcmlnaW4sIEFy
Zzo6c3BlY2lhbChwcmludFNwZWNpYWwpKTsKKyAgICAgICAgYXV0byBwcmludFNwZWNpYWwgPSBz
dGF0aWNfY2FzdDxBaXI6OlByaW50U3BlY2lhbCo+KG1fY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFr
ZV91bmlxdWU8QWlyOjpQcmludFNwZWNpYWw+KHByaW50TGlzdCkpKTsKKyAgICAgICAgSW5zdCBp
bnN0KEFpcjo6UGF0Y2gsIG9yaWdpbiwgQXJnOjpzcGVjaWFsKHByaW50U3BlY2lhbCkpOwogICAg
ICAgICBQcmludGVyOjphcHBlbmRBaXJBcmdzKGluc3QsIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+
KGFyZ3VtZW50cykuLi4pOwogICAgICAgICBhcHBlbmQoV1RGTW92ZShpbnN0KSk7CiAgICAgfQpA
QCAtMTc2Miw2ICsxNzY5LDcgQEAgcHJpdmF0ZToKIAogICAgIEluc3QgY3JlYXRlQnJhbmNoKFZh
bHVlKiB2YWx1ZSwgYm9vbCBpbnZlcnRlZCA9IGZhbHNlKQogICAgIHsKKyAgICAgICAgdXNpbmcg
bmFtZXNwYWNlIEFpcjsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUdlbmVyaWNDb21wYXJlKAogICAg
ICAgICAgICAgdmFsdWUsCiAgICAgICAgICAgICBbdGhpc10gKApAQCAtMTg0NSw2ICsxODUzLDcg
QEAgcHJpdmF0ZToKIAogICAgIEluc3QgY3JlYXRlQ29tcGFyZShWYWx1ZSogdmFsdWUsIGJvb2wg
aW52ZXJ0ZWQgPSBmYWxzZSkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAg
ICAgICAgIHJldHVybiBjcmVhdGVHZW5lcmljQ29tcGFyZSgKICAgICAgICAgICAgIHZhbHVlLAog
ICAgICAgICAgICAgW3RoaXNdICgKQEAgLTE5MjQsNiArMTkzMyw3IEBAIHByaXZhdGU6CiAgICAg
fTsKICAgICBJbnN0IGNyZWF0ZVNlbGVjdChjb25zdCBNb3ZlQ29uZGl0aW9uYWxseUNvbmZpZyYg
Y29uZmlnKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAgYXV0
byBjcmVhdGVTZWxlY3RJbnN0cnVjdGlvbiA9IFsmXSAoQWlyOjpPcGNvZGUgb3Bjb2RlLCBjb25z
dCBBcmcmIGNvbmRpdGlvbiwgQXJnUHJvbWlzZSYgbGVmdCwgQXJnUHJvbWlzZSYgcmlnaHQpIC0+
IEluc3QgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRGb3JtKG9wY29kZSwgY29uZGl0aW9uLmtp
bmQoKSwgbGVmdC5raW5kKCksIHJpZ2h0LmtpbmQoKSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6
OlRtcCkpIHsKICAgICAgICAgICAgICAgICBUbXAgcmVzdWx0ID0gdG1wKG1fdmFsdWUpOwpAQCAt
MTk4Nyw2ICsxOTk3LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBib29sIHRyeUFwcGVuZExlYSgp
CiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICBBaXI6Ok9wY29k
ZSBsZWFPcGNvZGUgPSB0cnlPcGNvZGVGb3JUeXBlKExlYTMyLCBMZWE2NCwgbV92YWx1ZS0+dHlw
ZSgpKTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShsZWFPcGNvZGUsIEFyZzo6SW5kZXgsIEFy
Zzo6VG1wKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxMTYsNiArMjEyNyw3IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGFwcGVuZFg4NkRpdihCMzo6T3Bjb2RlIG9wKQogICAgIHsK
KyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAgQWlyOjpPcGNvZGUgY29udmVy
dFRvRG91YmxlV29yZDsKICAgICAgICAgQWlyOjpPcGNvZGUgZGl2OwogICAgICAgICBzd2l0Y2gg
KG1fdmFsdWUtPnR5cGUoKSkgewpAQCAtMjE0Myw2ICsyMTU1LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgYXBwZW5kWDg2VURpdihCMzo6T3Bjb2RlIG9wKQogICAgIHsKKyAgICAgICAgdXNpbmcg
bmFtZXNwYWNlIEFpcjsKICAgICAgICAgQWlyOjpPcGNvZGUgZGl2ID0gbV92YWx1ZS0+dHlwZSgp
ID09IEludDMyID8gWDg2VURpdjMyIDogWDg2VURpdjY0OwogCiAgICAgICAgIEFTU0VSVChvcCA9
PSBVRGl2IHx8IG9wID09IFVNb2QpOwpAQCAtMjE3OCw2ICsyMTkxLDcgQEAgcHJpdmF0ZToKICAg
ICAvLyBnZW5lcmF0ZWQuIEl0IGFzc3VtZXMgdGhhdCB5b3UndmUgY29uc3VtZWQgZXZlcnl0aGlu
ZyB0aGF0IG5lZWRzIHRvIGJlIGNvbnN1bWVkLgogICAgIHZvaWQgYXBwZW5kQ0FTKFZhbHVlKiBh
dG9taWNWYWx1ZSwgYm9vbCBpbnZlcnQpCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2Ug
QWlyOwogICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gYXRvbWljVmFsdWUtPmFzPEF0b21p
Y1ZhbHVlPigpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChhdG9taWMpOwogICAgICAgICAKQEAg
LTIzNDAsNiArMjM1NCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBhcHBlbmRHZW5lcmFs
QXRvbWljKEFpcjo6T3Bjb2RlIG9wY29kZSwgQ29tbXV0YXRpdml0eSBjb21tdXRhdGl2aXR5ID0g
Tm90Q29tbXV0YXRpdmUpCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAg
ICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CiAg
ICAgICAgIAogICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIobV92YWx1ZSk7CkBAIC0yNDI0LDYg
KzI0MzksNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgbG93ZXIoKQogICAgIHsKKyAgICAg
ICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT5vcGNvZGUo
KSkgewogICAgICAgICBjYXNlIEIzOjpOb3A6IHsKICAgICAgICAgICAgIC8vIFllcywgd2Ugd2ls
bCB0b3RhbGx5IHNlZSBOb3AncyBiZWNhdXNlIHNvbWUgcGhhc2VzIHdpbGwgcmVwbGFjZVdpdGhO
b3AoKSBpbnN0ZWFkIG9mCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQ
YXRjaHBvaW50U3BlY2lhbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBv
aW50U3BlY2lhbC5jcHAKaW5kZXggNDdmMGFiZDJmZmYzYjUwNTcwODJkNzAzYTUxNDIzYzhjYjM4
YjBiMC4uYjM3NWNkZDBlMGZiMGJmMDg2MjA0ZDEyNzYzYWEwZDUyYjE4MTJhMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRTcGVjaWFsLmNwcApAQCAtMzQs
NyArMzQsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAotdXNpbmcgbmFt
ZXNwYWNlIEFpcjsKK3VzaW5nIEFyZyA9IEFpcjo6QXJnOwordXNpbmcgSW5zdCA9IEFpcjo6SW5z
dDsKIAogUGF0Y2hwb2ludFNwZWNpYWw6OlBhdGNocG9pbnRTcGVjaWFsKCkKIHsKQEAgLTEzNSw4
ICsxMzYsNyBAQCBib29sIFBhdGNocG9pbnRTcGVjaWFsOjphZG1pdHNFeHRlbmRlZE9mZnNldEFk
ZHIoSW5zdCYgaW5zdCwgdW5zaWduZWQgYXJnSW5kZXgpCiAgICAgcmV0dXJuIGFkbWl0c1N0YWNr
KGluc3QsIGFyZ0luZGV4KTsKIH0KIAotQ0NhbGxIZWxwZXJzOjpKdW1wIFBhdGNocG9pbnRTcGVj
aWFsOjpnZW5lcmF0ZSgKLSAgICBJbnN0JiBpbnN0LCBDQ2FsbEhlbHBlcnMmIGppdCwgR2VuZXJh
dGlvbkNvbnRleHQmIGNvbnRleHQpCitDQ2FsbEhlbHBlcnM6Okp1bXAgUGF0Y2hwb2ludFNwZWNp
YWw6OmdlbmVyYXRlKEluc3QmIGluc3QsIENDYWxsSGVscGVycyYgaml0LCBBaXI6OkdlbmVyYXRp
b25Db250ZXh0JiBjb250ZXh0KQogewogICAgIFBhdGNocG9pbnRWYWx1ZSogdmFsdWUgPSBpbnN0
Lm9yaWdpbi0+YXM8UGF0Y2hwb2ludFZhbHVlPigpOwogICAgIEFTU0VSVCh2YWx1ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwCmlu
ZGV4IDFjN2IwZDAwMmExYjkxOWUyMzBmZTY0NmIwMzJlNGE0ZTk5Y2QxNjEuLjZkMzFmN2NiYzA0
NjdjYmRkNmY2ZTNjNThjNjBjYzNlOTE3Y2NlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwCkBAIC0zOSw3ICszOSw5IEBAIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJv
c2UgPSBmYWxzZTsKK25hbWVzcGFjZSBCM1JlZHVjZURvdWJsZVRvRmxvYXRJbnRlcm5hbCB7Citz
dGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiBib29sIHByaW50UmVtYWluaW5n
Q29udmVyc2lvbnMgPSBmYWxzZTsKIAogY2xhc3MgRG91YmxlVG9GbG9hdFJlZHVjdGlvbiB7CkBA
IC0xMjgsNyArMTMwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgfSB3aGls
ZSAoY2hhbmdlZFBoaVN0YXRlKTsKIAotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBp
ZiAoQjNSZWR1Y2VEb3VibGVUb0Zsb2F0SW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAg
IGRhdGFMb2coIkNvbnZlcnNpb24gY2FuZGlkYXRlczpcbiIpOwogICAgICAgICAgICAgZm9yIChC
YXNpY0Jsb2NrKiBibG9jayA6IG1fcHJvY2VkdXJlKSB7CiAgICAgICAgICAgICAgICAgZm9yIChW
YWx1ZSogdmFsdWUgOiAqYmxvY2spIHsKQEAgLTE5Miw3ICsxOTQsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgfQogICAgICAgICB9IHdoaWxlIChjaGFuZ2VkUGhpU3RhdGUpOwogCi0gICAgICAg
IGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChCM1JlZHVjZURvdWJsZVRvRmxvYXRJbnRlcm5h
bDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiUGhpcyBjb250YWluaW5nIGZsb2F0
IHZhbHVlczpcbiIpOwogICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fcHJv
Y2VkdXJlKSB7CiAgICAgICAgICAgICAgICAgZm9yIChWYWx1ZSogdmFsdWUgOiAqYmxvY2spIHsK
QEAgLTQ4OSwxMyArNDkxLDEzIEBAIHZvaWQgcmVkdWNlRG91YmxlVG9GbG9hdChQcm9jZWR1cmUm
IHByb2NlZHVyZSkKIHsKICAgICBQaGFzZVNjb3BlIHBoYXNlU2NvcGUocHJvY2VkdXJlLCAicmVk
dWNlRG91YmxlVG9GbG9hdCIpOwogCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEIzUmVkdWNl
RG91YmxlVG9GbG9hdEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJCZWZvcmUg
RG91YmxlVG9GbG9hdFJlZHVjdGlvbjpcbiIsIHByb2NlZHVyZSwgIlxuIik7CiAKICAgICBEb3Vi
bGVUb0Zsb2F0UmVkdWN0aW9uIGRvdWJsZVRvRmxvYXRSZWR1Y3Rpb24ocHJvY2VkdXJlKTsKICAg
ICBkb3VibGVUb0Zsb2F0UmVkdWN0aW9uLnJ1bigpOwogCi0gICAgaWYgKHZlcmJvc2UpCisgICAg
aWYgKEIzUmVkdWNlRG91YmxlVG9GbG9hdEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRh
TG9nKCJBZnRlciBEb3VibGVUb0Zsb2F0UmVkdWN0aW9uOlxuIiwgcHJvY2VkdXJlLCAiXG4iKTsK
IAogICAgIHByaW50R3JhcGhJZkNvbnZlcnRpbmcocHJvY2VkdXJlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAppbmRleCBjMjJlOWI0NTNkMDk1Mjk2
N2YyMmE2ZmZiYTY0OTFmZmQwMGY5YzZjLi41NTAyZDVlNDdlNTg3MDYxMDYyYjE2ODZkOWJiM2My
NjkzNThiOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VT
dHJlbmd0aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5n
dGguY3BwCkBAIC04OCw3ICs4OCw5IEBAIG5hbWVzcGFjZSB7CiAvLyBjb25zdGFudHMgdGhlbiB0
aGUgY2Fub25pY2FsIGZvcm0gaW52b2x2ZXMgdGhlIGxvd2VyLWluZGV4ZWQgdmFsdWUgZmlyc3Qu
IEdpdmVuIEFkZCh4LCB5KSwgaXQncwogLy8gY2Fub25pY2FsIGlmIHgtPmluZGV4KCkgPD0geS0+
aW5kZXgoKS4KIAotYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgQjNSZWR1Y2VTdHJl
bmd0aEludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAog
Ly8gRklYTUU6IFRoaXMgSW50UmFuZ2Ugc3R1ZmYgc2hvdWxkIGJlIHJlZmFjdG9yZWQgaW50byBh
IGdlbmVyYWwgY29uc3RhbnQgcHJvcGFnYXRvci4gSXQncyB3ZWlyZAogLy8gdGhhdCBpdCdzIGp1
c3Qgc2l0dGluZyBoZXJlIGluIHRoaXMgZmlsZS4KQEAgLTQxNCw3ICs0MTYsNyBAQCBwdWJsaWM6
CiAKICAgICAgICAgICAgIGlmIChmaXJzdCkKICAgICAgICAgICAgICAgICBmaXJzdCA9IGZhbHNl
OwotICAgICAgICAgICAgZWxzZSBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgZWxzZSBpZiAo
QjNSZWR1Y2VTdHJlbmd0aEludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgZGF0
YUxvZygiQjMgYWZ0ZXIgaXRlcmF0aW9uICMiLCBpbmRleCAtIDEsICIgb2YgcmVkdWNlU3RyZW5n
dGg6XG4iKTsKICAgICAgICAgICAgICAgICBkYXRhTG9nKG1fcHJvYyk7CiAgICAgICAgICAgICB9
CkBAIC00NTIsNyArNDU0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIG1fYmxvY2sgPSBi
bG9jazsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmb3IgKG1faW5kZXggPSAw
OyBtX2luZGV4IDwgYmxvY2stPnNpemUoKTsgKyttX2luZGV4KSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChCM1JlZHVjZVN0cmVu
Z3RoSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxvb2tpbmcgYXQgIiwgKmJsb2NrLCAiICMi
LCBtX2luZGV4LCAiOiAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZXBEdW1wKG1f
cHJvYywgYmxvY2stPmF0KG1faW5kZXgpKSwgIlxuIik7CkBAIC0yMDM1LDcgKzIwMzcsNyBAQCBw
cml2YXRlOgogICAgIC8vIGVhcmx5LgogICAgIHZvaWQgc3BlY2lhbGl6ZVNlbGVjdChWYWx1ZSog
c291cmNlKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCM1JlZHVj
ZVN0cmVuZ3RoSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJTcGVjaWFs
aXppbmcgc2VsZWN0OiAiLCBkZWVwRHVtcChtX3Byb2MsIHNvdXJjZSksICJcbiIpOwogCiAgICAg
ICAgIC8vIFRoaXMgbXV0YXRlcyBzdGFydEluZGV4IHRvIGFjY291bnQgZm9yIHRoZSBmYWN0IHRo
YXQgbV9ibG9jayBnb3QgdGhlIGZyb250IG9mIGl0CkBAIC0yMjc2LDcgKzIyNzgsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBzaW1wbGlmeUNGRygpCiAgICAgewotICAgICAgICBpZiAodmVyYm9z
ZSkgeworICAgICAgICBpZiAoQjNSZWR1Y2VTdHJlbmd0aEludGVybmFsOjp2ZXJib3NlKSB7CiAg
ICAgICAgICAgICBkYXRhTG9nKCJCZWZvcmUgc2ltcGxpZnlDRkc6XG4iKTsKICAgICAgICAgICAg
IGRhdGFMb2cobV9wcm9jKTsKICAgICAgICAgfQpAQCAtMjMwMSw3ICsyMzAzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgLy8gaXRlcmF0aW9ucyBuZWVkZWQgdG8ga2lsbCBhIGxvdCBvZiBjb2RlLgog
CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX3Byb2MpIHsKLSAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzUmVkdWNlU3RyZW5ndGhJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBibG9jayAiLCAq
YmxvY2ssICI6XG4iKTsKIAogICAgICAgICAgICAgY2hlY2tQcmVkZWNlc3NvclZhbGlkaXR5KCk7
CkBAIC0yMzE3LDcgKzIzMTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAmJiBz
dWNjZXNzb3ItPmxhc3QoKS0+b3Bjb2RlKCkgPT0gSnVtcCkgewogICAgICAgICAgICAgICAgICAg
ICBCYXNpY0Jsb2NrKiBuZXdTdWNjZXNzb3IgPSBzdWNjZXNzb3ItPnN1Y2Nlc3NvckJsb2NrKDAp
OwogICAgICAgICAgICAgICAgICAgICBpZiAobmV3U3VjY2Vzc29yICE9IHN1Y2Nlc3Nvcikgewot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChCM1JlZHVjZVN0cmVuZ3RoSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiUmVwbGFjaW5nICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIi0+IiwgcG9pbnRlckR1bXAo
c3VjY2Vzc29yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiB3aXRoICIsIHBv
aW50ZXJEdW1wKGJsb2NrKSwgIi0+IiwgcG9pbnRlckR1bXAobmV3U3VjY2Vzc29yKSwKQEAgLTIz
NDgsNyArMjM1MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKGFsbFNhbWUpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoQjNSZWR1Y2VTdHJlbmd0aEludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkNoYW5naW5nICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIidzIHRlcm1pbmFsIHRvIGEgSnVt
cC5cbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjM4Nyw3ICsyMzg5LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBuZXdTdWNjZXNz
b3IgOiBibG9jay0+c3VjY2Vzc29yQmxvY2tzKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBu
ZXdTdWNjZXNzb3ItPnJlcGxhY2VQcmVkZWNlc3NvcihzdWNjZXNzb3IsIGJsb2NrKTsKIAotICAg
ICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
QjNSZWR1Y2VTdHJlbmd0aEludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNZXJnZWQgIiwgcG9p
bnRlckR1bXAoYmxvY2spLCAiLT4iLCBwb2ludGVyRHVtcChzdWNjZXNzb3IpLCAiXG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgfQpAQCAtMjM5Nyw3ICsyMzk5LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChtX2NoYW5nZWRDRkcgJiYgdmVyYm9z
ZSkgeworICAgICAgICBpZiAobV9jaGFuZ2VkQ0ZHICYmIEIzUmVkdWNlU3RyZW5ndGhJbnRlcm5h
bDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiQjMgYWZ0ZXIgc2ltcGxpZnlDRkc6
XG4iKTsKICAgICAgICAgICAgIGRhdGFMb2cobV9wcm9jKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5j
cHAKaW5kZXggYmJhODRjYWY4YjRiZTA5YzI4ODYzYzQyOTAyMDg1MmU3MDUxMTYyMi4uMzg5ZWY4
YjljYTJkNjEwZWZkYTU3YjlkODBlYTkzZWJiNTgyZTE5YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuY3BwCkBAIC0z
NCw4ICszNCw2IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi11c2luZyBu
YW1lc3BhY2UgQWlyOwotCiBjb25zdCBSZWdpc3RlclNldCYgU3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zOjp1c2VkUmVnaXN0ZXJzKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9jb250ZXh0LmNvZGUt
Pm5lZWRzVXNlZFJlZ2lzdGVycygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNT
dGFja21hcFNwZWNpYWwuY3BwCmluZGV4IDYwMzcwYzU3OGRkZmMzMjkxOGVmZmI1YTFiZGU4NTc4
ZTkzZjJmNzAuLjVlYjViOWIwZTY3ZDM3M2MzOWJjN2Q5NmQ5M2VkOWY2YWM1ZDE4NDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcApAQCAtMzQs
NyArMzQsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAotdXNpbmcgbmFt
ZXNwYWNlIEFpcjsKK3VzaW5nIEFyZyA9IEFpcjo6QXJnOwordXNpbmcgSW5zdCA9IEFpcjo6SW5z
dDsKK3VzaW5nIFRtcCA9IEFpcjo6VG1wOwogCiBTdGFja21hcFNwZWNpYWw6OlN0YWNrbWFwU3Bl
Y2lhbCgpCiB7CkBAIC0yMTAsOCArMjEyLDcgQEAgYm9vbCBTdGFja21hcFNwZWNpYWw6OmFkbWl0
c1N0YWNrSW1wbCgKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVZlY3RvcjxWYWx1ZVJlcD4gU3Rh
Y2ttYXBTcGVjaWFsOjpyZXBzSW1wbCgKLSAgICBHZW5lcmF0aW9uQ29udGV4dCYgY29udGV4dCwg
dW5zaWduZWQgbnVtSWdub3JlZEIzQXJncywgdW5zaWduZWQgbnVtSWdub3JlZEFpckFyZ3MsIElu
c3QmIGluc3QpCitWZWN0b3I8VmFsdWVSZXA+IFN0YWNrbWFwU3BlY2lhbDo6cmVwc0ltcGwoQWly
OjpHZW5lcmF0aW9uQ29udGV4dCYgY29udGV4dCwgdW5zaWduZWQgbnVtSWdub3JlZEIzQXJncywg
dW5zaWduZWQgbnVtSWdub3JlZEFpckFyZ3MsIEluc3QmIGluc3QpCiB7CiAgICAgVmVjdG9yPFZh
bHVlUmVwPiByZXN1bHQ7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGluc3Qub3JpZ2lu
LT5udW1DaGlsZHJlbigpIC0gbnVtSWdub3JlZEIzQXJnczsgKytpKQpAQCAtMjY3LDcgKzI2OCw3
IEBAIGJvb2wgU3RhY2ttYXBTcGVjaWFsOjppc0FyZ1ZhbGlkRm9yUmVwKEFpcjo6Q29kZSYgY29k
ZSwgY29uc3QgQWlyOjpBcmcmIGFyZywgY29uCiAgICAgfQogfQogCi1WYWx1ZVJlcCBTdGFja21h
cFNwZWNpYWw6OnJlcEZvckFyZyhDb2RlJiBjb2RlLCBjb25zdCBBcmcmIGFyZykKK1ZhbHVlUmVw
IFN0YWNrbWFwU3BlY2lhbDo6cmVwRm9yQXJnKEFpcjo6Q29kZSYgY29kZSwgY29uc3QgQXJnJiBh
cmcpCiB7CiAgICAgc3dpdGNoIChhcmcua2luZCgpKSB7CiAgICAgY2FzZSBBcmc6OlRtcDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVTdGFja0J5
R3JhcGhDb2xvcmluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9j
YXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcuY3BwCmluZGV4IGU4NjBkOWNjYzVjYjBhZTFkODdjM2Fm
ZWZkYWJmODg2NmYzMTdkMWEuLmVkNjdkMWM3Y2Q4OWRiMDhjMGY5OGNmMWY2NjNhMWY1YWJjNTJl
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVT
dGFja0J5R3JhcGhDb2xvcmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcApAQCAtNDIsNyArNDIsOSBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CiAKIG5hbWVzcGFj
ZSB7CiAKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEFpckFsbG9jYXRl
U3RhY2tCeUdyYXBoQ29sb3JpbmdJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3Nl
ID0gZmFsc2U7Cit9CiAKIHN0cnVjdCBDb2FsZXNjYWJsZU1vdmUgewogICAgIENvYWxlc2NhYmxl
TW92ZSgpCkBAIC0xNTMsNyArMTU1LDcgQEAgdm9pZCBhbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9y
aW5nKENvZGUmIGNvZGUpCiAgICAgICAgIFN0YWNrU2xvdExpdmVuZXNzOjpMb2NhbENhbGMgbG9j
YWxDYWxjKGxpdmVuZXNzLCBibG9jayk7CiAKICAgICAgICAgYXV0byBpbnRlcmZlcmUgPSBbJl0g
KHVuc2lnbmVkIGluc3RJbmRleCkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICBpZiAoQWlyQWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZ0ludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkludGVyZmVyaW5nOiAiLCBXVEY6OnBvaW50ZXJM
aXN0RHVtcChsb2NhbENhbGMubGl2ZSgpKSwgIlxuIik7CiAKICAgICAgICAgICAgIEluc3QqIHBy
ZXZJbnN0ID0gYmxvY2stPmdldChpbnN0SW5kZXgpOwpAQCAtMTg1LDcgKzE4Nyw3IEBAIHZvaWQg
YWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZyhDb2RlJiBjb2RlKQogICAgICAgICB9OwogCiAg
ICAgICAgIGZvciAodW5zaWduZWQgaW5zdEluZGV4ID0gYmxvY2stPnNpemUoKTsgaW5zdEluZGV4
LS07KSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChBaXJBbGxv
Y2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiQW5hbHl6aW5nOiAiLCBibG9jay0+YXQoaW5zdEluZGV4KSwgIlxuIik7CiAK
ICAgICAgICAgICAgIC8vIEtpbGwgZGVhZCBzdG9yZXMuIEZvciBzaW1wbGljaXR5IHdlIHNheSB0
aGF0IGEgc3RvcmUgaXMga2lsbGFibGUgaWYgaXQgaGFzIG9ubHkgbGF0ZQpAQCAtMjMyLDcgKzIz
NCw3IEBAIHZvaWQgYWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZyhDb2RlJiBjb2RlKQogICAg
ICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoQWlyQWxs
b2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZ0ludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGZv
ciAoU3RhY2tTbG90KiBzbG90IDogY29kZS5zdGFja1Nsb3RzKCkpCiAgICAgICAgICAgICBkYXRh
TG9nKCJJbnRlcmZlcmVuY2Ugb2YgIiwgcG9pbnRlckR1bXAoc2xvdCksICI6ICIsIHBvaW50ZXJM
aXN0RHVtcChpbnRlcmZlcmVuY2Vbc2xvdF0pLCAiXG4iKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVtaXRTaHVmZmxlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZmbGUuY3BwCmluZGV4IDczZDcxMGZmNjll
NzE4ZWI0YmUzMDY5YzFjMWQ4MGFmYjljNjQ5NjcuLjcxNjZlZDg2OTRlYTNmMTg0MjRmZDIzZTgw
MjEwOTgwNWY2MTJiZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyRW1pdFNodWZmbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
RW1pdFNodWZmbGUuY3BwCkBAIC0zNyw3ICszNyw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKIAogbmFtZXNwYWNlIHsKIAotYm9vbCB2ZXJib3NlID0g
ZmFsc2U7CituYW1lc3BhY2UgQWlyRW1pdFNodWZmbGVJbnRlcm5hbCB7CitzdGF0aWMgY29uc3Qg
Ym9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiBU
bXAgZmluZFBvc3NpYmxlU2NyYXRjaChDb2RlJiBjb2RlLCBCYW5rIGJhbmssIGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpIHsKQEAgLTEyNSw3ICsxMjcsNyBAQCBWZWN0b3I8SW5zdD4gZW1pdFNodWZm
bGUoCiAgICAgQ29kZSYgY29kZSwgVmVjdG9yPFNodWZmbGVQYWlyPiBwYWlycywgc3RkOjphcnJh
eTxBcmcsIDI+IHNjcmF0Y2hlcywgQmFuayBiYW5rLAogICAgIFZhbHVlKiBvcmlnaW4pCiB7Ci0g
ICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoQWlyRW1pdFNodWZmbGVJbnRlcm5hbDo6dmVyYm9z
ZSkgewogICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgIkRlYWxpbmcgd2l0aCBwYWlyczog
IiwgbGlzdER1bXAocGFpcnMpLCAiIGFuZCBzY3JhdGNoZXMgIiwgc2NyYXRjaGVzWzBdLCAiLCAi
LAogICAgICAgICAgICAgc2NyYXRjaGVzWzFdLCAiXG4iKTsKQEAgLTE4NSw3ICsxODcsNyBAQCBW
ZWN0b3I8SW5zdD4gZW1pdFNodWZmbGUoCiAgICAgICAgICAgICBBU1NFUlQoY3VycmVudFBhaXJz
LmlzRW1wdHkoKSk7CiAgICAgICAgICAgICBBcmcgb3JpZ2luYWxTcmMgPSBtYXBwaW5nLmJlZ2lu
KCktPmtleTsKICAgICAgICAgICAgIEFTU0VSVCghc2hpZnRzLmNvbnRhaW5zKG9yaWdpbmFsU3Jj
KSk7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChBaXJFbWl0U2h1
ZmZsZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIlByb2Nlc3Np
bmcgZnJvbSAiLCBvcmlnaW5hbFNyYywgIlxuIik7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IEdyYXBoTm9kZVdvcmtsaXN0PEFyZz4gd29ya2xpc3Q7CkBAIC0xOTUsNyArMTk3LDcgQEAgVmVj
dG9yPEluc3Q+IGVtaXRTaHVmZmxlKAogICAgICAgICAgICAgICAgIGlmIChpdGVyID09IG1hcHBp
bmcuZW5kKCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gV2l0aCBhIHNoaWZ0IGl0J3MgcG9z
c2libGUgdGhhdCB3ZSBwcmV2aW91c2x5IGJ1aWx0IHRoZSB0YWlsIG9mIHRoaXMgc2hpZnQuCiAg
ICAgICAgICAgICAgICAgICAgIC8vIFNlZSBpZiB0aGF0J3MgdGhlIGNhc2Ugbm93LgotICAgICAg
ICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKEFpckVt
aXRTaHVmZmxlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKCJUcnlpbmcgdG8gYXBwZW5kIHNoaWZ0IGF0ICIsIHNyYywgIlxuIik7CiAgICAgICAgICAg
ICAgICAgICAgIGN1cnJlbnRQYWlycy5hcHBlbmRWZWN0b3Ioc2hpZnRzLnRha2Uoc3JjKSk7CiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjEzLDcgKzIxNSw3IEBAIFZlY3RvcjxJ
bnN0PiBlbWl0U2h1ZmZsZSgKICAgICAgICAgICAgIEFTU0VSVChjdXJyZW50UGFpcnMuc2l6ZSgp
KTsKICAgICAgICAgICAgIEFTU0VSVChjdXJyZW50UGFpcnNbMF0uc3JjKCkgPT0gb3JpZ2luYWxT
cmMpOwogCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChBaXJFbWl0
U2h1ZmZsZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coImN1cnJl
bnRQYWlycyA9ICIsIGxpc3REdW1wKGN1cnJlbnRQYWlycyksICJcbiIpOwogCiAgICAgICAgICAg
ICBib29sIGlzUm90YXRlID0gZmFsc2U7CkBAIC0yMjUsNyArMjI3LDcgQEAgVmVjdG9yPEluc3Q+
IGVtaXRTaHVmZmxlKAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoaXNSb3RhdGUp
IHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQWly
RW1pdFNodWZmbGVJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiSXQncyBhIHJvdGF0ZS5cbiIpOwogICAgICAgICAgICAgICAgIFJvdGF0ZSByb3RhdGU7CiAK
QEAgLTI3NywxNCArMjc5LDE0IEBAIFZlY3RvcjxJbnN0PiBlbWl0U2h1ZmZsZSgKICAgICAgICAg
ICAgICAgICByb3RhdGVzLmFwcGVuZChXVEZNb3ZlKHJvdGF0ZSkpOwogICAgICAgICAgICAgICAg
IGN1cnJlbnRQYWlycy5zaHJpbmsoMCk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChBaXJFbWl0U2h1ZmZsZUlu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJJdCdzIGEgc2hp
ZnQuXG4iKTsKICAgICAgICAgICAgICAgICBzaGlmdHMuYWRkKG9yaWdpbmFsU3JjLCBXVEZNb3Zl
KGN1cnJlbnRQYWlycykpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAg
aWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoQWlyRW1pdFNodWZmbGVJbnRlcm5hbDo6dmVyYm9zZSkg
ewogICAgICAgICBkYXRhTG9nKCJTaGlmdHM6XG4iKTsKICAgICAgICAgZm9yIChhdXRvJiBlbnRy
eSA6IHNoaWZ0cykKICAgICAgICAgICAgIGRhdGFMb2coIiAgICAiLCBlbnRyeS5rZXksICI6ICIs
IGxpc3REdW1wKGVudHJ5LnZhbHVlKSwgIlxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcAppbmRleCA5Y2IxMTAxYTExZjIz
NTE3YzI5OTMzYmZhYmE5YTNjOTIxYTg2NmFlLi42MGE4Y2MwMzVmZjEyOTA1OTEwNWVkNjVlY2Yy
NTMzMjZjOGU1Mzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckZpeE9idmlvdXNTcGlsbHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyRml4T2J2aW91c1NwaWxscy5jcHAKQEAgLTM5LDcgKzM5LDkgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZl
cmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBBaXJGaXhPYnZpb3VzU3BpbGxzSW50ZXJuYWwgewor
c3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBjbGFzcyBGaXhPYnZpb3Vz
U3BpbGxzIHsKIHB1YmxpYzoKQEAgLTUxLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBy
dW4oKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChBaXJGaXhPYnZp
b3VzU3BpbGxzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJDb2RlIGJl
Zm9yZSBmaXhPYnZpb3VzU3BpbGxzOlxuIiwgbV9jb2RlKTsKICAgICAgICAgCiAgICAgICAgIGNv
bXB1dGVBbGlhc2VzKCk7CkBAIC03Myw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgaWYgKCFtX3N0YXRlLndhc1Zpc2l0ZWQpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEFp
ckZpeE9idmlvdXNTcGlsbHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiRXhlY3V0aW5nIGJsb2NrICIsICptX2Jsb2NrLCAiOiAiLCBtX3N0YXRlLCAiXG4i
KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmb3IgKG1faW5zdEluZGV4ID0g
MDsgbV9pbnN0SW5kZXggPCBibG9jay0+c2l6ZSgpOyArK21faW5zdEluZGV4KQpAQCAtMTY5LDEz
ICsxNzEsMTMgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEluc3QmIGluc3QgPSBtX2Jsb2Nr
LT5hdChtX2luc3RJbmRleCk7CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChB
aXJGaXhPYnZpb3VzU3BpbGxzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgRXhlY3V0aW5nICIsIGluc3QsICI6ICIsIG1fc3RhdGUsICJcbiIpOwogCiAgICAgICAg
IEluc3Q6OmZvckVhY2hEZWZXaXRoRXh0cmFDbG9iYmVyZWRSZWdzPEFyZz4oCiAgICAgICAgICAg
ICAmaW5zdCwgJmluc3QsCiAgICAgICAgICAgICBbJl0gKGNvbnN0IEFyZyYgYXJnLCBBcmc6OlJv
bGUsIEJhbmssIFdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICAgICAgaWYgKEFpckZpeE9idmlvdXNTcGlsbHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBDbG9iYmVyaW5nICIsIGFyZywgIlxuIik7
CiAgICAgICAgICAgICAgICAgbV9zdGF0ZS5jbG9iYmVyKGFyZyk7CiAgICAgICAgICAgICB9KTsK
QEAgLTE5MCw3ICsxOTIsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgSW5zdCYgaW5zdCA9
IG1fYmxvY2stPmF0KG1faW5zdEluZGV4KTsKIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgaWYgKEFpckZpeE9idmlvdXNTcGlsbHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
IGRhdGFMb2coIkZpeGluZyBpbnN0ICIsIGluc3QsICI6ICIsIG1fc3RhdGUsICJcbiIpOwogICAg
ICAgICAKICAgICAgICAgLy8gQ2hlY2sgaWYgYWxpYXMgYW5hbHlzaXMgc2F5cyB0aGF0IHRoaXMg
aXMgdW5uZWNlc3NhcnkuCkBAIC0yNjcsMTMgKzI2OSwxMyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIGNhc2UgV2lkdGg2NDoKICAgICAgICAgICAgICAgICAgICAgaWYgKGFsaWFzLT5tb2Rl
ICE9IFJlZ1Nsb3Q6OkFsbEJpdHMpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAo
QWlyRml4T2J2aW91c1NwaWxsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiICAgIFJlcGxhY2luZyAiLCBhcmcsICIgd2l0aCAiLCBhbGlhcy0+cmVn
LCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgYXJnID0gVG1wKGFsaWFzLT5yZWcpOwogICAg
ICAgICAgICAgICAgICAgICBkaWRUaGluZ3MgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAgICAgY2FzZSBXaWR0aDMyOgotICAgICAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKEFpckZpeE9idmlvdXNTcGls
bHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICBSZXBsYWNpbmcgIiwgYXJnLCAiIHdpdGggIiwgYWxpYXMtPnJlZywgIiAoc3Vid2lkdGggY2Fz
ZSlcbiIpOwogICAgICAgICAgICAgICAgICAgICBhcmcgPSBUbXAoYWxpYXMtPnJlZyk7CiAgICAg
ICAgICAgICAgICAgICAgIGRpZFRoaW5ncyA9IHRydWU7CkBAIC0yODUsNyArMjg3LDcgQEAgcHJp
dmF0ZToKIAogICAgICAgICAgICAgLy8gUmV2ZXJ0IHRvIGltbWVkaWF0ZSBpZiB0aGF0IGRpZG4n
dCB3b3JrLgogICAgICAgICAgICAgaWYgKGNvbnN0IFNsb3RDb25zdCogYWxpYXMgPSBtX3N0YXRl
LmdldFNsb3RDb25zdChhcmcuc3RhY2tTbG90KCkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEFpckZpeE9idmlvdXNTcGlsbHNJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIFJlcGxhY2luZyAiLCBh
cmcsICIgd2l0aCBjb25zdGFudCAiLCBhbGlhcy0+Y29uc3RhbnQsICJcbiIpOwogICAgICAgICAg
ICAgICAgIGlmIChBcmc6OmlzVmFsaWRJbW1Gb3JtKGFsaWFzLT5jb25zdGFudCkpCiAgICAgICAg
ICAgICAgICAgICAgIGFyZyA9IEFyZzo6aW1tKGFsaWFzLT5jb25zdGFudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyQWZ0ZXJSZWdBbGxvYy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyQWZ0ZXJSZWdBbGxvYy5jcHAK
aW5kZXggMWZhMDUzZGI5Y2E3ZmM0YzM4NmZiMTkzNzE1MjI1NWJlZWQ3MTM5Yi4uYmZlZjNiM2Y0
ZjExYTU5YTIxZDJiODFjY2UxOTI1YmNkODFlNTRlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcApAQCAtNDYsNyAr
NDYsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CiAK
IG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEFpckxvd2Vy
QWZ0ZXJSZWdBbGxvY0ludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxz
ZTsKK30KICAgICAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCkBAIC01NCw3ICs1Niw3IEBA
IHZvaWQgbG93ZXJBZnRlclJlZ0FsbG9jKENvZGUmIGNvZGUpCiB7CiAgICAgUGhhc2VTY29wZSBw
aGFzZVNjb3BlKGNvZGUsICJsb3dlckFmdGVyUmVnQWxsb2MiKTsKIAotICAgIGlmICh2ZXJib3Nl
KQorICAgIGlmIChBaXJMb3dlckFmdGVyUmVnQWxsb2NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgZGF0YUxvZygiQ29kZSBiZWZvcmUgbG93ZXJBZnRlclJlZ0FsbG9jOlxuIiwgY29kZSk7CiAg
ICAgCiAgICAgYXV0byBpc1JlbGV2YW50ID0gW10gKEluc3QmIGluc3QpIC0+IGJvb2wgewpAQCAt
MjIxLDcgKzIyMyw3IEBAIHZvaWQgbG93ZXJBZnRlclJlZ0FsbG9jKENvZGUmIGNvZGUpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGFja1Nsb3RzLmFwcGVuZChzdGFja1Nsb3QpOwogICAgICAg
ICAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgICAgIGlmIChBaXJMb3dlckFmdGVyUmVnQWxsb2NJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygiUHJlLWNhbGwgcGFpcnMgZm9yICIsIGluc3QsICI6
ICIsIGxpc3REdW1wKHBhaXJzKSwgIlxuIik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydEluc3RzKApAQCAtMjczLDcgKzI3NSw3IEBAIHZvaWQg
bG93ZXJBZnRlclJlZ0FsbG9jKENvZGUmIGNvZGUpCiAgICAgICAgICAgICB9KTsKICAgICB9CiAK
LSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQWlyTG93ZXJBZnRlclJlZ0FsbG9jSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkNvZGUgYWZ0ZXIgbG93ZXJBZnRlclJlZ0FsbG9j
OlxuIiwgY29kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyU3RhY2tBbGxvY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyU3RhY2tBbGxvY2F0aW9uLmNwcAppbmRleCAzOTIyMjNjYTg4NTgwNWM1Zjk2ZDJmYmI4ODM5
ZDEyMDM5YzY2Y2NmLi42YjZhMjZhZTdlZmJiN2Q5ZjNmMmVhMWJlYTY2YmFlMzRkNThiNmY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclN0YWNrQWxsb2NhdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTdGFja0FsbG9jYXRp
b24uY3BwCkBAIC0zOCw3ICszOCw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBu
YW1lc3BhY2UgQWlyIHsKIAogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFs
c2U7CituYW1lc3BhY2UgQWlyU3RhY2tBbGxvY2F0aW9uSW50ZXJuYWwgeworc3RhdGljIGNvbnN0
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9u
Pgogdm9pZCB1cGRhdGVGcmFtZVNpemVCYXNlZE9uU3RhY2tTbG90c0ltcGwoQ29kZSYgY29kZSwg
Y29uc3QgQ29sbGVjdGlvbiYgY29sbGVjdGlvbikKQEAgLTU0LDcgKzU2LDcgQEAgdm9pZCB1cGRh
dGVGcmFtZVNpemVCYXNlZE9uU3RhY2tTbG90c0ltcGwoQ29kZSYgY29kZSwgY29uc3QgQ29sbGVj
dGlvbiYgY29sbGVjdGkKIGJvb2wgYXR0ZW1wdEFzc2lnbm1lbnQoCiAgICAgU3RhY2tTbG90KiBz
bG90LCBpbnRwdHJfdCBvZmZzZXRGcm9tRlAsIGNvbnN0IFZlY3RvcjxTdGFja1Nsb3QqPiYgb3Ro
ZXJTbG90cykKIHsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQWlyU3RhY2tBbGxvY2F0aW9u
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkF0dGVtcHRpbmcgdG8gYXNzaWdu
ICIsIHBvaW50ZXJEdW1wKHNsb3QpLCAiIHRvICIsIG9mZnNldEZyb21GUCwgIiB3aXRoIGludGVy
ZmVyZW5jZSAiLCBwb2ludGVyTGlzdER1bXAob3RoZXJTbG90cyksICJcbiIpOwogCiAgICAgLy8g
TmVlZCB0byBhbGlnbiBpdCB0byB0aGUgc2xvdCdzIGRlc2lyZWQgYWxpZ25tZW50LgpAQCAtNzIs
NyArNzQsNyBAQCBib29sIGF0dGVtcHRBc3NpZ25tZW50KAogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChBaXJTdGFja0FsbG9jYXRp
b25JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQXNzaWduZWQgIiwgcG9pbnRl
ckR1bXAoc2xvdCksICIgdG8gIiwgb2Zmc2V0RnJvbUZQLCAiXG4iKTsKICAgICBzbG90LT5zZXRP
ZmZzZXRGcm9tRlAob2Zmc2V0RnJvbUZQKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTgwLDcgKzgy
LDcgQEAgYm9vbCBhdHRlbXB0QXNzaWdubWVudCgKIAogdm9pZCBhc3NpZ24oU3RhY2tTbG90KiBz
bG90LCBjb25zdCBWZWN0b3I8U3RhY2tTbG90Kj4mIG90aGVyU2xvdHMpCiB7Ci0gICAgaWYgKHZl
cmJvc2UpCisgICAgaWYgKEFpclN0YWNrQWxsb2NhdGlvbkludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICBkYXRhTG9nKCJBdHRlbXB0aW5nIHRvIGFzc2lnbiAiLCBwb2ludGVyRHVtcChzbG90KSwg
IiB3aXRoIGludGVyZmVyZW5jZSAiLCBwb2ludGVyTGlzdER1bXAob3RoZXJTbG90cyksICJcbiIp
OwogICAgIAogICAgIGlmIChhdHRlbXB0QXNzaWdubWVudChzbG90LCAtc3RhdGljX2Nhc3Q8aW50
cHRyX3Q+KHNsb3QtPmJ5dGVTaXplKCkpLCBvdGhlclNsb3RzKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCAzNWZmYmYxYWJhYjgyZWQ3ZjQ0
NmI1NmI0ZWRjMTU1YTQ5ZmVkOGQwLi40MTk4NjU1MDQ3NDQzODc3ZWNhNjEzMGNjZmZhN2E1YWEy
M2Y4NGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2Uu
Y3BwCkBAIC01MSw3ICs1MSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCituYW1lc3BhY2UgQWNj
ZXNzQ2FzZUludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30K
IAogQWNjZXNzQ2FzZTo6QWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5
cGUgdHlwZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCkKICAgICA6IG1fdHlw
ZSh0eXBlKQpAQCAtNDA4LDcgKzQxMCw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGUoQWNj
ZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBs
KEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUg
c3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChBY2Nl
c3NDYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIlxuXG5HZW5lcmF0aW5n
IGNvZGUgZm9yOiAiLCAqdGhpcywgIlxuIik7CiAKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBHZW5l
cmF0ZWQpOyAvLyBXZSByZWx5IG9uIHRoZSBjYWxsZXJzIHNldHRpbmcgdGhpcyBmb3IgdXMuCkBA
IC03OTAsMTEgKzc5MiwxMSBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NH
ZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogCiAgICAgY2FzZSBSZXBsYWNlOiB7CiAgICAgICAgIGlm
IChJbmZlcnJlZFR5cGUqIHR5cGUgPSBzdHJ1Y3R1cmUoKS0+aW5mZXJyZWRUeXBlRm9yKGlkZW50
LmltcGwoKSkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEFj
Y2Vzc0Nhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJIYXZl
IHR5cGU6ICIsIHR5cGUtPmRlc2NyaXB0b3IoKSwgIlxuIik7CiAgICAgICAgICAgICBzdGF0ZS5m
YWlsQW5kUmVwYXRjaC5hcHBlbmQoCiAgICAgICAgICAgICAgICAgaml0LmJyYW5jaElmTm90VHlw
ZSh2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIHR5cGUtPmRlc2NyaXB0b3IoKSkpOwotICAgICAgICB9
IGVsc2UgaWYgKHZlcmJvc2UpCisgICAgICAgIH0gZWxzZSBpZiAoQWNjZXNzQ2FzZUludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiRG9uJ3QgaGF2ZSB0eXBlLlxuIik7CiAK
ICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG1fb2Zmc2V0KSkgewpAQCAtODIwLDExICs4MjIs
MTEgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRl
JiBzdGF0ZSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3Rl
cnMgPj0gNiB8fCAhc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgfHwgc3RydWN0dXJl
KCktPm91dE9mTGluZUNhcGFjaXR5KCkgPT0gbmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFj
aXR5KCkpOwogCiAgICAgICAgIGlmIChJbmZlcnJlZFR5cGUqIHR5cGUgPSBuZXdTdHJ1Y3R1cmUo
KS0+aW5mZXJyZWRUeXBlRm9yKGlkZW50LmltcGwoKSkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgaWYgKEFjY2Vzc0Nhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJIYXZlIHR5cGU6ICIsIHR5cGUtPmRlc2NyaXB0b3IoKSwgIlxu
Iik7CiAgICAgICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoCiAgICAgICAgICAg
ICAgICAgaml0LmJyYW5jaElmTm90VHlwZSh2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIHR5cGUtPmRl
c2NyaXB0b3IoKSkpOwotICAgICAgICB9IGVsc2UgaWYgKHZlcmJvc2UpCisgICAgICAgIH0gZWxz
ZSBpZiAoQWNjZXNzQ2FzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygi
RG9uJ3QgaGF2ZSB0eXBlLlxuIik7CiAKICAgICAgICAgLy8gTk9URTogVGhpcyBsb2dpYyBpcyBk
dXBsaWNhdGVkIGluIEFjY2Vzc0Nhc2U6OmRvZXNDYWxscygpLiBJdCdzIGltcG9ydGFudCB0aGF0
IGRvZXNDYWxscygpIGtub3dzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rU3RhdHVzLmNwcAppbmRleCBmMzRjMjc0MjA1M2NiMjkzZGFhNWMxNjM4NjZiZmFj
NGEwMjI1Njk4Li41M2I4NGQ5YzAzN2UxN2Y2YWU5M2RjODU1MTkyNzg4YjYzZTY3YWVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAK
QEAgLTM4LDcgKzM4LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK25hbWVzcGFjZSBDYWxsTGlu
a1N0YXR1c0ludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30K
IAogQ2FsbExpbmtTdGF0dXM6OkNhbGxMaW5rU3RhdHVzKEpTVmFsdWUgdmFsdWUpCiAgICAgOiBt
X2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQpAQCAtMjg5LDcgKzI5MSw3IEBAIHZvaWQgQ2FsbExp
bmtTdGF0dXM6OmNvbXB1dGVERkdTdGF0dXNlcygKICAgICBVTlVTRURfUEFSQU0oZGZnQ29kZUJs
b2NrKTsKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKICAgICAKLSAgICBpZiAodmVyYm9zZSkg
eworICAgIGlmIChDYWxsTGlua1N0YXR1c0ludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRh
dGFMb2coIkNvbnRleHQgbWFwOlxuIik7CiAgICAgICAgIENvbnRleHRNYXA6Oml0ZXJhdG9yIGl0
ZXIgPSBtYXAuYmVnaW4oKTsKICAgICAgICAgQ29udGV4dE1hcDo6aXRlcmF0b3IgZW5kID0gbWFw
LmVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRl
clNldHRlckFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCmluZGV4IGM0ZGE4MGVjYzE5YzIxNDdlMmZhN2I1ZDk5
Njg0Y2RmZWIyZTQ3ODAuLjYwNjY5MWIzYjIwM2FlZTFhY2JhMjc0ZjQ1NWM0YjRlZWM3N2Y3ZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVy
U2V0dGVyQWNjZXNzQ2FzZS5jcHAKQEAgLTM4LDcgKzM4LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKK25hbWVzcGFjZSBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlSW50ZXJuYWwgewogc3RhdGljIGNv
bnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSBh
Y2Nlc3NUeXBlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBib29sIHZpYVBy
b3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBKU09iamVjdCogY3VzdG9tU2xvdEJh
c2UpCiAgICAgOiBCYXNlKHZtLCBvd25lciwgYWNjZXNzVHlwZSwgb2Zmc2V0LCBzdHJ1Y3R1cmUs
IGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxTZXQpCkBAIC0xODUsNyArMTg3LDcg
QEAgdm9pZCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjplbWl0RE9NSklUR2V0dGVyKEFjY2Vzc0dl
bmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnMKICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6
OlByZXNlcnZlZFN0YXRlIHByZXNlcnZlZFN0YXRlID0KICAgICBhbGxvY2F0b3IucHJlc2VydmVS
ZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4
dHJhU3RhY2tTcGFjZTo6U3BhY2VGb3JDQ2FsbCk7CiAKLSAgICBpZiAodmVyYm9zZSkgeworICAg
IGlmIChHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAg
ZGF0YUxvZygiYmFzZUdQUiA9ICIsIGJhc2VHUFIsICJcbiIpOwogICAgICAgICBkYXRhTG9nKCJ2
YWx1ZVJlZ3MgPSAiLCB2YWx1ZVJlZ3MsICJcbiIpOwogICAgICAgICBkYXRhTG9nKCJzY3JhdGNo
R1BSID0gIiwgc2NyYXRjaEdQUiwgIlxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcAppbmRl
eCA2MTllYTVkOWNiNDdiMWYxOTViMGU4YjQ3ZDU5OTZjYTg1OWMzNGVmLi45Njc5NTIzNzc4OGNj
MTk2NTA3NDFiZGNmNjlhZTQ3Y2QyOGRhNGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAK
QEAgLTE4MiwxMyArMTgyLDE1IEBAIGJvb2wgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6Omlz
VmFsaWRBbmRXYXRjaGFibGUoKSBjb25zdAogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2Ug
PSBmYWxzZTsKK25hbWVzcGFjZSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFsIHsK
K3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogT2JqZWN0UHJvcGVydHlD
b25kaXRpb24gZ2VuZXJhdGVDb25kaXRpb24oCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBK
U09iamVjdCogb2JqZWN0LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBQcm9wZXJ0eUNvbmRpdGlv
bjo6S2luZCBjb25kaXRpb25LaW5kKQogewogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gb2Jq
ZWN0LT5zdHJ1Y3R1cmUoKTsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQ3JlYXRp
bmcgY29uZGl0aW9uICIsIGNvbmRpdGlvbktpbmQsICIgZm9yICIsIHBvaW50ZXJEdW1wKHN0cnVj
dHVyZSksICJcbiIpOwogCiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gcmVzdWx0OwpAQCAt
MjI2LDEyICsyMjgsMTIgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gZ2VuZXJhdGVDb25kaXRp
b24oCiAgICAgfQogCiAgICAgaWYgKCFyZXN1bHQuaXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQ
cm9wZXJ0eVdhdGNocG9pbnQoKSkgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYg
KE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICBkYXRhTG9nKCJGYWlsZWQgdG8gY3JlYXRlIGNvbmRpdGlvbjogIiwgcmVzdWx0LCAiXG4iKTsK
ICAgICAgICAgcmV0dXJuIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uKCk7CiAgICAgfQogCi0gICAg
aWYgKHZlcmJvc2UpCisgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIk5ldyBjb25kaXRpb246ICIsIHJlc3VsdCwgIlxu
Iik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI0OCwxMSArMjUwLDExIEBAIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRlQ29uZGl0aW9ucygKICAgICBWZWN0b3I8T2JqZWN0
UHJvcGVydHlDb25kaXRpb24+IGNvbmRpdGlvbnM7CiAgICAgCiAgICAgZm9yICg7OykgewotICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBzdHJ1
Y3R1cmU6ICIsIHBvaW50ZXJEdW1wKHN0cnVjdHVyZSksICJcbiIpOwogICAgICAgICAKICAgICAg
ICAgaWYgKHN0cnVjdHVyZS0+aXNQcm94eSgpKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgIGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkl0J3MgYSBwcm94eSwgc28gaW52YWxpZC5c
biIpOwogICAgICAgICAgICAgcmV0dXJuIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjppbnZh
bGlkKCk7CiAgICAgICAgIH0KQEAgLTI2MSwxMSArMjYzLDExIEBAIE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0IGdlbmVyYXRlQ29uZGl0aW9ucygKICAgICAgICAgCiAgICAgICAgIGlmICh2YWx1
ZS5pc051bGwoKSkgewogICAgICAgICAgICAgaWYgKCFwcm90b3R5cGUpIHsKLSAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
UmVhY2hlZCBlbmQgb2YgcHJvdG90eXBlIGNoYWluIGFzIGV4cGVjdGVkLCBkb25lLlxuIik7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgICAgIGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIlVuZXhwZWN0ZWRseSByZWFjaGVk
IGVuZCBvZiBwcm90b3R5cGUgY2hhaW4sIHNvIGludmFsaWQuXG4iKTsKICAgICAgICAgICAgIHJl
dHVybiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aW52YWxpZCgpOwogICAgICAgICB9CkBA
IC0yNzYsMzUgKzI3OCwzNSBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5lcmF0ZUNv
bmRpdGlvbnMoCiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7CiAgICAg
ICAgICAgICBpZiAoY29uY3VycmVuY3kgPT0gTWFpblRocmVhZCkgewogICAgICAgICAgICAgICAg
IGlmIChzdHJ1Y3R1cmUtPmhhc0JlZW5GbGF0dGVuZWRCZWZvcmUoKSkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCJEaWN0aW9uYXJ5IGhhcyBiZWVuIGZsYXR0ZW5lZCBiZWZvcmUsIHNvIGludmFs
aWQuXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0OjppbnZhbGlkKCk7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkZsYXR0
ZW5pbmcgIiwgcG9pbnRlckR1bXAoc3RydWN0dXJlKSk7CiAgICAgICAgICAgICAgICAgc3RydWN0
dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2bSwgb2JqZWN0KTsKICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAg
aWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2coIkNhbm5vdCBmbGF0dGVuIGRpY3Rpb25hcnkgd2hlbiBub3Qg
b24gbWFpbiB0aHJlYWQsIHNvIGludmFsaWQuXG4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmludmFsaWQoKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCiAgICAgICAgIGlmICghZnVuY3Rvcihjb25kaXRpb25zLCBvYmplY3QpKSB7Ci0g
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkZ1
bmN0b3IgZmFpbGVkLCBpbnZhbGlkLlxuIik7CiAgICAgICAgICAgICByZXR1cm4gT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQ6OmludmFsaWQoKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgaWYgKG9iamVjdCA9PSBwcm90b3R5cGUpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiUmVhY2hlZCBkZXNpcmVkIHByb3RvdHlwZSwg
ZG9uZS5cbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBp
ZiAodmVyYm9zZSkKKyAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiUmV0dXJuaW5nIGNvbmRpdGlvbnM6ICIsIGxpc3RE
dW1wKGNvbmRpdGlvbnMpLCAiXG4iKTsKICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQ6OmNyZWF0ZShjb25kaXRpb25zKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4IGZiMGI2YTlkOGMyZGRj
OGZjM2Y5YzkxOTFkYmYyMmI5YmQ0MDI5ODguLjQyMjgwYzVhZTZmNzZkYjY3MDNhNjAxNmQ1ODNj
MWIwYTAxZGMzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmNwcApAQCAtNDQsNyArNDQsOSBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAorbmFtZXNwYWNlIFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWwgewogc3RhdGljIGNvbnN0
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiB2b2lkIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6
OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKQEAgLTI0Nyw3ICsyNDksNyBAQCBBY2Nl
c3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcygKICAgICAgICAg
Y2FzZXNUb0FkZC5hcHBlbmQoV1RGTW92ZShteUNhc2UpKTsKICAgICB9CiAKLSAgICBpZiAodmVy
Ym9zZSkKKyAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgZGF0YUxvZygiY2FzZXNUb0FkZDogIiwgbGlzdER1bXAoY2FzZXNUb0FkZCksICJcbiIpOwog
CiAgICAgLy8gSWYgdGhlcmUgYXJlbid0IGFueSBjYXNlcyB0byBhZGQsIHRoZW4gZmFpbCBvbiB0
aGUgZ3JvdW5kcyB0aGF0IHRoZXJlJ3Mgbm8gcG9pbnQgdG8gZ2VuZXJhdGluZyBhCkBAIC0yNjMs
NyArMjY1LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRk
Q2FzZXMoCiAgICAgICAgIG1fbGlzdC5hcHBlbmQoV1RGTW92ZShjYXNlVG9BZGQpKTsKICAgICB9
CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkFmdGVyIGFkZENhc2VzOiBtX2xpc3Q6ICIs
IGxpc3REdW1wKG1fbGlzdCksICJcbiIpOwogCiAgICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25S
ZXN1bHQ6OkJ1ZmZlcmVkOwpAQCAtMzM0LDcgKzMzNiw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1
bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoCiB7CiAgICAgU3VwZXJTYW1wbGVyU2Nv
cGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAotICAgIGlmICh2ZXJib3NlKQorICAg
IGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9n
KCJSZWdlbmVyYXRlIHdpdGggbV9saXN0OiAiLCBsaXN0RHVtcChtX2xpc3QpLCAiXG4iKTsKICAg
ICAKICAgICBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUgc3RhdGUodm0pOwpAQCAtNDAyLDcgKzQwNCw3
IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUo
CiAgICAgfQogICAgIG1fbGlzdC5yZXNpemUoZHN0SW5kZXgpOwogICAgIAotICAgIGlmICh2ZXJi
b3NlKQorICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICBkYXRhTG9nKCJPcHRpbWl6ZWQgY2FzZXM6ICIsIGxpc3REdW1wKGNhc2VzKSwgIlxuIik7CiAg
ICAgCiAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSdyZSBjb252aW5jZWQgdGhhdCAnY2FzZXMnIGNv
bnRhaW5zIHRoZSBjYXNlcyB0aGF0IHdlIHdhbnQgdG8gSklUIG5vdyBhbmQgd2UKQEAgLTUxNyw3
ICs1MTksNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdl
bmVyYXRlKAogCiAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgY29kZUJsb2NrLCBKSVRD
b21waWxhdGlvbkNhbkZhaWwpOwogICAgIGlmIChsaW5rQnVmZmVyLmRpZEZhaWxUb0FsbG9jYXRl
KCkpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vz
c0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiRGlkIGZhaWwgdG8gYWxs
b2NhdGUuXG4iKTsKICAgICAgICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdhdmVV
cDsKICAgICB9CkBAIC01MjgsNyArNTMwLDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5
bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSgKIAogICAgIGxpbmtCdWZmZXIubGluayhmYWlsdXJl
LCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24oKSk7CiAgICAgCi0gICAgaWYgKHZlcmJv
c2UpCisgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
IGRhdGFMb2coRnVsbENvZGVPcmlnaW4oY29kZUJsb2NrLCBzdHViSW5mby5jb2RlT3JpZ2luKSwg
IjogR2VuZXJhdGluZyBwb2x5bW9ycGhpYyBhY2Nlc3Mgc3R1YiBmb3IgIiwgbGlzdER1bXAoY2Fz
ZXMpLCAiXG4iKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlID0gRklOQUxJWkVf
Q09ERV9GT1IoCkBAIC01NDQsNyArNTQ2LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5
bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSgKICAgICBtX3dhdGNocG9pbnRzID0gV1RGTW92ZShz
dGF0ZS53YXRjaHBvaW50cyk7CiAgICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5pc0VtcHR5
KCkpCiAgICAgICAgIG1fd2Vha1JlZmVyZW5jZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxX
cml0ZUJhcnJpZXI8SlNDZWxsPj4+KFdURk1vdmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsKLSAg
ICBpZiAodmVyYm9zZSkKKyAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgZGF0YUxvZygiUmV0dXJuaW5nOiAiLCBjb2RlLmNvZGUoKSwgIlxuIik7CiAg
ICAgCiAgICAgbV9saXN0ID0gV1RGTW92ZShjYXNlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcAppbmRleCA0MjNiYzIxMGVk
NDgzY2ExMTk3ZTM5OWI1OTU1NDY2NmNkZjM5NWM5Li4wNzY0NGEzMDdmOWNmNGU5YzVmMzJhNzFj
MTgxYzJiZjgzOTk1NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJvcGVydHlDb25kaXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHAKQEAgLTMyLDcgKzMyLDkgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKK25hbWVzcGFjZSBQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsIHsKIHN0YXRpYyBi
b29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogdm9pZCBQcm9wZXJ0eUNvbmRpdGlvbjo6ZHVtcElu
Q29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKIHsK
QEAgLTY1LDIwICs2NywyMCBAQCB2b2lkIFByb3BlcnR5Q29uZGl0aW9uOjpkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0CiBib29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1
bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNPYmplY3QqIGJhc2UpIGNvbnN0CiB7Ci0gICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoUHJv
cGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICBkYXRhTG9nKAogICAg
ICAgICAgICAgIkRldGVybWluaW5nIHZhbGlkaXR5IG9mICIsICp0aGlzLCAiIHdpdGggc3RydWN0
dXJlICIsIHBvaW50ZXJEdW1wKHN0cnVjdHVyZSksICIgYW5kIGJhc2UgIiwKICAgICAgICAgICAg
IEpTVmFsdWUoYmFzZSksICIgYXNzdW1pbmcgaW1wdXJlIHByb3BlcnR5IHdhdGNocG9pbnRzIGFy
ZSBzZXQuXG4iKTsKICAgICB9CiAgICAgCiAgICAgaWYgKCEqdGhpcykgewotICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgaWYgKFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICBkYXRhTG9nKCJJbnZhbGlkIGJlY2F1c2UgdW5zZXQuXG4iKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKICAgICBpZiAoIXN0cnVjdHVyZS0+cHJvcGVy
dHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRh
dGFMb2coIkludmFsaWQgYmVjYXVzZSBhY2Nlc3NlcyBhcmUgbm90IGNhY2hlYWJsZS5cbiIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtODgsNyArOTAsNyBAQCBib29sIFByb3Bl
cnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2lu
dCgKICAgICAgICAgdW5zaWduZWQgY3VycmVudEF0dHJpYnV0ZXM7CiAgICAgICAgIFByb3BlcnR5
T2Zmc2V0IGN1cnJlbnRPZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSh1aWQoKSwg
Y3VycmVudEF0dHJpYnV0ZXMpOwogICAgICAgICBpZiAoY3VycmVudE9mZnNldCAhPSBvZmZzZXQo
KSB8fCBjdXJyZW50QXR0cmlidXRlcyAhPSBhdHRyaWJ1dGVzKCkpIHsKLSAgICAgICAgICAgIGlm
ICh2ZXJib3NlKSB7CisgICAgICAgICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6
dmVyYm9zZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAg
ICJJbnZhbGlkIGJlY2F1c2Ugd2UgbmVlZCBvZmZzZXQsIGF0dHJpYnV0ZXMgdG8gYmUgIiwgb2Zm
c2V0KCksICIsICIsIGF0dHJpYnV0ZXMoKSwKICAgICAgICAgICAgICAgICAgICAgIiBidXQgdGhl
eSBhcmUgIiwgY3VycmVudE9mZnNldCwgIiwgIiwgY3VycmVudEF0dHJpYnV0ZXMsICJcbiIpOwpA
QCAtMTAwLDIwICsxMDIsMjAgQEAgYm9vbCBQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlk
QXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoCiAgICAgICAgIAogICAgIGNhc2UgQWJz
ZW5jZTogewogICAgICAgICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgewotICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJJbnZhbGlkIGJlY2F1c2Ug
aXQncyBhIGRpY3Rpb25hcnkuXG4iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQogCiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IGN1cnJlbnRPZmZzZXQgPSBzdHJ1Y3R1cmUt
PmdldENvbmN1cnJlbnRseSh1aWQoKSk7CiAgICAgICAgIGlmIChjdXJyZW50T2Zmc2V0ICE9IGlu
dmFsaWRPZmZzZXQpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYg
KFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0
YUxvZygiSW52YWxpZCBiZWNhdXNlIHRoZSBwcm9wZXJ0eSBleGlzdHMgYXQgb2Zmc2V0OiAiLCBj
dXJyZW50T2Zmc2V0LCAiXG4iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0
KCkgIT0gcHJvdG90eXBlKCkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAg
ICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAg
ICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGJlY2F1c2UgdGhl
IHByb3RvdHlwZSBpcyAiLCBzdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZSgpLCAiIGV2ZW4gdGhv
dWdoICIKICAgICAgICAgICAgICAgICAgICAgIml0IHNob3VsZCBoYXZlIGJlZW4gIiwgSlNWYWx1
ZShwcm90b3R5cGUoKSksICJcbiIpOwpAQCAtMTI2LDcgKzEyOCw3IEBAIGJvb2wgUHJvcGVydHlD
b25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KAog
ICAgIAogICAgIGNhc2UgQWJzZW5jZU9mU2V0RWZmZWN0OiB7CiAgICAgICAgIGlmIChzdHJ1Y3R1
cmUtPmlzRGljdGlvbmFyeSgpKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkludmFsaWQgYmVjYXVzZSBpdCdzIGEgZGljdGlvbmFyeS5cbiIpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0xMzUsNyArMTM3LDcgQEAgYm9v
bCBQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdh
dGNocG9pbnQoCiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IGN1cnJlbnRPZmZzZXQgPSBzdHJ1Y3R1
cmUtPmdldENvbmN1cnJlbnRseSh1aWQoKSwgY3VycmVudEF0dHJpYnV0ZXMpOwogICAgICAgICBp
ZiAoY3VycmVudE9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAoY3Vy
cmVudEF0dHJpYnV0ZXMgJiAoUmVhZE9ubHkgfCBBY2Nlc3NvciB8IEN1c3RvbUFjY2Vzc29yKSkg
ewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgaWYgKFBy
b3BlcnR5Q29uZGl0aW9uSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGJlY2F1c2Ugd2UgZXhw
ZWN0ZWQgbm90IHRvIGhhdmUgYSBzZXR0ZXIsIGJ1dCB3ZSBoYXZlIG9uZSBhdCBvZmZzZXQgIiwK
ICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRPZmZzZXQsICIgd2l0aCBhdHRyaWJ1dGVz
ICIsIGN1cnJlbnRBdHRyaWJ1dGVzLCAiXG4iKTsKQEAgLTE0NSw3ICsxNDcsNyBAQCBib29sIFBy
b3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hw
b2ludCgKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+c3RvcmVk
UHJvdG90eXBlT2JqZWN0KCkgIT0gcHJvdG90eXBlKCkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJi
b3NlKSB7CisgICAgICAgICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9z
ZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICJJbnZh
bGlkIGJlY2F1c2UgdGhlIHByb3RvdHlwZSBpcyAiLCBzdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlw
ZSgpLCAiIGV2ZW4gdGhvdWdoICIKICAgICAgICAgICAgICAgICAgICAgIml0IHNob3VsZCBoYXZl
IGJlZW4gIiwgSlNWYWx1ZShwcm90b3R5cGUoKSksICJcbiIpOwpAQCAtMTYwLDcgKzE2Miw3IEBA
IGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVy
dHlXYXRjaHBvaW50KAogICAgICAgICBpZiAoIWJhc2UgfHwgYmFzZS0+c3RydWN0dXJlKCkgIT0g
c3RydWN0dXJlKSB7CiAgICAgICAgICAgICAvLyBDb25zZXJ2YXRpdmVseSByZXR1cm4gZmFsc2Us
IHNpbmNlIHdlIGNhbm5vdCB2ZXJpZnkgdGhpcyBvbmUgd2l0aG91dCBoYXZpbmcgdGhlCiAgICAg
ICAgICAgICAvLyBvYmplY3QuCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAg
ICAgaWYgKFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAg
ICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBiZWNhdXNlIHdlIGRv
bid0IGhhdmUgYSBiYXNlIG9yIHRoZSBiYXNlIGhhcyB0aGUgd3Jvbmcgc3RydWN0dXJlOiAiLAog
ICAgICAgICAgICAgICAgICAgICBSYXdQb2ludGVyKGJhc2UpLCAiXG4iKTsKQEAgLTE3Myw3ICsx
NzUsNyBAQCBib29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVy
ZVByb3BlcnR5V2F0Y2hwb2ludCgKICAgICAgICAgCiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IGN1
cnJlbnRPZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSh1aWQoKSk7CiAgICAgICAg
IGlmIChjdXJyZW50T2Zmc2V0ID09IGludmFsaWRPZmZzZXQpIHsKLSAgICAgICAgICAgIGlmICh2
ZXJib3NlKSB7CisgICAgICAgICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVy
Ym9zZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICJJ
bnZhbGlkIGJlY2F1c2UgdGhlIGJhc2Ugbm8gbG9uZyBhcHBlYXJzIHRvIGhhdmUgIiwgdWlkKCks
ICIgb24gaXRzIHN0cnVjdHVyZTogIiwKICAgICAgICAgICAgICAgICAgICAgICAgIFJhd1BvaW50
ZXIoYmFzZSksICJcbiIpOwpAQCAtMTgzLDcgKzE4NSw3IEBAIGJvb2wgUHJvcGVydHlDb25kaXRp
b246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KAogCiAgICAg
ICAgIEpTVmFsdWUgY3VycmVudFZhbHVlID0gYmFzZS0+Z2V0RGlyZWN0KGN1cnJlbnRPZmZzZXQp
OwogICAgICAgICBpZiAoY3VycmVudFZhbHVlICE9IHJlcXVpcmVkVmFsdWUoKSkgewotICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbklu
dGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAg
ICAgICAgICAgIkludmFsaWQgYmVjYXVzZSB0aGUgdmFsdWUgaXMgIiwgY3VycmVudFZhbHVlLCAi
IGJ1dCB3ZSByZXF1aXJlICIsIHJlcXVpcmVkVmFsdWUoKSwKICAgICAgICAgICAgICAgICAgICAg
IlxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmNwcAppbmRleCAyMTg3NzUxNzZmMjc3ZTM2NjhkYzEyZGViNjY2NWRhMTRlNDdk
MWI3Li4zZTNiZjI0M2FhOTVhMjkzZWIyNmFkYzI4NWFhOTk2MDYwZTg5ZDVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAK
QEAgLTM1LDcgKzM1LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBFTkFCTEUoSklUKQogCitu
YW1lc3BhY2UgU3RydWN0dXJlU3R1YkluZm9JbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2
ZXJib3NlID0gZmFsc2U7Cit9CiAKIFN0cnVjdHVyZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHViSW5m
byhBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiAgICAgOiBjYWxsU2l0ZUluZGV4KFVJTlRfTUFYKQpA
QCAtMTE1LDcgKzExNyw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1Yklu
Zm86OmFkZEFjY2Vzc0Nhc2UoCiB7CiAgICAgVk0mIHZtID0gKmNvZGVCbG9jay0+dm0oKTsKICAg
ICAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoU3RydWN0dXJlU3R1YkluZm9JbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQWRkaW5nIGFjY2VzcyBjYXNlOiAiLCBhY2Nlc3ND
YXNlLCAiXG4iKTsKICAgICAKICAgICBpZiAoIWFjY2Vzc0Nhc2UpCkBAIC0xMjYsNyArMTI4LDcg
QEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2Fz
ZSgKICAgICBpZiAoY2FjaGVUeXBlID09IENhY2hlVHlwZTo6U3R1YikgewogICAgICAgICByZXN1
bHQgPSB1LnN0dWItPmFkZENhc2UobG9ja2VyLCB2bSwgY29kZUJsb2NrLCAqdGhpcywgaWRlbnQs
IFdURk1vdmUoYWNjZXNzQ2FzZSkpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgZGF0YUxvZygiSGFkIHN0dWIsIHJlc3VsdDogIiwgcmVzdWx0LCAiXG4iKTsKIAogICAgICAg
ICBpZiAoIXJlc3VsdC5idWZmZXJlZCgpKSB7CkBAIC0xNDcsNyArMTQ5LDcgQEAgQWNjZXNzR2Vu
ZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgKICAgICAgICAg
CiAgICAgICAgIHJlc3VsdCA9IGFjY2Vzcy0+YWRkQ2FzZXMobG9ja2VyLCB2bSwgY29kZUJsb2Nr
LCAqdGhpcywgaWRlbnQsIFdURk1vdmUoYWNjZXNzQ2FzZXMpKTsKICAgICAgICAgCi0gICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoU3RydWN0dXJlU3R1YkluZm9JbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkNyZWF0ZWQgc3R1YiwgcmVzdWx0OiAiLCByZXN1
bHQsICJcbiIpOwogCiAgICAgICAgIGlmICghcmVzdWx0LmJ1ZmZlcmVkKCkpIHsKQEAgLTE2NCw3
ICsxNjYsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRB
Y2Nlc3NDYXNlKAogICAgIC8vIElmIHdlIGRpZG4ndCBidWZmZXIgYW55IGNhc2VzIHRoZW4gYmFp
bC4gSWYgdGhpcyBtYWRlIG5vIGNoYW5nZXMgdGhlbiB3ZSdsbCBqdXN0IHRyeSBhZ2FpbgogICAg
IC8vIHN1YmplY3QgdG8gY29vbC1kb3duLgogICAgIGlmICghcmVzdWx0LmJ1ZmZlcmVkKCkpIHsK
LSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiRGlkbid0IGJ1ZmZlciBhbnl0aGlu
ZywgYmFpbGluZy5cbiIpOwogICAgICAgICBidWZmZXJlZFN0cnVjdHVyZXMuY2xlYXIoKTsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE3Miw3ICsxNzQsNyBAQCBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAogICAgIAogICAgIC8vIFRo
ZSBidWZmZXJpbmcgY291bnRkb3duIHRlbGxzIHVzIGlmIHdlIHNob3VsZCBiZSByZXBhdGNoaW5n
IG5vdy4KICAgICBpZiAoYnVmZmVyaW5nQ291bnRkb3duKSB7Ci0gICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICBpZiAoU3RydWN0dXJlU3R1YkluZm9JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgIGRhdGFMb2coIkNvdW50ZG93biBpcyB0b28gaGlnaDogIiwgYnVmZmVyaW5nQ291bnRk
b3duLCAiLlxuIik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMTgzLDcgKzE4
NSw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vz
c0Nhc2UoCiAgICAgCiAgICAgcmVzdWx0ID0gdS5zdHViLT5yZWdlbmVyYXRlKGxvY2tlciwgdm0s
IGNvZGVCbG9jaywgKnRoaXMsIGlkZW50KTsKICAgICAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBp
ZiAoU3RydWN0dXJlU3R1YkluZm9JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygi
UmVnZW5lcmF0aW9uIHJlc3VsdDogIiwgcmVzdWx0LCAiXG4iKTsKICAgICAKICAgICBSRUxFQVNF
X0FTU0VSVCghcmVzdWx0LmJ1ZmZlcmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKaW5kZXggNTE2
NTBmNTg1ZDRlOGVhNmEzMzllN2Y2MzAyOGVhMDhlZDU4ZWE0Zi4uYTQ1N2Y4ZjU3ZDQ5Y2MzZTI3
MzM5NzZiODBiMmZkOTg2M2E0NjBhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC01MCw3ICs1
MCw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAot
Ym9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgREZHQXJndW1lbnRzRWxpbWluYXRpb25Q
aGFzZUludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAog
Y2xhc3MgQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJsaWM6
CkBAIC02NSw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdmVyc2lvbiBvdmVyIExvYWRT
dG9yZS4KICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fZm9y
bSA9PSBTU0EpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYg
KERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAg
ICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIGFyZ3VtZW50cyBlbGltaW5hdGlvbjpcbiIpOwog
ICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KQEAgLTE1Nyw3ICsxNTksNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkNhbmRpZGF0ZXM6ICIsIGxpc3RE
dW1wKG1fY2FuZGlkYXRlcyksICJcbiIpOwogICAgIH0KIApAQCAtMjEwLDcgKzIxMiw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB0cmFuc2l0aXZlbHlSZW1vdmVDYW5kaWRhdGUoTm9kZSogbm9kZSwg
Tm9kZSogc291cmNlID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGJvb2wgcmVtb3ZlZCA9IG1f
Y2FuZGlkYXRlcy5yZW1vdmUobm9kZSk7Ci0gICAgICAgIGlmIChyZW1vdmVkICYmIHZlcmJvc2Ug
JiYgc291cmNlKQorICAgICAgICBpZiAocmVtb3ZlZCAmJiBERkdBcmd1bWVudHNFbGltaW5hdGlv
blBoYXNlSW50ZXJuYWw6OnZlcmJvc2UgJiYgc291cmNlKQogICAgICAgICAgICAgZGF0YUxvZygi
ZWxpbWluYXRpbmcgY2FuZGlkYXRlOiAiLCBub2RlLCAiIGJlY2F1c2UgaXQgZXNjYXBlcyBmcm9t
OiAiLCBzb3VyY2UsICJcbiIpOwogCiAgICAgICAgIGlmIChyZW1vdmVkKQpAQCAtNDE4LDcgKzQy
MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkFmdGVyIGVzY2FwZSBhbmFseXNpczog
IiwgbGlzdER1bXAobV9jYW5kaWRhdGVzKSwgIlxuIik7CiAgICAgfQogCkBAIC01MTksNyArNTIx
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHRoaXMgYXJndW1lbnRz
IGFsbG9jYXRpb24sIGFuZCB3ZSdkIGhhdmUgdG8gZXhhbWluZSBldmVyeSBub2RlIGluIHRoZSBi
bG9jaywKICAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiB3ZSBjYW4ganVzdCBlbGltaW5hdGUg
dGhlIGNhbmRpZGF0ZS4KICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGVJbmRleCA9PSBibG9j
ay0+c2l6ZSgpICYmIGNhbmRpZGF0ZS0+b3duZXIgIT0gYmxvY2spIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR0Fy
Z3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCJlbGltaW5hdGluZyBjYW5kaWRhdGU6ICIsIGNhbmRpZGF0
ZSwgIiBiZWNhdXNlIGl0IGlzIGNsb2JiZXJlZCBieTogIiwgYmxvY2stPmF0KG5vZGVJbmRleCks
ICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGl2ZWx5UmVtb3ZlQ2FuZGlk
YXRlKGNhbmRpZGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01NDYs
NyArNTQ4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb09wQ2xv
YmJlcml6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0
aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiZWxpbWluYXRpbmcgY2FuZGlkYXRlOiAiLCBjYW5kaWRhdGUsICIgYmVjYXVz
ZSBpdCBpcyBjbG9iYmVyZWQgYnkgIiwgYmxvY2stPmF0KG5vZGVJbmRleCksICJcbiIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpdmVseVJlbW92ZUNhbmRpZGF0ZShjYW5k
aWRhdGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTU2OCw3ICs1
NzAsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBzaW5jZSB0aG9zZSBhdmFpbGFiaWxpdGllcyBz
cGVhayBvZiB0aGUgc3RhY2sgYmVmb3JlIHRoZSBvcHRpbWl6aW5nIGNvbXBpbGVyIHN0YWNrIGZy
YW1lIGlzCiAgICAgICAgIC8vIHRvcm4gZG93bi4KIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgICAgIGRhdGFMb2coIkFmdGVyIGludGVyZmVyZW5jZSBhbmFseXNpczogIiwgbGlz
dER1bXAobV9jYW5kaWRhdGVzKSwgIlxuIik7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAxYjVkN2FlZWI4Mjcx
YTFhN2Y3NDIyMjIyNmJkYTdkNWE1NzIwZTA4Li5lMTQ0NzA3YWU5YjY2YWJiZWM5ZjE2Y2UwZWEy
YTdmMDE0ZWRlNzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcApAQCAtNzAsMjIgKzcwLDE4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAotTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBORVZFUl9J
TkxJTkUgdm9pZCBjcmFzaCgpCi17Ci0gICAgQ1JBU0goKTsKLX0KLQotI3VuZGVmIFJFTEVBU0Vf
QVNTRVJUCi0jZGVmaW5lIFJFTEVBU0VfQVNTRVJUKGFzc2VydGlvbikgZG8geyBcCisjZGVmaW5l
IFBBUlNFUl9BU1NFUlQoYXNzZXJ0aW9uLCAuLi4pIGRvIHsgICAgICAgICAgXAogICAgIGlmIChV
TkxJS0VMWSghKGFzc2VydGlvbikpKSB7IFwKICAgICAgICAgV1RGUmVwb3J0QXNzZXJ0aW9uRmFp
bHVyZShfX0ZJTEVfXywgX19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJT04sICNhc3NlcnRpb24p
OyBcCi0gICAgICAgIGNyYXNoKCk7IFwKKyAgICAgICAgQ1JBU0hfV0lUSF9JTkZPKF9fVkFfQVJH
U19fKTsgXAogICAgIH0gXAogfSB3aGlsZSAoMCkKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNl
CiAKK25hbWVzcGFjZSBERkdCeXRlQ29kZVBhcnNlckludGVybmFsIHsKIHN0YXRpYyBjb25zdCBi
b29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogY2xhc3MgQ29uc3RhbnRCdWZmZXJLZXkgewogcHVi
bGljOgpAQCAtMTIwNyw3ICsxMjAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICwgbV92YWx1
ZSh2YWx1ZSkKICAgICAgICAgICAgICwgbV9zZXRNb2RlKHNldE1vZGUpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wZXJhbmQuaXNWYWxpZCgpKTsKKyAgICAgICAgICAg
IFBBUlNFUl9BU1NFUlQob3BlcmFuZC5pc1ZhbGlkKCkpOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBOb2RlKiBleGVjdXRlKEJ5dGVDb2RlUGFyc2VyKiBwYXJzZXIpCkBAIC0xNDMwLDE4
ICsxNDI2LDE4IEBAIHVuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZh
cmlhbnQgY2FsbGVlLCBpbnQsIElubGluZUNhbGxGcmFtZTo6CiB7CiAgICAgQ2FsbE1vZGUgY2Fs
bE1vZGUgPSBJbmxpbmVDYWxsRnJhbWU6OmNhbGxNb2RlRm9yKGtpbmQpOwogICAgIENvZGVTcGVj
aWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gc3BlY2lhbGl6YXRpb25LaW5kRm9y
KGNhbGxNb2RlKTsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQ29uc2lkZXJpbmcgaW5saW5pbmcg
IiwgY2FsbGVlLCAiIGludG8gIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgCiAg
ICAgaWYgKG1faGFzRGVidWdnZXJFbmFibGVkKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlIGRlYnVnZ2VyIGlzIGluIHVzZS5cbiIp
OwogICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQogCiAgICAgRnVuY3Rpb25FeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLmZ1bmN0aW9uRXhlY3V0YWJsZSgpOwogICAgIGlmICgh
ZXhlY3V0YWJsZSkgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVD
b2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFp
bGluZyBiZWNhdXNlIHRoZXJlIGlzIG5vIGZ1bmN0aW9uIGV4ZWN1dGFibGUuXG4iKTsKICAgICAg
ICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KQEAgLTE0NTUsMTQgKzE0NTEsMTQgQEAgdW5zaWdu
ZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCwg
SW5saW5lQ2FsbEZyYW1lOjoKICAgICAvLyBpdCdzIGEgcmFyZSBjYXNlIGJlY2F1c2Ugd2UgZXhw
ZWN0IHRoYXQgYW55IGhvdCBjYWxsZWVzIHdvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNvbXBpbGVk
LgogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxv
Y2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICBpZiAoIWNvZGVCbG9jaykgewotICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIG5vIGNvZGUg
YmxvY2sgYXZhaWxhYmxlLlxuIik7CiAgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAK
ICAgICBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsID0gaW5saW5lRnVuY3Rpb25Gb3JD
YXBhYmlsaXR5TGV2ZWwoCiAgICAgICAgIGNvZGVCbG9jaywgc3BlY2lhbGl6YXRpb25LaW5kLCBj
YWxsZWUuaXNDbG9zdXJlQ2FsbCgpKTsKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChERkdC
eXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2coIiAgICBD
YWxsIG1vZGU6ICIsIGNhbGxNb2RlLCAiXG4iKTsKICAgICAgICAgZGF0YUxvZygiICAgIElzIGNs
b3N1cmUgY2FsbDogIiwgY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSwgIlxuIik7CiAgICAgICAgIGRh
dGFMb2coIiAgICBDYXBhYmlsaXR5IGxldmVsOiAiLCBjYXBhYmlsaXR5TGV2ZWwsICJcbiIpOwpA
QCAtMTQ3Miw3ICsxNDY4LDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29z
dChDYWxsVmFyaWFudCBjYWxsZWUsIGludCwgSW5saW5lQ2FsbEZyYW1lOjoKICAgICAgICAgZGF0
YUxvZygiICAgIElzIGlubGluaW5nIGNhbmRpZGF0ZTogIiwgY29kZUJsb2NrLT5vd25lclNjcmlw
dEV4ZWN1dGFibGUoKS0+aXNJbmxpbmluZ0NhbmRpZGF0ZSgpLCAiXG4iKTsKICAgICB9CiAgICAg
aWYgKCFjYW5JbmxpbmUoY2FwYWJpbGl0eUxldmVsKSkgewotICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyBub3QgaW5s
aW5lYWJsZS5cbiIpOwogICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQpAQCAtMTQ4Miw3
ICsxNDc4LDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFy
aWFudCBjYWxsZWUsIGludCwgSW5saW5lQ2FsbEZyYW1lOjoKICAgICAvLyBwdXJwb3NlIG9mIHVu
c2V0dGluZyBTQUJJLgogICAgIGlmICghaXNTbWFsbEVub3VnaFRvSW5saW5lQ29kZUludG8obV9j
b2RlQmxvY2spKSB7CiAgICAgICAgIGNvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQg
PSBmYWxzZTsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdCeXRlQ29kZVBh
cnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcg
YmVjYXVzZSB0aGUgY2FsbGVyIGlzIHRvbyBsYXJnZS5cbiIpOwogICAgICAgICByZXR1cm4gVUlO
VF9NQVg7CiAgICAgfQpAQCAtMTUwNiw3ICsxNTAyLDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJz
ZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCwgSW5saW5lQ2FsbEZyYW1l
OjoKICAgICBmb3IgKElubGluZVN0YWNrRW50cnkqIGVudHJ5ID0gbV9pbmxpbmVTdGFja1RvcDsg
ZW50cnk7IGVudHJ5ID0gZW50cnktPm1fY2FsbGVyKSB7CiAgICAgICAgICsrZGVwdGg7CiAgICAg
ICAgIGlmIChkZXB0aCA+PSBPcHRpb25zOjptYXhpbXVtSW5saW5pbmdEZXB0aCgpKSB7Ci0gICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlcklu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJl
Y2F1c2UgZGVwdGggZXhjZWVkZWQuXG4iKTsKICAgICAgICAgICAgIHJldHVybiBVSU5UX01BWDsK
ICAgICAgICAgfQpAQCAtMTUxNCwxNCArMTUxMCwxNCBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNl
cjo6aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50LCBJbmxpbmVDYWxsRnJhbWU6
OgogICAgICAgICBpZiAoZW50cnktPmV4ZWN1dGFibGUoKSA9PSBleGVjdXRhYmxlKSB7CiAgICAg
ICAgICAgICArK3JlY3Vyc2lvbjsKICAgICAgICAgICAgIGlmIChyZWN1cnNpb24gPj0gT3B0aW9u
czo6bWF4aW11bUlubGluaW5nUmVjdXJzaW9uKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBy
ZWN1cnNpb24gZGV0ZWN0ZWQuXG4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gVUlOVF9NQVg7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgaWYgKHZlcmJvc2Up
CisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRh
dGFMb2coIiAgICBJbmxpbmluZyBzaG91bGQgYmUgcG9zc2libGUuXG4iKTsKICAgICAKICAgICAv
LyBJdCBtaWdodCBiZSBwb3NzaWJsZSB0byBpbmxpbmUuCkBAIC0xNjE4LDExICsxNjE0LDExIEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGlu
dCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyCiAgICAgaW5saW5lVmFyaWFibGVEYXRhLmFyZ3VtZW50
UG9zaXRpb25TdGFydCA9IGFyZ3VtZW50UG9zaXRpb25TdGFydDsKICAgICBpbmxpbmVWYXJpYWJs
ZURhdGEuY2FsbGVlVmFyaWFibGUgPSAwOwogICAgIAotICAgIFJFTEVBU0VfQVNTRVJUKAorICAg
IFBBUlNFUl9BU1NFUlQoCiAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZy
YW1lLT5pc0Nsb3N1cmVDYWxsCiAgICAgICAgID09IGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpOwog
ICAgIGlmIChjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKSB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KGNhbGxlZVZhcmlhYmxlKTsKKyAgICAgICAgUEFSU0VSX0FTU0VSVChjYWxsZWVWYXJpYWJsZSk7
CiAgICAgICAgIGlubGluZVZhcmlhYmxlRGF0YS5jYWxsZWVWYXJpYWJsZSA9IGNhbGxlZVZhcmlh
YmxlOwogICAgIH0KICAgICAKQEAgLTE2NjksNyArMTY2NSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBD
YWxsVmFyCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBSZXB1cnBvc2luZyBsYXN0
IGJsb2NrIGZyb20gIiwgbGFzdEJsb2NrLT5ieXRlY29kZUJlZ2luLCAiIHRvICIsIG1fY3VycmVu
dEluZGV4LCAiXG4iKTsKICAgICAgICAgICAgIGxhc3RCbG9jay0+Ynl0ZWNvZGVCZWdpbiA9IG1f
Y3VycmVudEluZGV4OwogICAgICAgICAgICAgaWYgKGNhbGxlckxpbmthYmlsaXR5ID09IENhbGxl
ckRvZXNOb3JtYWxMaW5raW5nKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgICAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIkFkZGluZyB1bmxpbmtlZCBibG9jayAiLCBSYXdQb2lu
dGVyKG1fZ3JhcGgubGFzdEJsb2NrKCkpLCAiIChvbmUgcmV0dXJuKVxuIik7CiAgICAgICAgICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5k
KFVubGlua2VkQmxvY2sobV9ncmFwaC5sYXN0QmxvY2soKSkpOwogICAgICAgICAgICAgfQpAQCAt
MTY5OSwxNCArMTY5NSwxNCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUq
IGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcgogICAgICAgICBBU1NF
UlQoIW5vZGUtPnRhcmdldEJsb2NrKCkpOwogICAgICAgICBub2RlLT50YXJnZXRCbG9jaygpID0g
YmxvY2sucHRyKCk7CiAgICAgICAgIGlubGluZVN0YWNrRW50cnkubV91bmxpbmtlZEJsb2Nrc1tp
XS5tX25lZWRzRWFybHlSZXR1cm5MaW5raW5nID0gZmFsc2U7Ci0gICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9pbnRlcihibG9ja1RvTGluayksICIgYXMg
bGlua2VkIChqdW1wcyB0byByZXR1cm4pXG4iKTsKICAgICAgICAgYmxvY2tUb0xpbmstPmRpZExp
bmsoKTsKICAgICB9CiAgICAgCiAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jay5wdHIoKTsKICAg
ICBBU1NFUlQobV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0
cy5pc0VtcHR5KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5n
VGFyZ2V0cy5sYXN0KCktPmJ5dGVjb2RlQmVnaW4gPCBuZXh0T2Zmc2V0KTsKLSAgICBpZiAodmVy
Ym9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgZGF0YUxvZygiQWRkaW5nIHVubGlua2VkIGJsb2NrICIsIFJhd1BvaW50ZXIoYmxvY2sucHRy
KCkpLCAiIChtYW55IHJldHVybnMpXG4iKTsKICAgICBpZiAoY2FsbGVyTGlua2FiaWxpdHkgPT0g
Q2FsbGVyRG9lc05vcm1hbExpbmtpbmcpIHsKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9j
YWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2sucHRyKCkp
KTsKQEAgLTE3NDIsNyArMTczOCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lu
bGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kCiAgICAgaWYg
KCFpbmxpbmluZ0JhbGFuY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAo
dmVyYm9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgZGF0YUxvZygiICAgIENvbnNpZGVyaW5nIGNhbGxlZSAiLCBjYWxsZWUsICJcbiIpOwog
ICAgIAogICAgIC8vIEludHJpbnNpY3MgYW5kIGludGVybmFsIGZ1bmN0aW9ucyBjYW4gb25seSBi
ZSBpbmxpbmVkIGlmIHdlJ3JlIG5vdCBkb2luZyB2YXJhcmdzLiBUaGlzIGlzIGJlY2F1c2UKQEAg
LTE3NjIsNDAgKzE3NTgsNDAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5l
Q2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQKICAgICAKICAgICAg
ICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLmludGVybmFsRnVuY3Rp
b24oKSkgewogICAgICAgICAgICAgaWYgKGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihj
YWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFuZCwgZnVuY3Rpb24sIHJlZ2lzdGVyT2Zmc2V0LCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kLCBwcmVkaWN0aW9u
LCBpbnNlcnRDaGVja3NXaXRoQWNjb3VudGluZykpIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChkaWRJbnNlcnRDaGVja3MpOworICAgICAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQo
ZGlkSW5zZXJ0Q2hlY2tzKTsKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNh
bGxUYXJnZXROb2RlKTsKICAgICAgICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdp
c3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgICAgICAgICAgICAg
IGlubGluaW5nQmFsYW5jZS0tOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7Cisg
ICAgICAgICAgICBQQVJTRVJfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgCiAgICAgICAgIEludHJpbnNpYyBpbnRyaW5z
aWMgPSBjYWxsZWUuaW50cmluc2ljRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAgICAgIGlm
IChpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMpIHsKICAgICAgICAgICAgIGlmIChoYW5kbGVJbnRy
aW5zaWNDYWxsKGNhbGxUYXJnZXROb2RlLCByZXN1bHRPcGVyYW5kLCBpbnRyaW5zaWMsIHJlZ2lz
dGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbiwgaW5zZXJ0
Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
ZGlkSW5zZXJ0Q2hlY2tzKTsKKyAgICAgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKGRpZEluc2Vy
dENoZWNrcyk7CiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0
Tm9kZSk7CiAgICAgICAgICAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZz
ZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKICAgICAgICAgICAgICAgICBpbmxpbmlu
Z0JhbGFuY2UtLTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CisgICAgICAg
ICAgICBQQVJTRVJfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOwogICAgICAgICAgICAgLy8gV2Ug
bWlnaHQgc3RpbGwgdHJ5IHRvIGlubGluZSB0aGUgSW50cmluc2ljIGJlY2F1c2UgaXQgbWlnaHQg
YmUgYSBidWlsdGluIEpTIGZ1bmN0aW9uLgogICAgICAgICB9CiAKICAgICAgICAgaWYgKE9wdGlv
bnM6OnVzZURPTUpJVCgpKSB7CiAgICAgICAgICAgICBpZiAoY29uc3QgRE9NSklUOjpTaWduYXR1
cmUqIHNpZ25hdHVyZSA9IGNhbGxlZS5zaWduYXR1cmVGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKSkg
ewogICAgICAgICAgICAgICAgIGlmIChoYW5kbGVET01KSVRDYWxsKGNhbGxUYXJnZXROb2RlLCBy
ZXN1bHRPcGVyYW5kLCBzaWduYXR1cmUsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgcHJlZGljdGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRpZEluc2VydENoZWNrcyk7CisgICAg
ICAgICAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKICAgICAgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7CiAgICAgICAg
ICAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAgICAgICAgICAgICAgICAgIGlubGluaW5nQmFsYW5j
ZS0tOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CisgICAg
ICAgICAgICAgICAgUEFSU0VSX0FTU0VSVCghZGlkSW5zZXJ0Q2hlY2tzKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KQEAgLTE4MTcsMjEgKzE4MTMsMjEgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50c0Fy
Z3VtZW50LCB1bnNpZ25lZCBhcmd1bWVudHNPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywKICAgICB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBOb2RlVHlwZSBjYWxsT3AsIElubGlu
ZUNhbGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogewotICAg
IGlmICh2ZXJib3NlKSB7CisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJv
c2UpIHsKICAgICAgICAgZGF0YUxvZygiSGFuZGxpbmcgaW5saW5pbmcuLi5cbiIpOwogICAgICAg
ICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgfQog
ICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2Fs
bEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7CiAgICAgCiAgICAgaWYgKCFjYWxs
TGlua1N0YXR1cy5zaXplKCkpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChE
RkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygi
QmFpbGluZyBpbmxpbmluZy5cbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAg
IAogICAgIGlmIChJbmxpbmVDYWxsRnJhbWU6OmlzVmFyYXJncyhraW5kKQogICAgICAgICAmJiBj
YWxsTGlua1N0YXR1cy5tYXhOdW1Bcmd1bWVudHMoKSA+IE9wdGlvbnM6Om1heGltdW1WYXJhcmdz
Rm9ySW5saW5pbmcoKSkgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5
dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJCYWls
aW5nIGlubGluaW5nIGJlY2F1c2Ugb2YgdmFyYXJncy5cbiIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQpAQCAtMTk1MCw3ICsxOTQ2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW5saW5pbmcoCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9KTsKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR0J5
dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkRv
bmUgaW5saW5pbmcgKHNpbXBsZSkuXG4iKTsKICAgICAgICAgICAgIGRhdGFMb2coIlN0YWNrOiAi
LCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICAgICAgICAgIGRhdGFMb2coIlJlc3Vs
dDogIiwgcmVzdWx0LCAiXG4iKTsKQEAgLTE5NjYsNyArMTk2Miw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgIC8vIGFsc28uCiAgICAgaWYgKCFpc0ZUTChtX2dy
YXBoLm1fcGxhbi5tb2RlKSB8fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWNDYWxsSW5saW5pbmco
KQogICAgICAgICB8fCBJbmxpbmVDYWxsRnJhbWU6OmlzVmFyYXJncyhraW5kKSkgewotICAgICAg
ICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6
dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiQmFpbGluZyBpbmxpbmluZyAoaGFyZCku
XG4iKTsKICAgICAgICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigp
LCAiXG4iKTsKICAgICAgICAgfQpAQCAtMTk3OCw3ICsxOTc0LDcgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgLy8gaXQgaGFzIG5vIGlkZWEuCiAgICAgaWYgKCFP
cHRpb25zOjp1c2VQb2x5bW9ycGhpY0NhbGxJbmxpbmluZ0Zvck5vblN0dWJTdGF0dXMoKQogICAg
ICAgICAmJiAhY2FsbExpbmtTdGF0dXMuaXNCYXNlZE9uU3R1YigpKSB7Ci0gICAgICAgIGlmICh2
ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3Nl
KSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJCYWlsaW5nIGlubGluaW5nIChub24tc3R1YiBwb2x5
bW9ycGhpc20pLlxuIik7CiAgICAgICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENv
ZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgICAgIH0KQEAgLTIwMDYsMTQgKzIwMDIsMTQgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgICAgIC8vIHdoZXJlIGl0IHdv
dWxkIGJlIGJlbmVmaWNpYWwuIEl0IG1pZ2h0IGJlIGJlc3QgdG8gaGFuZGxlIHRoZXNlIGNhc2Vz
IGFzIGlmIGFsbCBjYWxscyB3ZXJlCiAgICAgICAgIC8vIGNsb3N1cmUgY2FsbHMuCiAgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYwMjAKLSAgICAg
ICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6
OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkJhaWxpbmcgaW5saW5pbmcgKG1peCku
XG4iKTsKICAgICAgICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigp
LCAiXG4iKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAot
ICAgIGlmICh2ZXJib3NlKSB7CisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZl
cmJvc2UpIHsKICAgICAgICAgZGF0YUxvZygiRG9pbmcgaGFyZCBpbmxpbmluZy4uLlxuIik7CiAg
ICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAg
ICB9CkBAIC0yMDI0LDExICsyMDIwLDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKAogICAgIC8vIHN0b3JlIHRoZSBjYWxsZWUgc28gdGhhdCBpdCB3aWxsIGJlIGFjY2Vz
c2libGUgdG8gYWxsIG9mIHRoZSBibG9ja3Mgd2UncmUgYWJvdXQgdG8gY3JlYXRlLiBXZQogICAg
IC8vIGdldCBhd2F5IHdpdGggZG9pbmcgYW4gaW1tZWRpYXRlLXNldCBoZXJlIGJlY2F1c2Ugd2Ug
d291bGRuJ3QgaGF2ZSBwZXJmb3JtZWQgYW55IHNpZGUgZWZmZWN0cwogICAgIC8vIHlldC4KLSAg
ICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgZGF0YUxvZygiUmVnaXN0ZXIgb2Zmc2V0OiAiLCByZWdpc3Rlck9mZnNldCk7
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZVJlZyhyZWdpc3Rlck9mZnNldCArIENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSk7CiAgICAgY2FsbGVlUmVnID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBP
cGVyYW5kKGNhbGxlZVJlZyk7Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0J5dGVDb2Rl
UGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkNhbGxlZSBpcyBnb2lu
ZyB0byBiZSAiLCBjYWxsZWVSZWcsICJcbiIpOwogICAgIHNldERpcmVjdChjYWxsZWVSZWcsIGNh
bGxUYXJnZXROb2RlLCBJbW1lZGlhdGVTZXRXaXRoRmx1c2gpOwogCkBAIC0yMDQyLDcgKzIwMzgs
NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICBhZGRUb0dyYXBo
KFN3aXRjaCwgT3BJbmZvKCZkYXRhKSwgdGhpbmdUb1N3aXRjaE9uKTsKICAgICAKICAgICBCYXNp
Y0Jsb2NrKiBvcmlnaW5CbG9jayA9IG1fY3VycmVudEJsb2NrOwotICAgIGlmICh2ZXJib3NlKQor
ICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRh
TG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIob3JpZ2luQmxvY2spLCAiIGFzIGxpbmtlZCAob3Jp
Z2luIG9mIHBvbHkgaW5saW5lKVxuIik7CiAgICAgb3JpZ2luQmxvY2stPmRpZExpbmsoKTsKICAg
ICBjYW5jZWxMaW5raW5nRm9yQmxvY2sobV9pbmxpbmVTdGFja1RvcCwgb3JpZ2luQmxvY2spOwpA
QCAtMjA1NCw3ICsyMDUwLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmco
CiAgICAgLy8gV2UgbWF5IGZvcmNlIHRoaXMgdHJ1ZSBpZiB3ZSBnaXZlIHVwIG9uIGlubGluaW5n
IGFueSBvZiB0aGUgZWRnZXMuCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCA9IGNhbGxMaW5r
U3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRoKCk7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAg
aWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2co
IkFib3V0IHRvIGxvb3Agb3ZlciBmdW5jdGlvbnMgYXQgIiwgY3VycmVudENvZGVPcmlnaW4oKSwg
Ii5cbiIpOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsTGlua1N0YXR1
cy5zaXplKCk7ICsraSkgewpAQCAtMjEwMSwxMSArMjA5NywxMSBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbmxpbmluZygKICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCk7CiAgICAg
ICAgICAgICBsYW5kaW5nQmxvY2tzLmFwcGVuZChtX2N1cnJlbnRCbG9jayk7CiAgICAgICAgIH0K
LSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiTWFya2luZyAiLCBSYXdQb2ludGVy
KG1fY3VycmVudEJsb2NrKSwgIiBhcyBsaW5rZWQgKHRhaWwgb2YgcG9seSBpbmxpbmVlKVxuIik7
CiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5kaWRMaW5rKCk7CiAKLSAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICAgICAgZGF0YUxvZygiRmluaXNoZWQgaW5saW5pbmcgIiwgY2FsbExpbmtTdGF0dXNbaV0s
ICIgYXQgIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIi5cbiIpOwogICAgIH0KICAgICAKQEAgLTIx
MTUsNyArMjExMSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAg
IG1fZXhpdE9LID0gdHJ1ZTsKICAgICBkYXRhLmZhbGxUaHJvdWdoID0gQnJhbmNoVGFyZ2V0KHNs
b3dQYXRoQmxvY2sucHRyKCkpOwogICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soc2xvd1BhdGhCbG9j
ay5jb3B5UmVmKCkpOwotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNl
ckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50
ZXIoc2xvd1BhdGhCbG9jay5wdHIoKSksICIgYXMgbGlua2VkIChzbG93IHBhdGggYmxvY2spXG4i
KTsKICAgICBzbG93UGF0aEJsb2NrLT5kaWRMaW5rKCk7CiAgICAgcHJlcGFyZVRvUGFyc2VCbG9j
aygpOwpAQCAtMjE0Niw3ICsyMTQyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5s
aW5pbmcoCiAgICAgUmVmPEJhc2ljQmxvY2s+IGNvbnRpbnVhdGlvbkJsb2NrID0gYWRvcHRSZWYo
CiAgICAgICAgICpuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgbV9udW1Bcmd1bWVudHMsIG1fbnVt
TG9jYWxzLCAxKSk7CiAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhjb250aW51YXRpb25CbG9jay5j
b3B5UmVmKCkpOwotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNlcklu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJBZGRpbmcgdW5saW5rZWQgYmxvY2sg
IiwgUmF3UG9pbnRlcihjb250aW51YXRpb25CbG9jay5wdHIoKSksICIgKGNvbnRpbnVhdGlvbilc
biIpOwogICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlu
a2VkQmxvY2soY29udGludWF0aW9uQmxvY2sucHRyKCkpKTsKICAgICBwcmVwYXJlVG9QYXJzZUJs
b2NrKCk7CkBAIC0yMTU4LDcgKzIxNTQsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bmxpbmluZygKICAgICBtX2N1cnJlbnRJbmRleCA9IG9sZE9mZnNldDsKICAgICBtX2V4aXRPSyA9
IHRydWU7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJz
ZXJJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICBkYXRhTG9nKCJEb25lIGlubGluaW5nICho
YXJkKS5cbiIpOwogICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4o
KSwgIlxuIik7CiAgICAgfQpAQCAtMzQ5OSwxNCArMzQ5NSwxNCBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpuZWVkc0R5bmFtaWNMb29rdXAoUmVzb2x2ZVR5cGUgdHlwZSwgT3Bjb2RlSUQgb3Bjb2Rl
KQogCiBHZXRCeU9mZnNldE1ldGhvZCBCeXRlQ29kZVBhcnNlcjo6cGxhbkxvYWQoY29uc3QgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb24mIGNvbmRpdGlvbikKIHsKLSAgICBpZiAodmVyYm9zZSkKKyAg
ICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxv
ZygiUGxhbm5pbmcgYSBsb2FkOiAiLCBjb25kaXRpb24sICJcbiIpOwogICAgIAogICAgIC8vIFdl
IG1pZ2h0IHByb21vdGUgdGhpcyB0byBFcXVpdmFsZW5jZSwgYW5kIGEgbGF0ZXIgREZHIHBhc3Mg
bWlnaHQgYWxzbyBkbyBzdWNoIHByb21vdGlvbgogICAgIC8vIGV2ZW4gaWYgd2UgZmFpbCwgYnV0
IGZvciBzaW1wbGljaXR5IHRoaXMgY2Fubm90IGJlIGFza2VkIHRvIGxvYWQgYW4gZXF1aXZhbGVu
Y2UgY29uZGl0aW9uLgogICAgIC8vIE5vbmUgb2YgdGhlIGNsaWVudHMgb2YgdGhpcyBtZXRob2Qg
d2lsbCByZXF1ZXN0IGEgbG9hZCBvZiBhbiBFcXVpdmFsZW5jZSBjb25kaXRpb24gYW55d2F5LAog
ICAgIC8vIGFuZCBzdXBwb3J0aW5nIGl0IHdvdWxkIGNvbXBsaWNhdGUgdGhlIGhldXJpc3RpY3Mg
YmVsb3cuCi0gICAgUkVMRUFTRV9BU1NFUlQoY29uZGl0aW9uLmtpbmQoKSA9PSBQcm9wZXJ0eUNv
bmRpdGlvbjo6UHJlc2VuY2UpOworICAgIFBBUlNFUl9BU1NFUlQoY29uZGl0aW9uLmtpbmQoKSA9
PSBQcm9wZXJ0eUNvbmRpdGlvbjo6UHJlc2VuY2UpOwogICAgIAogICAgIC8vIEhlcmUncyB0aGUg
cmFua2luZyBvZiBob3cgdG8gaGFuZGxlIHRoaXMsIGZyb20gbW9zdCBwcmVmZXJyZWQgdG8gbGVh
c3QgcHJlZmVycmVkOgogICAgIC8vCkBAIC0zNjA5LDE0ICszNjA1LDE0IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmNoZWNrKGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRp
b25TZXQpCiAKIEdldEJ5T2Zmc2V0TWV0aG9kIEJ5dGVDb2RlUGFyc2VyOjpwbGFuTG9hZChjb25z
dCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0KQogewotICAgIGlmICh2
ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICBkYXRhTG9nKCJjb25kaXRpb25TZXQgPSAiLCBjb25kaXRpb25TZXQsICJcbiIpOwogICAg
IAogICAgIEdldEJ5T2Zmc2V0TWV0aG9kIHJlc3VsdDsKICAgICBmb3IgKGNvbnN0IE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uJiBjb25kaXRpb24gOiBjb25kaXRpb25TZXQpIHsKICAgICAgICAgc3dp
dGNoIChjb25kaXRpb24ua2luZCgpKSB7CiAgICAgICAgIGNhc2UgUHJvcGVydHlDb25kaXRpb246
OlByZXNlbmNlOgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlc3VsdCk7IC8vIFNob3Vs
ZCBvbmx5IHNlZSBleGFjdGx5IG9uZSBvZiB0aGVzZS4KKyAgICAgICAgICAgIFBBUlNFUl9BU1NF
UlQoIXJlc3VsdCk7IC8vIFNob3VsZCBvbmx5IHNlZSBleGFjdGx5IG9uZSBvZiB0aGVzZS4KICAg
ICAgICAgICAgIHJlc3VsdCA9IHBsYW5Mb2FkKGNvbmRpdGlvbik7CiAgICAgICAgICAgICBpZiAo
IXJlc3VsdCkKICAgICAgICAgICAgICAgICByZXR1cm4gR2V0QnlPZmZzZXRNZXRob2QoKTsKQEAg
LTM3ODYsNyArMzc4Miw3IEBAIE5vZGUqIEJ5dGVDb2RlUGFyc2VyOjpsb2FkKAogCiBOb2RlKiBC
eXRlQ29kZVBhcnNlcjo6c3RvcmUoTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllciwgY29u
c3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5vZGUqIHZhbHVlKQogewotICAgIFJFTEVBU0Vf
QVNTRVJUKHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlKTsKKyAgICBQ
QVJTRVJfQVNTRVJUKHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlKTsK
IAogICAgIGNoZWNrUHJlc2VuY2VMaWtlKGJhc2UsIG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVu
dGlmaWVyXSwgdmFyaWFudC5vZmZzZXQoKSwgdmFyaWFudC5zdHJ1Y3R1cmUoKSk7CiAgICAgcmV0
dXJuIGhhbmRsZVB1dEJ5T2Zmc2V0KGJhc2UsIGlkZW50aWZpZXIsIHZhcmlhbnQub2Zmc2V0KCks
IHZhcmlhbnQucmVxdWlyZWRUeXBlKCksIHZhbHVlKTsKQEAgLTQxODUsNyArNDE4MSw3IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgLy8gb3Bw
b3NlZCB0byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlmIChtX2N1cnJl
bnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUoKSkgewogICAg
ICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgubV9yb290VG9Bcmd1bWVudHMuYWRkKG1fY3Vy
cmVudEJsb2NrLCBBcmd1bWVudHNWZWN0b3IoKSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGFk
ZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgUEFSU0VSX0FTU0VSVChhZGRSZXN1bHQuaXNO
ZXdFbnRyeSk7CiAgICAgICAgIEFyZ3VtZW50c1ZlY3RvciYgZW50cnlwb2ludEFyZ3VtZW50cyA9
IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHMu
cmVzaXplKG1fbnVtQXJndW1lbnRzKTsKIApAQCAtNTI4Miw3ICs1Mjc4LDcgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICBO
RVhUX09QQ09ERShvcF9jYXRjaCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKCFtX2N1cnJlbnRCbG9jay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIFBBUlNFUl9B
U1NFUlQoIW1fY3VycmVudEJsb2NrLT5zaXplKCkpOwogCiAgICAgICAgICAgICBWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRP
cGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzNdLnUucG9pbnRlcik7CiAKQEAgLTUz
MDcsOCArNTMwMyw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQg
bGltaXQpCiAgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvY2FsUHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOwog
ICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJndW1lbnQo
KSkgPCBhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBQQVJTRVJfQVNTRVJUKG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFBBUlNFUl9BU1NFUlQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG9wZXJhbmQudG9Bcmd1
bWVudCgpKSA8IGFyZ3VtZW50UHJlZGljdGlvbnMuc2l6ZSgpKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlZW5Bcmd1bWVudHMuYWRkKG9wZXJhbmQudG9Bcmd1bWVudCgpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGFyZ3VtZW50UHJlZGljdGlvbnNbb3BlcmFuZC50b0FyZ3VtZW50KCldID0g
cHJlZGljdGlvbjsKQEAgLTUzMTcsNyArNTMxMyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAKICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlv
bkVuYWJsZWQoKSkgewogICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50
ID0gMDsgYXJndW1lbnQgPCBtX251bUFyZ3VtZW50czsgKythcmd1bWVudCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNlZW5Bcmd1bWVudHMuY29udGFpbnMoYXJndW1l
bnQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoc2VlbkFyZ3VtZW50
cy5jb250YWlucyhhcmd1bWVudCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
IApAQCAtNTM1OCw3ICs1MzU0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKIAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9ncmFwaC5tX3Jvb3RUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIEFy
Z3VtZW50c1ZlY3RvcigpKTsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChhZGRSZXN1
bHQuaXNOZXdFbnRyeSk7CisgICAgICAgICAgICAgICAgUEFSU0VSX0FTU0VSVChhZGRSZXN1bHQu
aXNOZXdFbnRyeSk7CiAgICAgICAgICAgICAgICAgQXJndW1lbnRzVmVjdG9yJiBlbnRyeXBvaW50
QXJndW1lbnRzID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgICAgICAgICBl
bnRyeXBvaW50QXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CiAKQEAgLTU1MDMsOCAr
NTQ5OSw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQp
CiAgICAgICAgICAgICBjYXNlIEdsb2JhbExleGljYWxWYXI6CiAgICAgICAgICAgICBjYXNlIEds
b2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAgICAgICAgICAgICAgICAg
SlNTY29wZSogY29uc3RhbnRTY29wZSA9IEpTU2NvcGU6OmNvbnN0YW50U2NvcGVGb3JDb2RlQmxv
Y2socmVzb2x2ZVR5cGUsIG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrKTsKLSAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChjb25zdGFudFNjb3BlKTsKLSAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChzdGF0aWNfY2FzdDxKU1Njb3BlKj4oY3VycmVudEluc3RydWN0aW9uWzZd
LnUucG9pbnRlcikgPT0gY29uc3RhbnRTY29wZSk7CisgICAgICAgICAgICAgICAgUEFSU0VSX0FT
U0VSVChjb25zdGFudFNjb3BlKTsKKyAgICAgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKHN0YXRp
Y19jYXN0PEpTU2NvcGUqPihjdXJyZW50SW5zdHJ1Y3Rpb25bNl0udS5wb2ludGVyKSA9PSBjb25z
dGFudFNjb3BlKTsKICAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRzdCksIHdl
YWtKU0NvbnN0YW50KGNvbnN0YW50U2NvcGUpKTsKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KFBoYW50b20sIGdldChWaXJ0dWFsUmVnaXN0ZXIoc2NvcGUpKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CkBAIC01ODQ1LDcgKzU4NDEsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgLy8gQmFzZWxpbmUtPkRGRyBPU1IganVt
cHMgYmV0d2VlbiBsb29wIGhpbnRzLiBUaGUgREZHIGFzc3VtZXMgdGhhdCBCYXNlbGluZS0+REZH
CiAgICAgICAgICAgICAvLyBPU1IgY2FuIG9ubHkgaGFwcGVuIGF0IGJhc2ljIGJsb2NrIGJvdW5k
YXJpZXMuIEFzc2VydCB0aGF0IHRoZXNlIHR3byBzdGF0ZW1lbnRzCiAgICAgICAgICAgICAvLyBh
cmUgY29tcGF0aWJsZS4KLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fY3VycmVudEluZGV4
ID09IGJsb2NrQmVnaW4pOworICAgICAgICAgICAgUEFSU0VSX0FTU0VSVChtX2N1cnJlbnRJbmRl
eCA9PSBibG9ja0JlZ2luKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gV2UgbmV2ZXIg
ZG8gT1NSIGludG8gYW4gaW5saW5lZCBjb2RlIGJsb2NrLiBUaGF0IGNvdWxkIG5vdCBoYXBwZW4s
IHNpbmNlIE9TUgogICAgICAgICAgICAgLy8gbG9va3MgdXAgdGhlIGNvZGUgYmxvY2sgdGhhdCBp
cyB0aGUgcmVwbGFjZW1lbnQgZm9yIHRoZSBiYXNlbGluZSBKSVQgY29kZQpAQCAtNjE5NSw3ICs2
MTkxLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKEJhc2ljQmxvY2sqIGJsb2Nr
LCBWZWN0b3I8QmFzaWNCbG9jayo+JiBwb3NzaWJsZVQKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIoYmxvY2sp
LCAiIGFzIGxpbmtlZCAoYWN0dWFsbHkgZGlkIGxpbmtpbmcpXG4iKTsKICAgICBibG9jay0+ZGlk
TGluaygpOwogfQpAQCAtNjIwMywxMCArNjE5OSwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjps
aW5rQmxvY2soQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxCYXNpY0Jsb2NrKj4mIHBvc3NpYmxl
VAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrcyhWZWN0b3I8VW5saW5rZWRCbG9jaz4m
IHVubGlua2VkQmxvY2tzLCBWZWN0b3I8QmFzaWNCbG9jayo+JiBwb3NzaWJsZVRhcmdldHMpCiB7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB1bmxpbmtlZEJsb2Nrcy5zaXplKCk7ICsraSkg
ewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJBdHRlbXB0aW5nIHRvIGxpbmsg
IiwgUmF3UG9pbnRlcih1bmxpbmtlZEJsb2Nrc1tpXS5tX2Jsb2NrKSwgIlxuIik7CiAgICAgICAg
IGlmICh1bmxpbmtlZEJsb2Nrc1tpXS5tX25lZWRzTm9ybWFsTGlua2luZykgewotICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRG9lcyBuZWVkIG5vcm1h
bCBsaW5raW5nLlxuIik7CiAgICAgICAgICAgICBsaW5rQmxvY2sodW5saW5rZWRCbG9ja3NbaV0u
bV9ibG9jaywgcG9zc2libGVUYXJnZXRzKTsKICAgICAgICAgICAgIHVubGlua2VkQmxvY2tzW2ld
Lm1fbmVlZHNOb3JtYWxMaW5raW5nID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ1NFUGhhc2UuY3BwCmluZGV4IDU3ZWM0YTgwZTRiMjlkMmNiZDQ5NmVlYWMzOGQxYjI5Mzli
ODYxNzMuLmViZDFiOGVmZWY3YzI1MzBlMjhmOTI3MTdjZjcwZGFjMjcwZWQzYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCkBAIC00OCw3ICs0OCw5IEBAIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9v
bCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgREZHQ1NFUGhhc2VJbnRlcm5hbCB7CitzdGF0
aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIEltcHVyZURhdGFTbG90
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbXB1cmVEYXRhU2xvdCk7CkBAIC02MjcsNyAr
NjI5LDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgaXRlcmF0ZSgpCiAgICAgewotICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICBkYXRhTG9nKCJQZXJmb3JtaW5nIGl0ZXJhdGlvbi5cbiIpOwogICAgICAg
ICAKICAgICAgICAgbV9jaGFuZ2VkID0gZmFsc2U7CkBAIC02MzgsMTMgKzY0MCwxMyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBtX2ltcHVyZURhdGEgPSAmbV9pbXB1cmVEYXRhTWFwW21fYmxvY2td
OwogICAgICAgICAgICAgbV93cml0ZXNTb0Zhci5jbGVhcigpOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdDU0VQaGFzZUludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIlByb2Nlc3NpbmcgYmxvY2sgIiwg
Km1fYmxvY2ssICI6XG4iKTsKIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXgg
PSAwOyBub2RlSW5kZXggPCBtX2Jsb2NrLT5zaXplKCk7ICsrbm9kZUluZGV4KSB7CiAgICAgICAg
ICAgICAgICAgbV9ub2RlSW5kZXggPSBub2RlSW5kZXg7CiAgICAgICAgICAgICAgICAgbV9ub2Rl
ID0gbV9ibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiICBMb29raW5nIGF0IG5vZGUgIiwgbV9ub2RlLCAiOlxu
Iik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9ncmFwaC5wZXJmb3JtU3Vi
c3RpdHV0aW9uKG1fbm9kZSk7CkBAIC03MDcsNyArNzA5LDcgQEAgcHVibGljOgogICAgICAgICAv
LyBhIGdsb2JhbCBzZWFyY2guCiAgICAgICAgIExhenlOb2RlIG1hdGNoID0gbV9pbXB1cmVEYXRh
LT5hdmFpbGFibGVBdFRhaWwuZ2V0KGxvY2F0aW9uKTsKICAgICAgICAgaWYgKCEhbWF0Y2gpIHsK
LSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgRm91bmQgbG9j
YWwgbWF0Y2g6ICIsIG1hdGNoLCAiXG4iKTsKICAgICAgICAgICAgIHJldHVybiBtYXRjaDsKICAg
ICAgICAgfQpAQCAtNzE1LDcgKzcxNyw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gSWYgaXQncyBu
b3QgYXZhaWxhYmxlIGF0IHRoaXMgcG9pbnQgaW4gdGhlIGJsb2NrLCBhbmQgYXQgc29tZSBwcmlv
ciBwb2ludCBpbiB0aGUgYmxvY2sKICAgICAgICAgLy8gd2UgaGF2ZSBjbG9iYmVyZWQgdGhpcyBo
ZWFwIGxvY2F0aW9uLCB0aGVuIHRoZXJlIGlzIG5vIHBvaW50IGluIGRvaW5nIGEgZ2xvYmFsIHNl
YXJjaC4KICAgICAgICAgaWYgKG1fd3JpdGVzU29GYXIub3ZlcmxhcHMobG9jYXRpb24uaGVhcCgp
KSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHQ1NFUGhh
c2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBOb3Qg
bG9va2luZyBnbG9iYWxseSBiZWNhdXNlIG9mIGxvY2FsIGNsb2JiZXI6ICIsIG1fd3JpdGVzU29G
YXIsICJcbiIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KQEAgLTc3
Miw3ICs3NzQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHdv
cmtsaXN0LnRha2VMYXN0KCk7CiAgICAgICAgICAgICBzZWVuTGlzdC5hcHBlbmQoYmxvY2spOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChE
RkdDU0VQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICAgIFNlYXJjaGluZyBpbiBibG9jayAiLCAqYmxvY2ssICJcbiIpOwogICAgICAgICAgICAgSW1w
dXJlQmxvY2tEYXRhJiBkYXRhID0gbV9pbXB1cmVEYXRhTWFwW2Jsb2NrXTsKICAgICAgICAgICAg
IApAQCAtNzgwLDEyICs3ODIsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgLy8gdGhleSBjYW1l
ICphZnRlciogb3VyIHBvc2l0aW9uIGluIHRoZSBibG9jay4gQ2xlYXJseSwgd2hpbGUgb3VyIGJs
b2NrIGRvbWluYXRlcwogICAgICAgICAgICAgLy8gaXRzZWxmLCB0aGUgdGhpbmdzIGluIHRoZSBi
bG9jayBhZnRlciB1cyBkb24ndCBkb21pbmF0ZSB1cy4KICAgICAgICAgICAgIGlmIChtX2dyYXBo
Lm1fc3NhRG9taW5hdG9ycy0+c3RyaWN0bHlEb21pbmF0ZXMoYmxvY2ssIG1fYmxvY2spKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR0NTRVBo
YXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAg
ICAgSXQgc3RyaWN0bHkgZG9taW5hdGVzLlxuIik7CiAgICAgICAgICAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBtX25vZGUsIGRhdGEuZGlkVmlzaXQpOwogICAgICAgICAgICAgICAgIERGR19B
U1NFUlQobV9ncmFwaCwgbV9ub2RlLCAhbWF0Y2gpOwogICAgICAgICAgICAgICAgIG1hdGNoID0g
ZGF0YS5hdmFpbGFibGVBdFRhaWwuZ2V0KGxvY2F0aW9uKTsKLSAgICAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBBdmFpbGFiaWxpdHk6ICIs
IG1hdGNoLCAiXG4iKTsKICAgICAgICAgICAgICAgICBpZiAoISFtYXRjaCkgewogICAgICAgICAg
ICAgICAgICAgICAvLyBEb24ndCBleGFtaW5lIHRoZSBwcmVkZWNlc3NvcnMgb2YgYSBtYXRjaC4g
QXQgdGhpcyBwb2ludCB3ZSBqdXN0IHdhbnQgdG8KQEAgLTc5NSwxMCArNzk3LDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBEZWFsaW5nIHdpdGgg
d3JpdGUgc2V0ICIsIGRhdGEud3JpdGVzLCAiXG4iKTsKICAgICAgICAgICAgIGlmIChkYXRhLndy
aXRlcy5vdmVybGFwcyhsb2NhdGlvbi5oZWFwKCkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgQ2xvYmJlcmVkLlxuIik7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICB9CkBAIC04MzAsMTYg
KzgzMiwxNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBkZWYoSGVhcExvY2F0aW9uIGxvY2F0
aW9uLCBMYXp5Tm9kZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2co
IiAgICBHb3QgaGVhcCBsb2NhdGlvbiBkZWY6ICIsIGxvY2F0aW9uLCAiIC0+ICIsIHZhbHVlLCAi
XG4iKTsKICAgICAgICAgCiAgICAgICAgIExhenlOb2RlIG1hdGNoID0gZmluZFJlcGxhY2VtZW50
KGxvY2F0aW9uKTsKICAgICAgICAgCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAo
REZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICAg
IEdvdCBtYXRjaDogIiwgbWF0Y2gsICJcbiIpOwogICAgICAgICAKICAgICAgICAgaWYgKCFtYXRj
aCkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHQ1NFUGhh
c2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBBZGRp
bmcgYXQtdGFpbCBtYXBwaW5nOiAiLCBsb2NhdGlvbiwgIiAtPiAiLCB2YWx1ZSwgIlxuIik7CiAg
ICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1faW1wdXJlRGF0YS0+YXZhaWxhYmxlQXRUYWlsLmFk
ZChsb2NhdGlvbiwgdmFsdWUpOwogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsICFy
ZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VB
YnN0cmFjdFN0YXRlLmNwcAppbmRleCBiMGM1NWJlOTlhMjA1MzE4ODFlMTQ2MmJlODcxZGU4YTBk
YjcxZjIwLi5iNDljYjRjZDk2MjM0YTkyNzFjY2FiODJjNGU2NzhiYTkzZDc4MjQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRl
LmNwcApAQCAtMzcsNyArMzcsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAKK25hbWVzcGFjZSBERkdJblBsYWNlQWJzdHJhY3RTdGF0ZUludGVybmFsIHsKIHN0YXRpYyBj
b25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogSW5QbGFjZUFic3RyYWN0U3RhdGU6Oklu
UGxhY2VBYnN0cmFjdFN0YXRlKEdyYXBoJiBncmFwaCkKICAgICA6IG1fZ3JhcGgoZ3JhcGgpCkBA
IC0yNzYsNyArMjc4LDcgQEAgdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VTdGF0ZUF0
VGFpbChBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiwgQWJzdHJhY3QKIAogYm9vbCBJblBsYWNl
QWJzdHJhY3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pCiB7
Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0luUGxhY2VBYnN0cmFjdFN0YXRlSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgIE1lcmdpbmcgZnJvbSAiLCBwb2ludGVy
RHVtcChmcm9tKSwgIiB0byAiLCBwb2ludGVyRHVtcCh0byksICJcbiIpOwogICAgIEFTU0VSVChm
cm9tLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZBcmd1bWVudHMoKSA9PSB0by0+dmFyaWFibGVz
QXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCkpOwogICAgIEFTU0VSVChmcm9tLT52YXJpYWJsZXNB
dFRhaWwubnVtYmVyT2ZMb2NhbHMoKSA9PSB0by0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9j
YWxzKCkpOwpAQCAtMzA3LDcgKzMwOSw3IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1l
cmdlKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKQogCiAgICAgICAgIGZvciAoTm9k
ZUFic3RyYWN0VmFsdWVQYWlyJiBlbnRyeSA6IHRvLT5zc2EtPnZhbHVlc0F0SGVhZCkgewogICAg
ICAgICAgICAgTm9kZUZsb3dQcm9qZWN0aW9uIG5vZGUgPSBlbnRyeS5ub2RlOwotICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHSW5QbGFjZUFic3RyYWN0U3RhdGVJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBNZXJnaW5n
IGZvciAiLCBub2RlLCAiOiBmcm9tICIsIGZvck5vZGUobm9kZSksICIgdG8gIiwgZW50cnkudmFs
dWUsICJcbiIpOwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlQ291
bnRJbkZyb21CbG9jayA9IDA7CkBAIC0zMjIsNyArMzI0LDcgQEAgYm9vbCBJblBsYWNlQWJzdHJh
Y3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pCiAKICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gZW50cnkudmFsdWUubWVyZ2UoZm9yTm9kZShub2RlKSk7CiAKLSAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR0luUGxhY2VBYnN0cmFj
dFN0YXRlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAg
ICAgUmVzdWx0OiAiLCBlbnRyeS52YWx1ZSwgIlxuIik7CiAgICAgICAgIH0KICAgICAgICAgYnJl
YWs7CkBAIC0zMzYsNyArMzM4LDcgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2Uo
QmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pCiAgICAgaWYgKCF0by0+Y2ZhSGFzVmlz
aXRlZCkKICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisg
ICAgaWYgKERGR0luUGxhY2VBYnN0cmFjdFN0YXRlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
IGRhdGFMb2coIiAgICAgIFdpbGwgcmV2aXNpdDogIiwgY2hhbmdlZCwgIlxuIik7CiAgICAgdG8t
PmNmYVNob3VsZFJldmlzaXQgfD0gY2hhbmdlZDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAK
aW5kZXggNWQxY2JjNzZjNGVlMjUyYTMzNzI5ZmJlMTg1ZDk5MmIyYWZlZWNkYi4uOThlMGY2ZmRm
Mjg4MTQ3YTgxZTljYjdmOWYxYjg5OTY1NmZkOTFlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAK
QEAgLTQxLDcgKzQxLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1l
c3BhY2UgewogCituYW1lc3BhY2UgREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2VJbnRlcm5h
bCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGVudW0gUmFuZ2VL
aW5kIHsKICAgICBJbnZhbGlkUmFuZ2VLaW5kLApAQCAtMjAzLDEzICsyMDUsMTMgQEAgcHJpdmF0
ZToKICAgICAgICAgCiAgICAgICAgIGZvciAoYXV0byogbm9kZSA6ICpibG9jaykgewogICAgICAg
ICAgICAgUmFuZ2VLZXlBbmRBZGRlbmQgZGF0YSA9IHJhbmdlS2V5QW5kQWRkZW5kKG5vZGUpOwot
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHSW50ZWdlckNoZWNr
Q29tYmluaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9n
KCJGb3IgIiwgbm9kZSwgIjogIiwgZGF0YSwgIlxuIik7CiAgICAgICAgICAgICBpZiAoIWRhdGEp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJh
bmdlJiByYW5nZSA9IG1fbWFwW2RhdGEubV9rZXldOwotICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICBpZiAoREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2VJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgUmFuZ2U6ICIsIHJhbmdlLCAi
XG4iKTsKICAgICAgICAgICAgIGlmIChyYW5nZS5tX2NvdW50KSB7CiAgICAgICAgICAgICAgICAg
aWYgKGRhdGEubV9hZGRlbmQgPiByYW5nZS5tX21heEJvdW5kKSB7CkBAIC0yMjYsNyArMjI4LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByYW5nZS5tX21heE9yaWdpbiA9IG5vZGUtPm9y
aWdpbi5zZW1hbnRpYzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJhbmdlLm1fY291bnQr
KzsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR0ludGVnZXJD
aGVja0NvbWJpbmluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0
YUxvZygiICAgIE5ldyByYW5nZTogIiwgcmFuZ2UsICJcbiIpOwogICAgICAgICB9CiAgICAgICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VP
cHRpbWl6YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVn
ZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAppbmRleCAwN2I2YWMzNDgyZmQwZTdmMzJlZjg0
ZWY4MmIzMTE1MTI3N2JkMjEyLi40YTM4MzFlYjE2MGRjNDk3NjRlODczOTBlODhhZjVhYTk1ZTg2
ZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5n
ZU9wdGltaXphdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcApAQCAtNDIsNyArNDIsOSBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKLWNvbnN0IGJvb2wg
dmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBo
YXNlSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogY29u
c3QgdW5zaWduZWQgZ2l2ZVVwVGhyZXNob2xkID0gNTA7CiAKIGludDY0X3QgY2xhbXBlZFN1bUlt
cGwoKSB7IHJldHVybiAwOyB9CkBAIC0xMDE5LDcgKzEwMjEsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKG1fZ3JhcGguYmxvY2soMCkpOwogICAgICAgICB9
CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHSW50ZWdl
clJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAg
ZGF0YUxvZygiR3JhcGggYmVmb3JlIGludGVnZXIgcmFuZ2Ugb3B0aW1pemF0aW9uOlxuIik7CiAg
ICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQpAQCAtMTExMCw3ICsxMTEyLDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgIG1fcmVsYXRpb25zaGlwcyA9IG1fcmVsYXRpb25z
aGlwc0F0SGVhZFtibG9ja107CiAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmb3IgKGF1
dG8qIG5vZGUgOiAqYmxvY2spIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgICAgICAgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZUlu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQW5hbHlz
aXM6IGF0ICIsIG5vZGUsICI6ICIsIGxpc3REdW1wKHNvcnRlZFJlbGF0aW9uc2hpcHMoKSksICJc
biIpOwogICAgICAgICAgICAgICAgICAgICBleGVjdXRlTm9kZShub2RlKTsKICAgICAgICAgICAg
ICAgICB9CkBAIC0xMTk1LDExICsxMTk3LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlbGF0aW9uc2hpcE1hcCBmb3JUcnVlID0gbV9yZWxhdGlvbnNoaXBzOwogICAgICAg
ICAgICAgICAgICAgICAgICAgUmVsYXRpb25zaGlwTWFwIGZvckZhbHNlID0gbV9yZWxhdGlvbnNo
aXBzOwogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VP
cHRpbWl6YXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIkRlYWxpbmcgd2l0aCB0cnVlOlxuIik7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRSZWxhdGlvbnNoaXAoZm9yVHJ1ZSwgcmVsYXRpb25zaGlwRm9yVHJ1ZSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoUmVsYXRpb25zaGlwIHJlbGF0aW9uc2hpcEZvckZh
bHNlID0gcmVsYXRpb25zaGlwRm9yVHJ1ZS5pbnZlcnNlKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
REZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiRGVhbGluZyB3aXRoIGZhbHNlOlxu
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVsYXRpb25zaGlwKGZvckZhbHNl
LCByZWxhdGlvbnNoaXBGb3JGYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0x
MjIzLDcgKzEyMjUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX3JlbGF0aW9uc2hpcHMgPSBt
X3JlbGF0aW9uc2hpcHNBdEhlYWRbYmxvY2tdOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBu
b2RlSW5kZXggPSAwOyBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyArK25vZGVJbmRleCkgewog
ICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJh
bmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiVHJhbnNmb3JtYXRpb246IGF0ICIsIG5vZGUsICI6ICIsIGxpc3REdW1wKHNv
cnRlZFJlbGF0aW9uc2hpcHMoKSksICJcbiIpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIC8vIFRoaXMgZW5kcyB1cCBiZWluZyBwcmV0dHkgYXdrd2FyZCB0byB3cml0ZSBiZWNh
dXNlIHdlIG5lZWQgdG8gZGVjaWRlIGlmIHdlCkBAIC0xMjg3LDE0ICsxMjg5LDE0IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICAgICAgICAgIG1heFZhbHVlID0gc3RkOjptaW4obWF4VmFsdWUs
IHJlbGF0aW9uc2hpcC5tYXhWYWx1ZU9mTGVmdCgpKTsKICAgICAgICAgICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBp
ZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBtaW5WYWx1ZSA9ICIsIG1pblZhbHVl
LCAiLCBtYXhWYWx1ZSA9ICIsIG1heFZhbHVlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgIGlmIChzdW1PdmVyZmxvd3M8aW50PihtaW5WYWx1ZSwgbm9k
ZS0+Y2hpbGQyKCktPmFzSW50MzIoKSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgIHN1bU92
ZXJmbG93czxpbnQ+KG1heFZhbHVlLCBub2RlLT5jaGlsZDIoKS0+YXNJbnQzMigpKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9u
UGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
IiAgICBJdCdzIGluIGJvdW5kcy5cbiIpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgZXhlY3V0ZU5vZGUoYmxvY2stPmF0KG5vZGVJbmRleCkpOwpAQCAtMTU0OCw3
ICsxNTUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCFyZWxhdGlvbnNoaXApCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYg
KERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgU2V0dGluZzogIiwgcmVsYXRpb25zaGlwLCAiICh0dGwgPSAi
LCB0aW1lVG9MaXZlLCAiKVxuIik7CiAKICAgICAgICAgYXV0byByZXN1bHQgPSByZWxhdGlvbnNo
aXBNYXAuYWRkKApAQCAtMTYwMiw3ICsxNjA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAgICAgaWYgKG90aGVyUmVsYXRpb25zaGlwLnZhZ3VlbmVzcygpIDwgcmVsYXRpb25zaGlwLnZh
Z3VlbmVzcygpCiAgICAgICAgICAgICAgICAgICAgICAgICAmJiBvdGhlclJlbGF0aW9uc2hpcC5y
aWdodCgpLT5pc0ludDMyQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgUmVs
YXRpb25zaGlwIG5ld1JlbGF0aW9uc2hpcCA9IHJlbGF0aW9uc2hpcC5maWx0ZXJDb25zdGFudChv
dGhlclJlbGF0aW9uc2hpcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSAm
JiBuZXdSZWxhdGlvbnNoaXAgIT0gcmVsYXRpb25zaGlwKQorICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2Ug
JiYgbmV3UmVsYXRpb25zaGlwICE9IHJlbGF0aW9uc2hpcCkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgICBSZWZpbmVkIHRvOiAiLCBuZXdSZWxhdGlvbnNoaXAsICIg
YmFzZWQgb24gIiwgb3RoZXJSZWxhdGlvbnNoaXAsICJcbiIpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgcmVsYXRpb25zaGlwID0gbmV3UmVsYXRpb25zaGlwOwogICAgICAgICAgICAgICAgICAg
ICB9CkBAIC0xNjE2LDcgKzE2MTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBp
ZiAob3RoZXJSZWxhdGlvbnNoaXAudmFndWVuZXNzKCkgPiByZWxhdGlvbnNoaXAudmFndWVuZXNz
KCkKICAgICAgICAgICAgICAgICAgICAgICAgICYmIG90aGVyUmVsYXRpb25zaGlwLnJpZ2h0KCkt
PmlzSW50MzJDb25zdGFudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGlvbnNo
aXAgbmV3UmVsYXRpb25zaGlwID0gb3RoZXJSZWxhdGlvbnNoaXAuZmlsdGVyQ29uc3RhbnQocmVs
YXRpb25zaGlwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlICYmIG5ld1Jl
bGF0aW9uc2hpcCAhPSBvdGhlclJlbGF0aW9uc2hpcCkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlICYm
IG5ld1JlbGF0aW9uc2hpcCAhPSBvdGhlclJlbGF0aW9uc2hpcCkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgICBSZWZpbmVkICIsIG90aGVyUmVsYXRpb25zaGlwLCAi
IHRvOiAiLCBuZXdSZWxhdGlvbnNoaXAsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
b3RoZXJSZWxhdGlvbnNoaXAgPSBuZXdSZWxhdGlvbnNoaXA7CiAgICAgICAgICAgICAgICAgICAg
IH0KQEAgLTE2MzksNyArMTY0MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBAeCA9PSBA
YyBhbmQgQHggIT0gQGQsIHdoZXJlIEBkID4gQGMsIHRoZW4gd2Ugd2FudCB0byB0dXJuIEB4ICE9
IEBkIGludG8gQHggPCBAZC4KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKHRpbWVUb0xp
dmUgJiYgb3RoZXJSZWxhdGlvbnNoaXAua2luZCgpID09IFJlbGF0aW9uc2hpcDo6RXF1YWwpIHsK
LSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHSW50
ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiICAgICAgQ29uc2lkZXJpbmc6ICIsIG90aGVyUmVsYXRpb25zaGlw
LCAiXG4iKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlOgpA
QCAtMTY3NSw3ICsxNjc3LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBib29sIG1lcmdlVG8oUmVs
YXRpb25zaGlwTWFwJiByZWxhdGlvbnNoaXBNYXAsIEJhc2ljQmxvY2sqIHRhcmdldCkKICAgICB7
Ci0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRp
bWl6YXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJN
ZXJnaW5nIHRvICIsIHBvaW50ZXJEdW1wKHRhcmdldCksICI6XG4iKTsKICAgICAgICAgICAgIGRh
dGFMb2coIiAgICBJbmNvbWluZzogIiwgbGlzdER1bXAoc29ydGVkUmVsYXRpb25zaGlwcyhyZWxh
dGlvbnNoaXBNYXApKSwgIlxuIik7CiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQXQgaGVhZDog
IiwgbGlzdER1bXAoc29ydGVkUmVsYXRpb25zaGlwcyhtX3JlbGF0aW9uc2hpcHNBdEhlYWRbdGFy
Z2V0XSkpLCAiXG4iKTsKQEAgLTE2OTcsNyArMTY5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgZm9yIChSZWxhdGlvbnNoaXAgcmVsYXRpb25zaGlwIDogZW50cnkudmFsdWUpIHsKICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlbGF0aW9uc2hpcC5sZWZ0KCkgPT0gZW50cnkua2V5
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTGl2ZShyZWxhdGlvbnNoaXAucmlnaHQoKSkp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICBQcm9wYWdhdGlu
ZyAiLCByZWxhdGlvbnNoaXAsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVz
LmFwcGVuZChyZWxhdGlvbnNoaXApOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNzM0LDEy
ICsxNzM2LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBWZWN0b3I8UmVsYXRpb25zaGlwPiBt
ZXJnZWRSZWxhdGlvbnNoaXBzOwogICAgICAgICAgICAgZm9yIChSZWxhdGlvbnNoaXAgdGFyZ2V0
UmVsYXRpb25zaGlwIDogZW50cnkudmFsdWUpIHsKICAgICAgICAgICAgICAgICBmb3IgKFJlbGF0
aW9uc2hpcCBzb3VyY2VSZWxhdGlvbnNoaXAgOiBpdGVyLT52YWx1ZSkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR0ludGVnZXJS
YW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgIE1lcmdpbmcgIiwgdGFyZ2V0UmVsYXRpb25zaGlwLCAiIGFuZCAi
LCBzb3VyY2VSZWxhdGlvbnNoaXAsICI6XG4iKTsKICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0
UmVsYXRpb25zaGlwLm1lcmdlKAogICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlUmVsYXRp
b25zaGlwLAogICAgICAgICAgICAgICAgICAgICAgICAgWyZdIChSZWxhdGlvbnNoaXAgbmV3UmVs
YXRpb25zaGlwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlv
blBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBHb3QgIiwgbmV3UmVsYXRpb25zaGlwLCAiXG4iKTsKIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChuZXdSZWxhdGlvbnNoaXAucmlnaHQoKS0+aXNJbnQzMkNv
bnN0YW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTW92
SGludFJlbW92YWxQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01vdkhp
bnRSZW1vdmFsUGhhc2UuY3BwCmluZGV4IDlmMzQ0YjM3ZGNkODdmYzE0YzBhMTJkZTRmMTA3MDhi
NmQ3NDhmODYuLjFhZWQyYzE4NTZlMmJmNjJjZWY3YTNjNDZkYTI0MjE5MzJmNWY3MDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTW92SGludFJlbW92YWxQaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNb3ZIaW50UmVtb3ZhbFBoYXNl
LmNwcApAQCAtNDIsNyArNDIsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
IG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIERGR01vdkhp
bnRSZW1vdmFsUGhhc2VJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFs
c2U7Cit9CiAKIGNsYXNzIE1vdkhpbnRSZW1vdmFsUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogcHVi
bGljOgpAQCAtNTUsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBydW4oKQogICAg
IHsKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR01vdkhpbnRSZW1vdmFs
UGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVm
b3JlIE1vdkhpbnQgcmVtb3ZhbDpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAg
ICAgICAgIH0KQEAgLTY5LDcgKzcxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGhh
bmRsZUJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgIGlmIChERkdNb3ZIaW50UmVtb3ZhbFBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICBkYXRhTG9nKCJIYW5kaW5nIGJsb2NrICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwg
IlxuIik7CiAgICAgICAgIAogICAgICAgICAvLyBBIE1vdkhpbnQgaXMgdW5uZWNlc3NhcnkgaWYg
dGhlIGxvY2FsIGRpZXMgYmVmb3JlIGl0IGlzIHVzZWQuIFdlIGFuc3dlciB0aGlzIHF1ZXN0aW9u
IGJ5CkBAIC04Nyw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9zdGF0ZS5v
cGVyYW5kKHJlZykgPSBjdXJyZW50RXBvY2g7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgCi0g
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHTW92SGludFJlbW92YWxQaGFzZUlu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIExvY2FsczogIiwgbV9z
dGF0ZSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICAvLyBBc3N1bWUgdGhhdCBibG9ja3MgYWZ0
ZXIgdXMgZXhpdC4KQEAgLTk4LDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IE1vdkhpbnQpIHsKICAgICAgICAgICAgICAgICBF
cG9jaCBsb2NhbEVwb2NoID0gbV9zdGF0ZS5vcGVyYW5kKG5vZGUtPnVubGlua2VkTG9jYWwoKSk7
Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR01v
dkhpbnRSZW1vdmFsUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiICAgIEF0ICIsIG5vZGUsICI6IGN1cnJlbnQgPSAiLCBjdXJyZW50RXBvY2gsICIs
IGxvY2FsID0gIiwgbG9jYWxFcG9jaCwgIlxuIik7CiAgICAgICAgICAgICAgICAgaWYgKCFsb2Nh
bEVwb2NoIHx8IGxvY2FsRXBvY2ggPT0gY3VycmVudEVwb2NoKSB7CiAgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKFpvbWJpZUhpbnQpOwpAQCAtMTIwLDcgKzEy
Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFtX3N0YXRlLm9w
ZXJhbmQocmVnKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR01vdkhpbnRSZW1vdmFsUGhhc2VJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgS2ls
bGVkIG9wZXJhbmQgYXQgIiwgbm9kZSwgIjogIiwgcmVnLCAiXG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fc3RhdGUub3BlcmFuZChyZWcpID0gY3VycmVudEVwb2NoOwogICAgICAgICAg
ICAgICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCmluZGV4IDdhOWM1MTU2N2Iz
NDdmZGQzYzhjM2NkOTFiZjA0Yjg5ZGY4MjI1MjguLjNmZGE3ZDQwYjA4NmJkMTljM2MyOGIwYTYw
ZGFkMTU3NWVmNjBjMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcApAQCAtNDgsNyArNDgs
OSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKLWJv
b2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIERGR09iamVjdEFsbG9jYXRpb25TaW5raW5n
UGhhc2VJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAK
IC8vIEluIG9yZGVyIHRvIHNpbmsgb2JqZWN0IGN5Y2xlcywgd2UgdXNlIGEgcG9pbnRzLXRvIGFu
YWx5c2lzIGNvdXBsZWQKIC8vIHdpdGggYW4gZXNjYXBlIGFuYWx5c2lzLiBUaGlzIGFuYWx5c2lz
IGlzIGFjdHVhbGx5IHNpbWlsYXIgdG8gYW4KQEAgLTcxNyw3ICs3MTksNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmICghcGVyZm9ybVNpbmtpbmcoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlv
blNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJH
cmFwaCBhZnRlciBlbGltaW5hdGlvbjpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7
CiAgICAgICAgIH0KQEAgLTc0Miw3ICs3NDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgZ3Jh
cGhCZWZvcmVTaW5raW5nID0gb3V0LnRvQ1N0cmluZygpOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhh
c2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3Jl
IGVsaW1pbmF0aW9uOlxuIik7CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAg
fQpAQCAtNzUyLDcgKzc1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghZGV0ZXJtaW5lU2lu
a0NhbmRpZGF0ZXMoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAo
dmVyYm9zZSkgeworICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUlu
dGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDog
bV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiSGVhcCBhdCBoZWFkIG9mICIsICpibG9jaywgIjogXG4iLCBtX2hlYXBBdEhlYWRbYmxvY2td
KTsKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJIZWFwIGF0IHRhaWwgb2YgIiwgKmJsb2NrLCAi
OiBcbiIsIG1faGVhcEF0VGFpbFtibG9ja10pOwpAQCAtNzczLDcgKzc3NSw3IEBAIHByaXZhdGU6
CiAKICAgICAgICAgYm9vbCBjaGFuZ2VkOwogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNl
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiRG9pbmcgaXRlcmF0
aW9uIG9mIGVzY2FwZSBhbmFseXNpcy5cbiIpOwogICAgICAgICAgICAgY2hhbmdlZCA9IGZhbHNl
OwogCkBAIC0xMTk4LDcgKzEyMDAsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAobV9zaW5rQ2Fu
ZGlkYXRlcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gaGFzVW5lc2NhcGVkUmVhZHM7
CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9u
U2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJDYW5k
aWRhdGVzOiAiLCBsaXN0RHVtcChtX3NpbmtDYW5kaWRhdGVzKSwgIlxuIik7CiAKICAgICAgICAg
Ly8gQ3JlYXRlIHRoZSBtYXRlcmlhbGl6YXRpb24gbm9kZXMKQEAgLTE3NjUsNyArMTc2Nyw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgaWYgKERGR09iamVjdEFsbG9jYXRpb25TaW5r
aW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coIkxv
Y2FsIG1hcHBpbmcgYXQgIiwgcG9pbnRlckR1bXAoYmxvY2spLCAiOiAiLCBtYXBEdW1wKG1fbG9j
YWxNYXBwaW5nKSwgIlxuIik7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygiTG9jYWwgbWF0ZXJp
YWxpemF0aW9ucyBhdCAiLCBwb2ludGVyRHVtcChibG9jayksICI6ICIsIG1hcER1bXAobV9lc2Nh
cGVlVG9NYXRlcmlhbGl6YXRpb24pLCAiXG4iKTsKICAgICAgICAgICAgIH0KQEAgLTE3ODEsNyAr
MTc4Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIG1fbG9jYWxNYXBwaW5nLnNl
dChsb2NhdGlvbiwgbV9ib3R0b20pOwogCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3NpbmtD
YW5kaWRhdGVzLmNvbnRhaW5zKG5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9u
U2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiRm9yIHNpbmsgY2FuZGlkYXRlICIsIG5vZGUsICIgZm91bmQgbG9jYXRpb24g
IiwgbG9jYXRpb24sICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsCkBA
IC0xNzk2LDcgKzE3OTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBwb3B1bGF0
ZU1hdGVyaWFsaXphdGlvbihibG9jaywgbWF0ZXJpYWxpemF0aW9uLCBlc2NhcGVlKTsKICAgICAg
ICAgICAgICAgICAgICAgbV9lc2NhcGVlVG9NYXRlcmlhbGl6YXRpb24uc2V0KGVzY2FwZWUsIG1h
dGVyaWFsaXphdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dChub2RlSW5kZXgsIG1hdGVyaWFsaXphdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtp
bmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiTWF0ZXJpYWxpemluZyAiLCBlc2NhcGVlLCAiID0+ICIsIG1hdGVyaWFsaXphdGlvbiwgIiBh
dCAiLCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTE4NTEsNyArMTg1Myw3
IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGRvTG93ZXIgPSB0cnVlOwog
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ3JlYXRpbmcgaGludCB3
aXRoIHZhbHVlICIsIG5vZGVWYWx1ZSwgIiBiZWZvcmUgIiwgbm9kZSwgIlxuIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQoCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZUluZGV4ICsgMSwKQEAgLTE5OTQsNyArMTk5Niw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGluc2VydE9TUkhpbnRzRm9yVXBkYXRlKHVuc2lnbmVkIG5vZGVJbmRleCwg
Tm9kZU9yaWdpbiBvcmlnaW4sIGJvb2wmIGNhbkV4aXQsIEF2YWlsYWJpbGl0eU1hcCYgYXZhaWxh
YmlsaXR5LCBOb2RlKiBlc2NhcGVlLCBOb2RlKiBtYXRlcmlhbGl6YXRpb24pCiAgICAgewotICAg
ICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtp
bmdQaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJJbnNlcnRp
bmcgT1NSIGhpbnRzIGF0ICIsIG9yaWdpbiwgIjpcbiIpOwogICAgICAgICAgICAgZGF0YUxvZygi
ICAgIEVzY2FwZWU6ICIsIGVzY2FwZWUsICJcbiIpOwogICAgICAgICAgICAgZGF0YUxvZygiICAg
IE1hdGVyaWFsaXphdGlvbjogIiwgbWF0ZXJpYWxpemF0aW9uLCAiXG4iKTsKQEAgLTIxNjcsNyAr
MjE2OSw3IEBAIHByaXZhdGU6CiAKICAgICBOb2RlKiBjcmVhdGVSZWNvdmVyeShCYXNpY0Jsb2Nr
KiBibG9jaywgUHJvbW90ZWRIZWFwTG9jYXRpb24gbG9jYXRpb24sIE5vZGUqIHdoZXJlLCBib29s
JiBjYW5FeGl0KQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdP
YmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICBkYXRhTG9nKCJSZWNvdmVyaW5nICIsIGxvY2F0aW9uLCAiIGF0ICIsIHdoZXJlLCAiXG4iKTsK
ICAgICAgICAgQVNTRVJUKGxvY2F0aW9uLmJhc2UoKS0+aXNQaGFudG9tQWxsb2NhdGlvbigpKTsK
ICAgICAgICAgTm9kZSogYmFzZSA9IGdldE1hdGVyaWFsaXphdGlvbihibG9jaywgbG9jYXRpb24u
YmFzZSgpKTsKQEAgLTIxNzUsNyArMjE3Nyw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgTm9kZU9y
aWdpbiBvcmlnaW4gPSB3aGVyZS0+b3JpZ2luLndpdGhTZW1hbnRpYyhiYXNlLT5vcmlnaW4uc2Vt
YW50aWMpOwogCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHT2JqZWN0QWxs
b2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxv
ZygiQmFzZSBpcyAiLCBiYXNlLCAiIGFuZCB2YWx1ZSBpcyAiLCB2YWx1ZSwgIlxuIik7CiAKICAg
ICAgICAgaWYgKGJhc2UtPmlzUGhhbnRvbUFsbG9jYXRpb24oKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwCmluZGV4
IGRjYzFjOTc2OTg2ZmVkNmUzZTlkY2VkY2FmNWU5NDA1YjlkM2I4ZGEuLjNjMDg4YTZhNGE1ZWU2
NTA5MDYyMmQ2NjAzMmQ0ZjE3MTAyOTM3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUGhhbnRvbUluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BoYW50b21JbnNlcnRpb25QaGFzZS5jcHAKQEAgLTQzLDcgKzQzLDkg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3BhY2UgewogCi1ib29s
IHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2VJbnRl
cm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIFBo
YW50b21JbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJsaWM6CkBAIC02MCw3ICs2
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gU2V0TG9jYWxzIGV4ZWN1dGUsIHdoaWNoIGlzIGlu
YWNjdXJhdGUuIFRoYXQgY2F1c2VzIHVzIHRvIGluc2VydCB0b28gZmV3IFBoYW50b21zLgogICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9yZWZDb3VudFN0YXRl
ID09IEV4YWN0UmVmQ291bnQpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAg
ICAgICAgaWYgKERGR1BoYW50b21JbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAg
ICAgICAgICAgICBkYXRhTG9nKCJHcmFwaCBiZWZvcmUgUGhhbnRvbSBpbnNlcnRpb246XG4iKTsK
ICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwogICAgICAgICB9CkBAIC03MCw3ICs3Miw3IEBA
IHB1YmxpYzoKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tz
SW5OYXR1cmFsT3JkZXIoKSkKICAgICAgICAgICAgIGhhbmRsZUJsb2NrKGJsb2NrKTsKICAgICAg
ICAgCi0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdQaGFudG9tSW5zZXJ0
aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGgg
YWZ0ZXIgUGhhbnRvbSBpbnNlcnRpb246XG4iKTsKICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgp
OwogICAgICAgICB9CkBAIC0xMDEsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdW5zaWdu
ZWQgbGFzdEV4aXRpbmdJbmRleCA9IDA7CiAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4
ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAgICAgICAg
ICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR1BoYW50b21JbnNlcnRpb25QaGFzZUludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nICIsIG5vZGUs
ICJcbiIpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsK
QEAgLTEzOSw3ICsxNDEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IGFscmVhZHlLaWxsZWQ7CiAKICAgICAgICAgICAgIGF1dG8gcHJvY2Vzc0tpbGxlZE9wZXJhbmQg
PSBbJl0gKFZpcnR1YWxSZWdpc3RlciByZWcpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9z
ZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHUGhhbnRvbUluc2VydGlvblBoYXNlSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBLaWxsZWQgb3BlcmFu
ZDogIiwgcmVnLCAiXG4iKTsKIAogICAgICAgICAgICAgICAgIC8vIEFscmVhZHkgaGFuZGxlZCBm
cm9tIFNldExvY2FsLgpAQCAtMTU1LDcgKzE1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgaWYgKGtpbGxlZE5vZGUtPmVwb2NoKCkgPT0gY3VycmVudEVwb2NoKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2UpIHsKKyAgICAgICAgICAgICAgICBpZiAoREZHUGhhbnRvbUluc2VydGlvblBoYXNlSW50
ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAg
ICAgICAgICAgICAgICAgICIgICAgSW5zZXJ0aW5nIFBoYW50b20gb24gIiwga2lsbGVkTm9kZSwg
IiBhZnRlciAiLAogICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2stPmF0KGxhc3RFeGl0aW5n
SW5kZXgpLCAiXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKaW5kZXggZDNkYTU1MjdkNjNiYzA3Njk4MGVkNDA0ZDU3
MzA2NWQ0YTg1MTZiYS4uMTRjZWQyYWE4ZDgyYzZlYmNiMzVlOTRjYTZmYTJlMmEzZTMzODRmYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQ
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1Npbmtp
bmdQaGFzZS5jcHAKQEAgLTQyLDcgKzQyLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBE
RkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJv
c2UgPSBmYWxzZTsKK30KIAogY2xhc3MgUHV0U3RhY2tTaW5raW5nUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogcHVibGljOgpAQCAtNzEsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIHRoZSBz
dGFjay4gSXQncyBub3QgY2xlYXIgdG8gbWUgaWYgdGhpcyBpcyBpbXBvcnRhbnQgb3Igbm90Lgog
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1Mjk2
CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHUHV0U3Rh
Y2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygi
R3JhcGggYmVmb3JlIFB1dFN0YWNrIHNpbmtpbmc6XG4iKTsKICAgICAgICAgICAgIG1fZ3JhcGgu
ZHVtcCgpOwogICAgICAgICB9CkBAIC0xMDUsNyArMTA3LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgIE9wZXJhbmRzPGJvb2w+IGxpdmUgPSBsaXZlQXRUYWlsW2Jsb2NrXTsKICAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRleCA9IGJsb2NrLT5zaXplKCk7IG5vZGVJbmRl
eC0tOykgewogICAgICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJ
bmRleCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAg
ICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkxpdmUgYXQgIiwgbm9kZSwgIjogIiwgbGl2ZSwg
IlxuIik7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBWZWN0b3I8
VmlydHVhbFJlZ2lzdGVyLCA0PiByZWFkczsKQEAgLTExMyw3ICsxMTUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgICAgIGF1dG8gZXNjYXBlSGFuZGxlciA9IFsmXSAoVmlydHVhbFJlZ2lz
dGVyIG9wZXJhbmQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzSGVh
ZGVyKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREZH
UHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgIiwgb3BlcmFuZCwgIiBpcyBsaXZlIGF0ICIsIG5vZGUs
ICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVhZHMuYXBwZW5kKG9wZXJhbmQpOwog
ICAgICAgICAgICAgICAgICAgICB9OwpAQCAtMjMwLDcgKzIzMiw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBPcGVyYW5kczxGbHVzaEZvcm1hdD4gZGVmZXJyZWQgPSBkZWZlcnJlZEF0SGVh
ZFtibG9ja107CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZm9yIChOb2RlKiBu
b2RlIDogKmJsb2NrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkRlZmVycmVkIGF0ICIsIG5vZGUs
ICI6IiwgZGVmZXJyZWQsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gR2V0U3RhY2spIHsKQEAgLTI3Nyw3ICsyNzksNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgIGF1dG8gZXNjYXBlSGFuZGxlciA9IFsmXSAoVmlydHVhbFJlZ2lz
dGVyIG9wZXJhbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2luZ1BoYXNlSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiRm9yICIsIG5v
ZGUsICIgZXNjYXBpbmcgIiwgb3BlcmFuZCwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAob3BlcmFuZC5pc0hlYWRlcigpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTMwMywxMyArMzA1LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNz
b3JzKCkpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IGRlZmVycmVkLnNp
emUoKTsgaS0tOykgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmlu
ZyAiLCBWaXJ0dWFsUmVnaXN0ZXIoZGVmZXJyZWQub3BlcmFuZEZvckluZGV4KGkpKSwgIiBhdCAi
LCBwb2ludGVyRHVtcChibG9jayksICItPiIsIHBvaW50ZXJEdW1wKHN1Y2Nlc3NvciksICI6ICIs
IGRlZmVycmVkW2ldLCAiIGFuZCAiLCBkZWZlcnJlZEF0SGVhZFtzdWNjZXNzb3JdW2ldLCAiIG1l
cmdlcyB0byAiKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWRBdEhlYWRbc3Vj
Y2Vzc29yXVtpXSA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2UoZGVmZXJyZWRB
dEhlYWRbc3VjY2Vzc29yXVtpXSwgZGVmZXJyZWRbaV0pOwogICAgICAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coZGVmZXJyZWRBdEhlYWRbc3VjY2Vz
c29yXVtpXSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9
CkBAIC0zODcsNyArMzg5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGlmICghaXNDb25j
cmV0ZShmb3JtYXQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChERkdQdXRTdGFj
a1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKCJBZGRpbmcgUGhpIGZvciAiLCBvcGVyYW5kLCAiIGF0ICIsIHBvaW50ZXJEdW1wKGJsb2Nr
KSwgIlxuIik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTm9kZSogcGhpTm9k
ZSA9IG1fZ3JhcGguYWRkTm9kZShTcGVjSGVhcFRvcCwgUGhpLCBibG9jay0+YXQoMCktPm9yaWdp
bi53aXRoSW52YWxpZEV4aXQoKSk7CkBAIC00MTEsNyArNDEzLDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgIG1hcHBpbmcub3BlcmFuZChvcGVyYW5kKSA9IGRlZi0+dmFsdWUoKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJNYXBwaW5nIGF0IHRvcCBvZiAiLCBwb2ludGVyRHVtcChibG9j
ayksICI6ICIsIG1hcHBpbmcsICJcbiIpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3Ig
KFNTQUNhbGN1bGF0b3I6OkRlZiogcGhpRGVmIDogc3NhQ2FsY3VsYXRvci5waGlzRm9yQmxvY2so
YmxvY2spKSB7CkBAIC00MTksNyArNDIxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnQoMCwgcGhpRGVmLT52YWx1ZSgpKTsK
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgTWFwcGluZyAiLCBvcGVyYW5kLCAiIHRvICIs
IHBoaURlZi0+dmFsdWUoKSwgIlxuIik7CiAgICAgICAgICAgICAgICAgbWFwcGluZy5vcGVyYW5k
KG9wZXJhbmQpID0gcGhpRGVmLT52YWx1ZSgpOwogICAgICAgICAgICAgfQpAQCAtNDI3LDcgKzQy
OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGRlZmVycmVkID0gZGVmZXJyZWRBdEhlYWRbYmxv
Y2tdOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXggPSAwOyBub2RlSW5kZXgg
PCBibG9jay0+c2l6ZSgpOyArK25vZGVJbmRleCkgewogICAgICAgICAgICAgICAgIE5vZGUqIG5v
ZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiRGVmZXJyZWQgYXQgIiwgbm9kZSwg
IjoiLCBkZWZlcnJlZCwgIlxuIik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
c3dpdGNoIChub2RlLT5vcCgpKSB7CkBAIC00MzUsNyArNDM3LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgICAgICBTdGFja0FjY2Vzc0RhdGEqIGRhdGEgPSBub2RlLT5zdGFja0FjY2Vzc0Rh
dGEoKTsKICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBkYXRh
LT5sb2NhbDsKICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQub3BlcmFuZChvcGVyYW5kKSA9
IGRhdGEtPmZvcm1hdDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICAgICAgICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgTWFwcGluZyAiLCBvcGVyYW5k
LCAiIHRvICIsIG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgIiBhdCAiLCBub2RlLCAiXG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgbWFwcGluZy5vcGVyYW5kKG9wZXJhbmQpID0gbm9kZS0+Y2hpbGQx
KCkubm9kZSgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTQ3MCw3ICs0NzIsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZGVmYXVsdDogewog
ICAgICAgICAgICAgICAgICAgICBhdXRvIGVzY2FwZUhhbmRsZXIgPSBbJl0gKFZpcnR1YWxSZWdp
c3RlciBvcGVyYW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkZvciAiLCBu
b2RlLCAiIGVzY2FwaW5nICIsIG9wZXJhbmQsICJcbiIpOwogCiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAob3BlcmFuZC5pc0hlYWRlcigpKQpAQCAtNDg0LDcgKzQ4Niw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBHb3R0YSBpbnNlcnQgYSBQdXRTdGFjay4KLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERG
R1B1dFN0YWNrU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiSW5zZXJ0aW5nIGEgUHV0U3RhY2sgZm9yICIsIG9wZXJhbmQs
ICIgYXQgIiwgbm9kZSwgIlxuIik7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGlu
Y29taW5nID0gbWFwcGluZy5vcGVyYW5kKG9wZXJhbmQpOwpAQCAtNTIzLDcgKzUyNSw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICAgICAgTm9kZSogcGhpTm9kZSA9IHBoaURlZi0+dmFsdWUo
KTsKICAgICAgICAgICAgICAgICAgICAgU1NBQ2FsY3VsYXRvcjo6VmFyaWFibGUqIHZhcmlhYmxl
ID0gcGhpRGVmLT52YXJpYWJsZSgpOwogICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgb3BlcmFuZCA9IGluZGV4VG9PcGVyYW5kW3ZhcmlhYmxlLT5pbmRleCgpXTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdQdXRT
dGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiQ3JlYXRpbmcgVXBzaWxvbiBmb3IgIiwgb3BlcmFuZCwgIiBhdCAiLCBwb2lu
dGVyRHVtcChibG9jayksICItPiIsIHBvaW50ZXJEdW1wKHN1Y2Nlc3NvckJsb2NrKSwgIlxuIik7
CiAgICAgICAgICAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdCA9IGRlZmVycmVkQXRIZWFk
W3N1Y2Nlc3NvckJsb2NrXS5vcGVyYW5kKG9wZXJhbmQpOwogICAgICAgICAgICAgICAgICAgICBE
RkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIGlzQ29uY3JldGUoZm9ybWF0KSk7CkBAIC01Njgs
NyArNTcwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhh
c2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYWZ0ZXIg
UHV0U3RhY2sgc2lua2luZzpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJy
aWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggM2EyYTcxNzJhZDczZDZhM2UwMTA3Mjky
ZTViOTcwNTQ5NDdmOGYxYS4uYjVlMmMzNTBiMTgxZjliMDYzOTMyMTVhNDJhYWFkNzZiNjVlZDg0
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTQzLDcgKzQzLDkgQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxz
ZTsKK25hbWVzcGFjZSBERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsIHsKK3N0
YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogZW51bSBjbGFzcyBQaGFzZU1v
ZGUgewogICAgIC8vIERvZXMgb25seSBhIGxvY2FsIGFuYWx5c2lzIGZvciBzdG9yZSBiYXJyaWVy
IGluc2VydGlvbiBhbmQgYXNzdW1lcyB0aGF0IHBvaW50ZXJzIGxpdmUKQEAgLTc1LDcgKzc3LDcg
QEAgcHVibGljOgogICAgIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJi
b3NlKSB7CisgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFs
Ojp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJTdGFydGluZyBzdG9yZSBiYXJyaWVy
IGluc2VydGlvbjpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0K
QEAgLTE2Nyw3ICsxNjksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGJvb2wgaGFuZGxlQmxv
Y2soQmFzaWNCbG9jayogYmxvY2spCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkgeworICAg
ICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkg
ewogICAgICAgICAgICAgZGF0YUxvZygiRGVhbGluZyB3aXRoIGJsb2NrICIsIHBvaW50ZXJEdW1w
KGJsb2NrKSwgIlxuIik7CiAgICAgICAgICAgICBpZiAocmVhbGx5SW5zZXJ0QmFycmllcnMoKSkK
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgUmVhbGx5IGluc2VydGluZyBiYXJyaWVycy5c
biIpOwpAQCAtMjA2LDcgKzIwOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGZvciAobV9ub2RlSW5k
ZXggPSAwOyBtX25vZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbV9ub2RlSW5kZXgpIHsKICAg
ICAgICAgICAgIG1fbm9kZSA9IGJsb2NrLT5hdChtX25vZGVJbmRleCk7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICBpZiAoREZHU3RvcmVCYXJy
aWVySW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgIGRh
dGFMb2coCiAgICAgICAgICAgICAgICAgICAgICIgICAgIiwgbV9jdXJyZW50RXBvY2gsICI6IExv
b2tpbmcgYXQgbm9kZSAiLCBtX25vZGUsICIgd2l0aCBjaGlsZHJlbjogIik7CiAgICAgICAgICAg
ICAgICAgQ29tbWFQcmludGVyIGNvbW1hOwpAQCAtMzQ4LDcgKzM1MCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5z
ZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2co
CiAgICAgICAgICAgICAgICAgICAgICIgICAgIiwgbV9jdXJyZW50RXBvY2gsICI6IERvbmUgd2l0
aCBub2RlICIsIG1fbm9kZSwgIiAoIiwgbV9ub2RlLT5lcG9jaCgpLAogICAgICAgICAgICAgICAg
ICAgICAiKSB3aXRoIGNoaWxkcmVuOiAiKTsKQEAgLTM4MCw3ICszODIsNyBAQCBwcml2YXRlOgog
ICAgIAogICAgIHZvaWQgY29uc2lkZXJCYXJyaWVyKEVkZ2UgYmFzZSwgRWRnZSBjaGlsZCkKICAg
ICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5z
ZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICAg
ICAgQ29uc2lkZXJpbmcgYWRkaW5nIGJhcnJpZXIgIiwgYmFzZSwgIiA9PiAiLCBjaGlsZCwgIlxu
Iik7CiAgICAgICAgIAogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIGEgc3RvcmUgYmFycmllciBp
ZiB0aGUgY2hpbGQgaXMgZ3VhcmFudGVlZCB0byBub3QgYmUgYSBjZWxsLgpAQCAtMzg5LDcgKzM5
MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBEb24ndCB0cnkgdG9vIGhhcmQgYmVjYXVz
ZSBpdCdzIHRvbyBleHBlbnNpdmUgdG8gcnVuIEFJLgogICAgICAgICAgICAgaWYgKGNoaWxkLT5o
YXNDb25zdGFudCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFjaGlsZC0+YXNKU1ZhbHVlKCku
aXNDZWxsKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAg
ICAgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICAgICAgUmVqZWN0
aW5nIGJlY2F1c2Ugb2YgY29uc3RhbnQgdHlwZS5cbiIpOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtNDAwLDcgKzQwMiw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50MzI6CiAgICAgICAgICAgICAgICAgY2Fz
ZSBOb2RlUmVzdWx0SW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0Qm9vbGVh
bjoKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAg
IGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICAgICAgUmVqZWN0aW5nIGJlY2F1
c2Ugb2YgcmVzdWx0IHR5cGUuXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CkBAIC00MTQsNyArNDE2LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIC8vIEdvIGludG8gcmFnZSBtb2RlIHRvIGVsaW1pbmF0ZSBhbnkgY2hhbmNlIG9mIGEg
YmFycmllciB3aXRoIGEgbm9uLWNlbGwgY2hpbGQuIFdlCiAgICAgICAgICAgICAvLyBjYW4gYWZm
b3JkIHRvIGtlZXAgYXJvdW5kIEFJIGluIEdsb2JhbCBtb2RlLgogICAgICAgICAgICAgaWYgKCFt
X2ludGVycHJldGVyLT5uZWVkc1R5cGVDaGVjayhjaGlsZCwgflNwZWNDZWxsKSkgewotICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgICAgICAgICBSZWplY3RpbmcgYmVjYXVzZSBvZiBBSSB0eXBlLlxuIik7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtNDI2LDcgKzQyOCw3IEBA
IHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBjb25zaWRlckJhcnJpZXIoRWRnZSBiYXNlKQogICAg
IHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNl
cnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgICAg
ICBDb25zaWRlcmluZyBhZGRpbmcgYmFycmllciBvbiAiLCBiYXNlLCAiXG4iKTsKICAgICAgICAg
CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgYSBzdG9yZSBiYXJyaWVyIGlmIHRoZSBlcG9jaCBv
ZiB0aGUgYmFzZSBpcyBpZGVudGljYWwgdG8gdGhlIGN1cnJlbnQKQEAgLTQzNCwxMiArNDM2LDEy
IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGJlIGluIG5ld2dlbiwgb3Igd2UganVzdCByYW4gYSBi
YXJyaWVyIG9uIGl0IHNvIGl0J3MgZ3VhcmFudGVlZCB0byBiZSByZW1lbWJlcmVkCiAgICAgICAg
IC8vIGFscmVhZHkuCiAgICAgICAgIGlmIChiYXNlLT5lcG9jaCgpID09IG1fY3VycmVudEVwb2No
KSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdTdG9yZUJh
cnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRh
dGFMb2coIiAgICAgICAgICAgIFJlamVjdGluZyBiZWNhdXNlIGl0J3MgaW4gdGhlIGN1cnJlbnQg
ZXBvY2guXG4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICAgICAg
SW5zZXJ0aW5nIGJhcnJpZXIuXG4iKTsKICAgICAgICAgaW5zZXJ0QmFycmllcihtX25vZGVJbmRl
eCArIDEsIGJhc2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCmluZGV4IGUzYzUyYWNhOWRhMTNmY2Q4
M2MxOGUwMWI4NTZmOGE0ODA5ODllOTcuLmU5NzM5NTc3N2ZhOWUwZDgyNjUzZGM4Nzc4ZDJhMDIw
MGIwOTU5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJn
c0ZvcndhcmRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdW
YXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcApAQCAtNDAsNyArNDAsOSBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNl
OworbmFtZXNwYWNlIERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbCB7CitzdGF0aWMg
Y29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIFZhcmFyZ3NGb3J3YXJkaW5n
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogcHVibGljOgpAQCAtNTMsNyArNTUsNyBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9m
b3JtICE9IFNTQSk7CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBp
ZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAg
ICAgICBkYXRhTG9nKCJHcmFwaCBiZWZvcmUgdmFyYXJncyBmb3J3YXJkaW5nOlxuIik7CiAgICAg
ICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQpAQCAtODUsNyArODcsNyBAQCBwcml2
YXRlOgogICAgICAgICAvLyBXZSBleHBlY3QgY2FsbHMgaW50byB0aGlzIGZ1bmN0aW9uIHRvIGJl
IHJhcmUuIFNvLCB0aGlzIGlzIHdyaXR0ZW4gaW4gYSBzaW1wbGUgTyhuKSBtYW5uZXIuCiAgICAg
ICAgIAogICAgICAgICBOb2RlKiBjYW5kaWRhdGUgPSBibG9jay0+YXQoY2FuZGlkYXRlTm9kZUlu
ZGV4KTsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2Fy
ZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJIYW5kbGlu
ZyBjYW5kaWRhdGUgIiwgY2FuZGlkYXRlLCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZp
bmQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG5vZGUgaW4gdGhpcyBibG9jayB0byB1c2UgdGhlIGNh
bmRpZGF0ZSwgYW5kIGxvb2sgZm9yIGVzY2FwaW5nCkBAIC0xMjEsNyArMTIzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgICAgIHNhd0VzY2FwZSA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIGlmIChzYXdFc2NhcGUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdWYXJh
cmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgRXNjYXBlIGF0ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtMTM4LDcgKzE0MCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKICAgICAgICAgICAgIGNh
c2UgVGFpbENhbGxWYXJhcmdzSW5saW5lZENhbGxlcjoKICAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQxKCkgPT0gY2FuZGlkYXRlIHx8IG5vZGUtPmNoaWxkMigpID09IGNhbmRpZGF0ZSkg
ewotICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAg
aWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBFc2NhcGUgYXQgIiwgbm9kZSwgIlxuIik7CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBAIC0xNDgsNyAr
MTUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgU2V0
TG9jYWw6CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpID09IGNhbmRpZGF0ZSAm
JiBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+aXNMb2FkZWRGcm9tKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdWYXJh
cmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgRXNjYXBlIGF0ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtMTU2LDcgKzE1OCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgICAgIGlmIChtX2dyYXBoLnVzZXMobm9kZSwgY2FuZGlkYXRlKSkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR1ZhcmFyZ3NG
b3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBFc2NhcGUgYXQgIiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBAIC0xNjUsNyArMTY3LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGZvckFsbEtpbGxlZE9wZXJhbmRzKAogICAgICAgICAgICAgICAgIG1f
Z3JhcGgsIG5vZGUsIGJsb2NrLT50cnlBdChub2RlSW5kZXggKyAxKSwKICAgICAgICAgICAgICAg
ICBbJl0gKFZpcnR1YWxSZWdpc3RlciByZWcpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNl
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
S2lsbGluZyAiLCByZWcsICIgd2hpbGUgd2UgYXJlIGludGVyZXN0ZWQgaW4gIiwgbGlzdER1bXAo
cmVsZXZhbnRMb2NhbHMpLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHJlbGV2YW50TG9jYWxzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAocmVsZXZhbnRMb2NhbHNbaV0gPT0gcmVnKSB7CkBAIC0xNzYsNyArMTc4
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0p
OwogICAgICAgICB9Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHVmFyYXJn
c0ZvcndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygi
U2VsZWN0ZWQgbGFzdFVzZXJJbmRleCA9ICIsIGxhc3RVc2VySW5kZXgsICIsICIsIGJsb2NrLT5h
dChsYXN0VXNlckluZGV4KSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICAvLyBXZSdyZSBzdGls
bCBpbiBidXNpbmVzcy4gRGV0ZXJtaW5lIGlmIGJldHdlZW4gdGhlIGNhbmRpZGF0ZSBhbmQgdGhl
IGxhc3QgdXNlciB0aGVyZSBpcyBhbnkKQEAgLTE5Myw3ICsxOTUsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgY2FzZSBab21iaWVIaW50OgogICAgICAgICAgICAgY2FzZSBLaWxsU3RhY2s6CiAg
ICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50c0ludm9sdmVTdGFja1Nsb3QoY2FuZGlkYXRlLCBu
b2RlLT51bmxpbmtlZExvY2FsKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZUludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEludGVy
ZmVyZW5jZSBhdCAiLCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgICAgIH0KQEAgLTIwMSw3ICsyMDMsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgY2FzZSBQdXRTdGFjazoKICAgICAgICAgICAgICAgICBpZiAo
YXJndW1lbnRzSW52b2x2ZVN0YWNrU2xvdChjYW5kaWRhdGUsIG5vZGUtPnN0YWNrQWNjZXNzRGF0
YSgpLT5sb2NhbCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICAgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgSW50ZXJmZXJlbmNlIGF0
ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICAgICAgfQpAQCAtMjEwLDcgKzIxMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIFNl
dExvY2FsOgogICAgICAgICAgICAgY2FzZSBGbHVzaDoKICAgICAgICAgICAgICAgICBpZiAoYXJn
dW1lbnRzSW52b2x2ZVN0YWNrU2xvdChjYW5kaWRhdGUsIG5vZGUtPmxvY2FsKCkpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZH
VmFyYXJnc0ZvcndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiICAgIEludGVyZmVyZW5jZSBhdCAiLCBub2RlLCAiXG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAgLTIzMiw3ICsy
MzQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAg
ICAgICBOb09wQ2xvYmJlcml6ZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoZG9lc0ludGVyZmVy
ZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBJbnRlcmZlcmVuY2UgYXQgIiwgbm9kZSwg
IlxuIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBA
IC0yNDAsNyArMjQyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
Ly8gV2UgY2FuIG1ha2UgdGhpcyB3b3JrLgotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
aWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgIGRhdGFMb2coIiAgICBXaWxsIGRvIGZvcndhcmRpbmchXG4iKTsKICAgICAgICAgbV9jaGFu
Z2VkID0gdHJ1ZTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcC5jcHAKaW5kZXggOTAyMTFmZDk0YWM2MTVjNjVjNTFkMzRjN2Q1ODhmNGQ5M2Ix
MjljNy4uOWI5OTE0YWU4Yjg1NGQwMzUyOGE2Yjg4N2JhMjg4OGU3OWVkZGRhNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwLmNwcApAQCAtMzgsOCArMzgs
NiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKLXVzaW5nIG5hbWVzcGFj
ZSBCMzsKLQogQWJzdHJhY3RIZWFwOjpBYnN0cmFjdEhlYXAoQWJzdHJhY3RIZWFwKiBwYXJlbnQs
IGNvbnN0IGNoYXIqIGhlYXBOYW1lLCBwdHJkaWZmX3Qgb2Zmc2V0KQogICAgIDogbV9vZmZzZXQo
b2Zmc2V0KQogICAgICwgbV9oZWFwTmFtZShoZWFwTmFtZSkKQEAgLTc3LDcgKzc1LDcgQEAgdm9p
ZCBBYnN0cmFjdEhlYXA6OmNvbXB1dGUodW5zaWduZWQgYmVnaW4pCiAKICAgICBpZiAobV9jaGls
ZHJlbi5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gTXVzdCBzcGVjaWFsLWNhc2UgbGVhdmVzIHNv
IHRoYXQgdGhleSB1c2UganVzdCBvbmUgc2xvdCBvbiB0aGUgbnVtYmVyIGxpbmUuCi0gICAgICAg
IG1fcmFuZ2UgPSBIZWFwUmFuZ2UoYmVnaW4pOworICAgICAgICBtX3JhbmdlID0gQjM6OkhlYXBS
YW5nZShiZWdpbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg3LDcgKzg1LDcgQEAg
dm9pZCBBYnN0cmFjdEhlYXA6OmNvbXB1dGUodW5zaWduZWQgYmVnaW4pCiAgICAgICAgIGN1cnJl
bnQgPSBjaGlsZC0+cmFuZ2UoKS5lbmQoKTsKICAgICB9CiAKLSAgICBtX3JhbmdlID0gSGVhcFJh
bmdlKGJlZ2luLCBjdXJyZW50KTsKKyAgICBtX3JhbmdlID0gQjM6OkhlYXBSYW5nZShiZWdpbiwg
Y3VycmVudCk7CiB9CiAKIHZvaWQgQWJzdHJhY3RIZWFwOjpzaGFsbG93RHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKaW5kZXggNTkwM2E4ZTUzZWQzZDU3NTBlMWM1Y2Rm
MDExOGQyOTIyYzVjY2Y5Mi4uNDBjYzhiODE0YzMwZTQxYzUyY2JjNWM5N2JiMTg4ZTQ2MjBjM2E0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuY3BwCkBAIC00Nyw4ICs0Nyw2IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgRlRMIHsKIAotdXNpbmcgbmFtZXNwYWNlIEIzOwotCiBBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KCkKICAgICA6IHJvb3QobnVsbHB0ciwgImpz
Y1Jvb3QiKQogCkBAIC05Miw0OCArOTAsNDkgQEAgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6fkFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkoKQogewogfQogCi12b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRv
cnk6OmRlY29yYXRlTWVtb3J5KGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwgVmFsdWUqIHZhbHVl
KQordm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZU1lbW9yeShjb25zdCBBYnN0
cmFjdEhlYXAqIGhlYXAsIEIzOjpWYWx1ZSogdmFsdWUpCiB7CiAgICAgbV9oZWFwRm9yTWVtb3J5
LmFwcGVuZChIZWFwRm9yVmFsdWUoaGVhcCwgdmFsdWUpKTsKIH0KIAotdm9pZCBBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUNDYWxsUmVhZChjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAs
IFZhbHVlKiB2YWx1ZSkKK3ZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVDQ2Fs
bFJlYWQoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQogewogICAg
IG1faGVhcEZvckNDYWxsUmVhZC5hcHBlbmQoSGVhcEZvclZhbHVlKGhlYXAsIHZhbHVlKSk7CiB9
CiAKLXZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVDQ2FsbFdyaXRlKGNvbnN0
IEFic3RyYWN0SGVhcCogaGVhcCwgVmFsdWUqIHZhbHVlKQordm9pZCBBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5OjpkZWNvcmF0ZUNDYWxsV3JpdGUoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBCMzo6
VmFsdWUqIHZhbHVlKQogewogICAgIG1faGVhcEZvckNDYWxsV3JpdGUuYXBwZW5kKEhlYXBGb3JW
YWx1ZShoZWFwLCB2YWx1ZSkpOwogfQogCi12b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRl
Y29yYXRlUGF0Y2hwb2ludFJlYWQoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBWYWx1ZSogdmFs
dWUpCit2b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlUGF0Y2hwb2ludFJlYWQo
Y29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQogewogICAgIG1faGVh
cEZvclBhdGNocG9pbnRSZWFkLmFwcGVuZChIZWFwRm9yVmFsdWUoaGVhcCwgdmFsdWUpKTsKIH0K
IAotdm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZVBhdGNocG9pbnRXcml0ZShj
b25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIFZhbHVlKiB2YWx1ZSkKK3ZvaWQgQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeTo6ZGVjb3JhdGVQYXRjaHBvaW50V3JpdGUoY29uc3QgQWJzdHJhY3RIZWFwKiBo
ZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQogewogICAgIG1faGVhcEZvclBhdGNocG9pbnRXcml0ZS5h
cHBlbmQoSGVhcEZvclZhbHVlKGhlYXAsIHZhbHVlKSk7CiB9CiAKLXZvaWQgQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5jZVJlYWQoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBW
YWx1ZSogdmFsdWUpCit2b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlRmVuY2VS
ZWFkKGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwgQjM6OlZhbHVlKiB2YWx1ZSkKIHsKICAgICBt
X2hlYXBGb3JGZW5jZVJlYWQuYXBwZW5kKEhlYXBGb3JWYWx1ZShoZWFwLCB2YWx1ZSkpOwogfQog
Ci12b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlRmVuY2VXcml0ZShjb25zdCBB
YnN0cmFjdEhlYXAqIGhlYXAsIFZhbHVlKiB2YWx1ZSkKK3ZvaWQgQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeTo6ZGVjb3JhdGVGZW5jZVdyaXRlKGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwgQjM6OlZh
bHVlKiB2YWx1ZSkKIHsKICAgICBtX2hlYXBGb3JGZW5jZVdyaXRlLmFwcGVuZChIZWFwRm9yVmFs
dWUoaGVhcCwgdmFsdWUpKTsKIH0KIAotdm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNv
cmF0ZUZlbmNlZEFjY2Vzcyhjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIFZhbHVlKiB2YWx1ZSkK
K3ZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5jZWRBY2Nlc3MoY29uc3Qg
QWJzdHJhY3RIZWFwKiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQogewogICAgIG1faGVhcEZvckZl
bmNlZEFjY2Vzcy5hcHBlbmQoSGVhcEZvclZhbHVlKGhlYXAsIHZhbHVlKSk7CiB9CiAKIHZvaWQg
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6Y29tcHV0ZVJhbmdlc0FuZERlY29yYXRlSW5zdHJ1Y3Rp
b25zKCkKIHsKKyAgICB1c2luZyBuYW1lc3BhY2UgQjM7CiAgICAgcm9vdC5jb21wdXRlKCk7CiAK
ICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMaW5rLmNwcAppbmRleCA2NzZiMzkwOWM4N2QwZGE5MGM1ZDhkYjY2MDhhZDIxNGM1
OTg5NjY5Li43YzAxODFkOGQxZTRiOTM4ZGVlNzBhYjkxZDY2MmUwODRjMDI5MmE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKQEAgLTQxLDEwICs0MSw5IEBACiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAotdXNpbmcgbmFtZXNwYWNlIERGRzsKLQogdm9p
ZCBsaW5rKFN0YXRlJiBzdGF0ZSkKIHsKKyAgICB1c2luZyBuYW1lc3BhY2UgREZHOwogICAgIEdy
YXBoJiBncmFwaCA9IHN0YXRlLmdyYXBoOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZ3Jh
cGgubV9jb2RlQmxvY2s7CiAgICAgVk0mIHZtID0gZ3JhcGgubV92bTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcAppbmRleCAwMWMw
NmU3NWM1YjAwZWQxMDY4ZTdiNGNmMWE3MjhjNTk0Y2Y5MWUyLi5jNWE2YzY2OTc1OTJmNzk0MGVm
ZmE1NTYxOWVmMzNhMGQ1MDFkNmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiTWFya2luZ0NvbnN0cmFpbnRTZXQuaCIKIAogI2luY2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvVGltZVdpdGhEeW5hbWljQ2xvY2tU
eXBlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTA2LDE1ICsxMDcsMTUgQEAgdm9pZCBNYXJr
aW5nQ29uc3RyYWludFNldDo6ZGlkU3RhcnRNYXJraW5nKCkKICAgICBtX2l0ZXJhdGlvbiA9IDE7
CiB9CiAKLXZvaWQgTWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZChDU3RyaW5nIGFiYnJldmlhdGVk
TmFtZSwgQ1N0cmluZyBuYW1lLCBGdW5jdGlvbjx2b2lkKFNsb3RWaXNpdG9yJiwgY29uc3QgVmlz
aXRpbmdUaW1lb3V0Jik+IGZ1bmN0aW9uLCBDb25zdHJhaW50Vm9sYXRpbGl0eSB2b2xhdGlsaXR5
KQordm9pZCBNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKENTdHJpbmcgYWJicmV2aWF0ZWROYW1l
LCBDU3RyaW5nIG5hbWUsIDo6RnVuY3Rpb248dm9pZChTbG90VmlzaXRvciYsIGNvbnN0IFZpc2l0
aW5nVGltZW91dCYpPiBmdW5jdGlvbiwgQ29uc3RyYWludFZvbGF0aWxpdHkgdm9sYXRpbGl0eSkK
IHsKICAgICBhZGQoc3RkOjptYWtlX3VuaXF1ZTxNYXJraW5nQ29uc3RyYWludD4oV1RGTW92ZShh
YmJyZXZpYXRlZE5hbWUpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgdm9sYXRp
bGl0eSkpOwogfQogCiB2b2lkIE1hcmtpbmdDb25zdHJhaW50U2V0OjphZGQoCiAgICAgQ1N0cmlu
ZyBhYmJyZXZpYXRlZE5hbWUsIENTdHJpbmcgbmFtZSwKLSAgICBGdW5jdGlvbjx2b2lkKFNsb3RW
aXNpdG9yJiwgY29uc3QgVmlzaXRpbmdUaW1lb3V0Jik+IGV4ZWN1dGVGdW5jdGlvbiwKLSAgICBG
dW5jdGlvbjxkb3VibGUoU2xvdFZpc2l0b3ImKT4gcXVpY2tXb3JrRXN0aW1hdGVGdW5jdGlvbiwK
KyAgICA6OkZ1bmN0aW9uPHZvaWQoU2xvdFZpc2l0b3ImLCBjb25zdCBWaXNpdGluZ1RpbWVvdXQm
KT4gZXhlY3V0ZUZ1bmN0aW9uLAorICAgIDo6RnVuY3Rpb248ZG91YmxlKFNsb3RWaXNpdG9yJik+
IHF1aWNrV29ya0VzdGltYXRlRnVuY3Rpb24sCiAgICAgQ29uc3RyYWludFZvbGF0aWxpdHkgdm9s
YXRpbGl0eSkKIHsKICAgICBhZGQoc3RkOjptYWtlX3VuaXF1ZTxNYXJraW5nQ29uc3RyYWludD4o
V1RGTW92ZShhYmJyZXZpYXRlZE5hbWUpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGV4ZWN1dGVG
dW5jdGlvbiksIFdURk1vdmUocXVpY2tXb3JrRXN0aW1hdGVGdW5jdGlvbiksIHZvbGF0aWxpdHkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dD
aGlja2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlj
a2VuLmNwcAppbmRleCBhZTZlMTgzNWUyZTJlN2E0MzAwZjdkZmEwYTExYjI4NmQzZjFmYzMxLi5m
NzA2NjZkODk3MGY2YzczMzE1OTA3ODE3N2QzZWEzYzU1ODBhYjcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwCkBAIC0zMyw3
ICszMyw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCituYW1lc3BhY2UgU2hhZG93Q2hpY2tlbklu
dGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogdm9pZCBT
aGFkb3dDaGlja2VuOjpQYWNrZXQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKQEAg
LTg2LDcgKzg4LDcgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjpsb2coVk0mIHZtLCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFBhY2tldCYgcGFja2V0KQogCiB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0
ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlm
IChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZGF0YUxvZygiUnVu
bmluZyB1cGRhdGUgb246ICIsICp0aGlzLCAiXG4iKTsKICAgICAgICAgV1RGUmVwb3J0QmFja3Ry
YWNlKCk7CiAgICAgfQpAQCAtMTEyLDEzICsxMTQsMTMgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1
cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0g
ICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgZGF0YUxvZygiSGlnaGVzdCBwb2ludCBzaW5jZSBsYXN0IHRpbWU6ICIsIFJhd1Bv
aW50ZXIoaGlnaGVzdFBvaW50U2luY2VMYXN0VGltZSksICJcbiIpOwogICAgIAogICAgIHdoaWxl
ICghbV9zdGFjay5pc0VtcHR5KCkgJiYgKG1fc3RhY2subGFzdCgpLmZyYW1lIDwgaGlnaGVzdFBv
aW50U2luY2VMYXN0VGltZSB8fCBtX3N0YWNrLmxhc3QoKS5pc1RhaWxEZWxldGVkKSkKICAgICAg
ICAgbV9zdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYg
KFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiICAgIFJl
dmlzZWQgc3RhY2s6ICIsIGxpc3REdW1wKG1fc3RhY2spLCAiXG4iKTsKICAgICAKICAgICAvLyBJ
dCdzIHBvc3NpYmxlIHRoYXQgdGhlIHRvcCBvZiBzdGFjayBpcyBub3cgdGFpbC1kZWxldGVkLiBU
aGUgc3RhY2sgbm8gbG9uZ2VyIGNvbnRhaW5zIGFueQpAQCAtMTQxLDcgKzE0Myw3IEBAIHZvaWQg
U2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgIH0KIAog
ICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgICBSZXZpc2VkIHN0YWNrOiAiLCBsaXN0RHVtcCht
X3N0YWNrKSwgIlxuIik7CiAgICAgCiAgICAgLy8gVGhlIGxvZy1iYXNlZCBhbmQgZXhlYy1iYXNl
ZCBydWxlcyByZXF1aXJlIHRoYXQgU2hhZG93Q2hpY2tlbiB3YXMgZW5hYmxlZC4gVGhlIHBvaW50
IG9mCkBAIC0xNjksNyArMTcxLDcgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZt
LCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICB9KTsKICAgICAgICAgc3RhY2tSaWdodE5v
dy5yZXZlcnNlKCk7CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYg
KFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICBTdGFjayByaWdodCBub3c6ICIsIGxpc3REdW1wKHN0YWNrUmlnaHROb3cpLCAiXG4iKTsKICAg
ICAgICAgCiAgICAgICAgIHVuc2lnbmVkIHNoYWRvd0luZGV4ID0gMDsKQEAgLTE5NCw3ICsxOTYs
NyBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAgICAgfQogICAgICAgICBtX3N0YWNrLnJlc2l6ZShzaGFkb3dJbmRleCk7CiAgICAgICAg
IAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBSZXZpc2VkIHN0YWNrOiAiLCBs
aXN0RHVtcChtX3N0YWNrKSwgIlxuIik7CiAgICAgfQogICAgIApAQCAtMjA4LDE3ICsyMTAsMTcg
QEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKFNoYWRvd0No
aWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiICAgIEhpZ2hlc3QgcG9p
bnQgc2luY2UgbGFzdCB0aW1lOiAiLCBSYXdQb2ludGVyKGhpZ2hlc3RQb2ludFNpbmNlTGFzdFRp
bWUpLCAiXG4iKTsKICAgICAKICAgICAvLyBTZXQgZXZlcnl0aGluZyB1cCBzbyB0aGF0IHdlIGtu
b3cgd2hlcmUgdGhlIHRvcCBmcmFtZSBpcyBpbiB0aGUgbG9nLgogICAgIHVuc2lnbmVkIGluZGV4
SW5Mb2cgPSBsb2dDdXJzb3JJbmRleDsKICAgICAKICAgICBhdXRvIGFkdmFuY2VJbmRleEluTG9n
VG8gPSBbJl0gKENhbGxGcmFtZSogZnJhbWUsIEpTT2JqZWN0KiBjYWxsZWUsIENhbGxGcmFtZSog
Y2FsbGVyRnJhbWUpIC0+IGJvb2wgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYg
KFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICBBZHZhbmNpbmcgdG8gZnJhbWUgPSAiLCBSYXdQb2ludGVyKGZyYW1lKSwgIiBmcm9tIGluZGV4
SW5Mb2cgPSAiLCBpbmRleEluTG9nLCAiXG4iKTsKICAgICAgICAgaWYgKGluZGV4SW5Mb2cgPiBs
b2dDdXJzb3JJbmRleCkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBp
ZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFM
b2coIiAgICBCYWlsaW5nLlxuIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KQEAgLTI0NCw3ICsyNDYsNyBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0s
IEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGlmIChwYWNrZXQuaXNQcm9sb2d1ZSgpICYm
IHBhY2tldC5mcmFtZSA9PSBmcmFtZQogICAgICAgICAgICAgICAgICYmICghY2FsbGVlIHx8IHBh
Y2tldC5jYWxsZWUgPT0gY2FsbGVlKQogICAgICAgICAgICAgICAgICYmICghY2FsbGVyRnJhbWUg
fHwgcGFja2V0LmNhbGxlckZyYW1lID09IGNhbGxlckZyYW1lKSkgewotICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGb3VuZCBhdCBpbmRl
eEluTG9nID0gIiwgaW5kZXhJbkxvZywgIlxuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgICAgICB9CkBAIC0yNjYsNyArMjY4LDcgQEAgdm9pZCBTaGFkb3dDaGlja2Vu
Ojp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIC8vIEl0IHNlZW1zIGxp
a2UgdGhlIGxhdHRlciBvcHRpb24gaXMgbGVzcyBoYXJtZnVsLCBzbyB0aGF0J3Mgd2hhdCB3ZSBk
by4KICAgICAgICAgaW5kZXhJbkxvZyA9IG9sZEluZGV4SW5Mb2c7CiAgICAgICAgIAotICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBEaWRuJ3QgZmluZCBpdC5cbiIpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfTsKQEAgLTI4NiwxMCArMjg4LDEwIEBAIHZvaWQgU2hhZG93
Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHZpc2l0b3ItPmNhbGxGcmFtZSgp
OwotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoU2hhZG93Q2hpY2tl
bkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBFeGFtaW5p
bmcgIiwgUmF3UG9pbnRlcihjYWxsRnJhbWUpLCAiXG4iKTsKICAgICAgICAgICAgIGlmIChjYWxs
RnJhbWUgPT0gaGlnaGVzdFBvaW50U2luY2VMYXN0VGltZSkgewotICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBCYWlsaW5nIGF0ICIsIFJh
d1BvaW50ZXIoY2FsbEZyYW1lKSwgIiBiZWNhdXNlIGl0J3MgdGhlIGhpZ2hlc3QgcG9pbnQgc2lu
Y2UgbGFzdCB0aW1lLlxuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6
RG9uZTsKICAgICAgICAgICAgIH0KQEAgLTMxMiw3ICszMTQsNyBAQCB2b2lkIFNoYWRvd0NoaWNr
ZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgICAgICAvLyBU
aGlzIGNvbmRpdGlvbiBwcm90ZWN0cyB1cyBmcm9tIHRoZSBjYXNlIHdoZXJlIGFkdmFuY2VJbmRl
eEluTG9nVG8gZGlkbid0IGZpbmQKICAgICAgICAgICAgICAgICAvLyBhbnl0aGluZy4KICAgICAg
ICAgICAgICAgICAmJiBtX2xvZ1tpbmRleEluTG9nXS5mcmFtZSA9PSB0b1B1c2gubGFzdCgpLmZy
YW1lKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYg
KFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZygiICAgIEdvaW5nIHRvIGxvb3AgdGhyb3VnaCB0byBmaW5kIHRhaWwgZGVsZXRlZCBmcmFt
ZXMgd2l0aCBpbmRleEluTG9nID0gIiwgaW5kZXhJbkxvZywgIiBhbmQgcHVzaC1zdGFjayB0b3Ag
PSAiLCB0b1B1c2gubGFzdCgpLCAiXG4iKTsKICAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CiAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2xvZ1tpbmRleEluTG9nXS5mcmFtZSA9PSB0b1B1
c2gubGFzdCgpLmZyYW1lKTsKQEAgLTMzNyw3ICszMzksNyBAQCB2b2lkIFNoYWRvd0NoaWNrZW46
OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgICAgICAgICAgaW5k
ZXhJbkxvZy0tOyAvLyBTa2lwIG92ZXIgdGhlIHRhaWwgcGFja2V0LgogICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKCFhZHZhbmNlSW5kZXhJbkxvZ1RvKHRhaWxQ
YWNrZXQuZnJhbWUsIG51bGxwdHIsIG51bGxwdHIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTaGFkb3dDaGlja2Vu
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
Q2FuJ3QgZmluZCBwcm9sb2d1ZSBwYWNrZXQgZm9yIHRhaWw6ICIsIFJhd1BvaW50ZXIodGFpbFBh
Y2tldC5mcmFtZSksICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugd2VyZSB1
bmFibGUgdG8gbG9jYXRlIHRoZSBwcm9sb2d1ZSBwYWNrZXQgZm9yIHRoaXMgdGFpbCBwYWNrZXQu
CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHJhcmUgYnV0IGNhbiBoYXBwZW4g
aW4gYSBzaXR1YXRpb24gbGlrZToKQEAgLTM1Nyw3ICszNTksNyBAQCB2b2lkIFNoYWRvd0NoaWNr
ZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIHJldHVybiBT
dGFja1Zpc2l0b3I6OkNvbnRpbnVlOwogICAgICAgICB9KTsKIAotICAgIGlmICh2ZXJib3NlKQor
ICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2co
IiAgICBQdXNoaW5nOiAiLCBsaXN0RHVtcCh0b1B1c2gpLCAiXG4iKTsKICAgICAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSB0b1B1c2guc2l6ZSgpOyBpLS07KQpAQCAtMzczLDcgKzM3NSw3IEBAIHZv
aWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgIH0g
ZWxzZQogICAgICAgICBtX2xvZ0N1cnNvciA9IG1fbG9nOwogCi0gICAgaWYgKHZlcmJvc2UpCisg
ICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygi
ICAgIEFmdGVyIHB1c2hpbmc6ICIsICp0aGlzLCAiXG4iKTsKIAogICAgIC8vIFJlbW92ZSB0YWls
IGZyYW1lcyB1bnRpbCB0aGUgbnVtYmVyIG9mIHRhaWwgZGVsZXRlZCBmcmFtZXMgaXMgc21hbGwg
ZW5vdWdoLgpAQCAtMzk5LDcgKzQwMSw3IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZN
JiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHZlcmJv
c2UpCisgICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0
YUxvZygiICAgIEFmdGVyIGNsZWFuLXVwOiAiLCAqdGhpcywgIlxuIik7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQmluYXJ5U3dpdGNoLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQmluYXJ5U3dpdGNoLmNwcAppbmRleCBmM2RkY2ZjYTkyMWM5ODFl
ZjI4YzBiN2Q2ZDdhNTFmNWVmZDUzODhiLi4wZWFiNTY1MTkyNTMyOWUxN2IzZjVjYTI1ZGIxMzRh
YjRkZDlhNjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0JpbmFyeVN3
aXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9CaW5hcnlTd2l0Y2guY3Bw
CkBAIC0zMyw3ICszMyw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCituYW1lc3BhY2UgQmluYXJ5
U3dpdGNoSW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQog
CiBzdGF0aWMgdW5zaWduZWQgZ2xvYmFsQ291bnRlcjsgLy8gV2UgdXNlIGEgZGlmZmVyZW50IHNl
ZWQgZXZlcnkgdGltZSB3ZSBhcmUgaW52b2tlZC4KIApAQCAtNDcsNyArNDksNyBAQCBCaW5hcnlT
d2l0Y2g6OkJpbmFyeVN3aXRjaChHUFJSZWcgdmFsdWUsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYg
Y2FzZXMsIFR5cGUgdHlwZQogICAgIGlmIChjYXNlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChCaW5hcnlTd2l0Y2hJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgZGF0YUxvZygiT3JpZ2luYWwgY2FzZXM6ICIsIGxpc3REdW1wKGNhc2Vz
KSwgIlxuIik7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhc2VzLnNpemUo
KTsgKytpKQpAQCAtNTUsNyArNTcsNyBAQCBCaW5hcnlTd2l0Y2g6OkJpbmFyeVN3aXRjaChHUFJS
ZWcgdmFsdWUsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgY2FzZXMsIFR5cGUgdHlwZQogICAgIAog
ICAgIHN0ZDo6c29ydChtX2Nhc2VzLmJlZ2luKCksIG1fY2FzZXMuZW5kKCkpOwogCi0gICAgaWYg
KHZlcmJvc2UpCisgICAgaWYgKEJpbmFyeVN3aXRjaEludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICBkYXRhTG9nKCJTb3J0ZWQgY2FzZXM6ICIsIGxpc3REdW1wKG1fY2FzZXMpLCAiXG4iKTsKICAg
ICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgbV9jYXNlcy5zaXplKCk7ICsraSkKQEAg
LTEzNywxMSArMTM5LDExIEBAIGJvb2wgQmluYXJ5U3dpdGNoOjphZHZhbmNlKE1hY3JvQXNzZW1i
bGVyJiBqaXQpCiAKIHZvaWQgQmluYXJ5U3dpdGNoOjpidWlsZCh1bnNpZ25lZCBzdGFydCwgYm9v
bCBoYXJkU3RhcnQsIHVuc2lnbmVkIGVuZCkKIHsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAo
QmluYXJ5U3dpdGNoSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkJ1aWxkaW5n
IHdpdGggc3RhcnQgPSAiLCBzdGFydCwgIiwgaGFyZFN0YXJ0ID0gIiwgaGFyZFN0YXJ0LCAiLCBl
bmQgPSAiLCBlbmQsICJcbiIpOwogCiAgICAgYXV0byBhcHBlbmQgPSBbJl0gKGNvbnN0IEJyYW5j
aENvZGUmIGNvZGUpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCaW5hcnlT
d2l0Y2hJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIj09PiAiLCBjb2Rl
LCAiXG4iKTsKICAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQoY29kZSk7CiAgICAgfTsKQEAgLTE1
OSw3ICsxNjEsNyBAQCB2b2lkIEJpbmFyeVN3aXRjaDo6YnVpbGQodW5zaWduZWQgc3RhcnQsIGJv
b2wgaGFyZFN0YXJ0LCB1bnNpZ25lZCBlbmQpCiAgICAgY29uc3QgdW5zaWduZWQgbGVhZlRocmVz
aG9sZCA9IDM7CiAgICAgCiAgICAgaWYgKHNpemUgPD0gbGVhZlRocmVzaG9sZCkgewotICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEJpbmFyeVN3aXRjaEludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgZGF0YUxvZygiSXQncyBhIGxlYWYuXG4iKTsKICAgICAgICAgCiAgICAg
ICAgIC8vIEl0IHR1cm5zIG91dCB0aGF0IGZvciBleGFjdGx5IHRocmVlIGNhc2VzIG9yIGxlc3Ms
IGl0J3MgYmV0dGVyIHRvIGp1c3QgY29tcGFyZSBlYWNoCkBAIC0xODYsNyArMTg4LDcgQEAgdm9p
ZCBCaW5hcnlTd2l0Y2g6OmJ1aWxkKHVuc2lnbmVkIHN0YXJ0LCBib29sIGhhcmRTdGFydCwgdW5z
aWduZWQgZW5kKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgIGlmIChCaW5hcnlTd2l0Y2hJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgIGRhdGFMb2coImFsbENvbnNlY3V0aXZlID0gIiwgYWxsQ29uc2VjdXRpdmUsICJcbiIpOwog
ICAgICAgICAKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkLCAzPiBsb2NhbENhc2VJbmRpY2VzOwpA
QCAtMjE0LDcgKzIxNiw3IEBAIHZvaWQgQmluYXJ5U3dpdGNoOjpidWlsZCh1bnNpZ25lZCBzdGFy
dCwgYm9vbCBoYXJkU3RhcnQsIHVuc2lnbmVkIGVuZCkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChCaW5hcnlTd2l0Y2hJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgZGF0YUxvZygiSXQncyBub3QgYSBsZWFmLlxuIik7CiAgICAgICAgIAogICAg
IC8vIFRoZXJlIGFyZSB0d28gZGlmZmVyZW50IHN0cmF0ZWdpZXMgd2UgY291bGQgY29uc2lkZXIg
aGVyZToKQEAgLTMxNCw3ICszMTYsNyBAQCB2b2lkIEJpbmFyeVN3aXRjaDo6YnVpbGQodW5zaWdu
ZWQgc3RhcnQsIGJvb2wgaGFyZFN0YXJ0LCB1bnNpZ25lZCBlbmQpCiAgICAgICAgIAogICAgIHVu
c2lnbmVkIG1lZGlhbkluZGV4ID0gKHN0YXJ0ICsgZW5kKSAvIDI7CiAKLSAgICBpZiAodmVyYm9z
ZSkKKyAgICBpZiAoQmluYXJ5U3dpdGNoSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFM
b2coIm1lZGlhbkluZGV4ID0gIiwgbWVkaWFuSW5kZXgsICJcbiIpOwogCiAgICAgLy8gV2Ugd2Fu
dCBtZWRpYW5JbmRleCB0byBwb2ludCB0byB0aGUgdGhpbmcgd2Ugd2lsbCBkbyBhIGxlc3MtdGhh
biBjb21wYXJlIGFnYWluc3QuIFdlIHdhbnQKQEAgLTM0Nyw3ICszNDksNyBAQCB2b2lkIEJpbmFy
eVN3aXRjaDo6YnVpbGQodW5zaWduZWQgc3RhcnQsIGJvb2wgaGFyZFN0YXJ0LCB1bnNpZ25lZCBl
bmQpCiAgICAgUkVMRUFTRV9BU1NFUlQobWVkaWFuSW5kZXggPiBzdGFydCk7CiAgICAgUkVMRUFT
RV9BU1NFUlQobWVkaWFuSW5kZXggKyAxIDwgZW5kKTsKICAgICAgICAgCi0gICAgaWYgKHZlcmJv
c2UpCisgICAgaWYgKEJpbmFyeVN3aXRjaEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRh
TG9nKCJmaXhlZCBtZWRpYW5JbmRleCA9ICIsIG1lZGlhbkluZGV4LCAiXG4iKTsKIAogICAgIGFw
cGVuZChCcmFuY2hDb2RlKExlc3NUaGFuVG9QdXNoLCBtZWRpYW5JbmRleCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAppbmRleCAxZTQ5ZjJmODUzMjU4ZTM5NDE2
MWM3YzQ0MDAzOTkzM2ZhYWE5MjFjLi5hZDg2OWYyMGUyZTRkMWI5YWUwZGE3ODc0ODJmYjZmZTdk
MjhhZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRh
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAt
MjI1LDcgKzIyNSw5IEBAIHZvaWQgRGF0YTo6ZmluYWxpemVTdGF0cygpCiB9CiAKICNpZiBFTkFC
TEUoTExJTlRfU1RBVFMpCituYW1lc3BhY2UgTExJbnREYXRhSW50ZXJuYWwgewogc3RhdGljIGNv
bnN0IGJvb2wgdmVyYm9zZVN0YXRzID0gZmFsc2U7Cit9CiAKIHN0YXRpYyBib29sIGNvbXBhcmVT
dGF0cyhjb25zdCBPcGNvZGVTdGF0cyYgYSwgY29uc3QgT3Bjb2RlU3RhdHMmIGIpCiB7CkBAIC0y
ODMsNyArMjg1LDcgQEAgdm9pZCBEYXRhOjpsb2FkU3RhdHMoKQogICAgIHVuc2lnbmVkIGluZGV4
OwogICAgIGNoYXIgb3Bjb2RlTmFtZVsxMDBdOwogICAgIHdoaWxlIChmc2NhbmYoZmlsZSwgIlsl
dV06IGZhc3Q6JXp1IHNsb3c6JXp1IGlkOiV1ICVzXG4iLCAmaW5kZXgsICZsb2FkZWQuY291bnQs
ICZsb2FkZWQuc2xvd1BhdGhDb3VudCwgJmxvYWRlZC5pZCwgb3Bjb2RlTmFtZSkgIT0gRU9GKSB7
Ci0gICAgICAgIGlmICh2ZXJib3NlU3RhdHMpCisgICAgICAgIGlmIChMTEludERhdGFJbnRlcm5h
bDo6dmVyYm9zZVN0YXRzKQogICAgICAgICAgICAgZGF0YUxvZ0YoImxvYWRlZCBbJXVdOiBmYXN0
ICV6dSBzbG93ICV6dSBpZDoldSAlc1xuIiwgaW5kZXgsIGxvYWRlZC5jb3VudCwgbG9hZGVkLnNs
b3dQYXRoQ291bnQsIGxvYWRlZC5pZCwgb3Bjb2RlTmFtZSk7CiAKICAgICAgICAgT3Bjb2RlU3Rh
dHMmIHN0YXRzID0gb3Bjb2RlU3RhdHMobG9hZGVkLmlkKTsKQEAgLTI5MSw3ICsyOTMsNyBAQCB2
b2lkIERhdGE6OmxvYWRTdGF0cygpCiAgICAgICAgIHN0YXRzLnNsb3dQYXRoQ291bnQgPSBsb2Fk
ZWQuc2xvd1BhdGhDb3VudDsKICAgICB9CiAKLSAgICBpZiAodmVyYm9zZVN0YXRzKSB7CisgICAg
aWYgKExMSW50RGF0YUludGVybmFsOjp2ZXJib3NlU3RhdHMpIHsKICAgICAgICAgZGF0YUxvZ0Yo
IkFmdGVyIGxvYWRpbmcgZnJvbSAlcywgIiwgZmlsZW5hbWUpOwogICAgICAgICBkdW1wU3RhdHMo
KTsKICAgICB9CkBAIC0zMzAsNyArMzMyLDcgQEAgdm9pZCBEYXRhOjpzYXZlU3RhdHMoKQogICAg
ICAgICBpZiAoIXN0YXRzLmNvdW50ICYmICFzdGF0cy5zbG93UGF0aENvdW50KQogICAgICAgICAg
ICAgYnJlYWs7IC8vIHN0YXRzIGFyZSBzb3J0ZWQuIElmIHdlIGVuY291bnRlcmVkIDAgY291bnRz
LCB0aGVuIHRoZXJlIGFyZSBubyBtb3JlIG5vbi16ZXJvIGNvdW50cy4KIAotICAgICAgICBpZiAo
dmVyYm9zZVN0YXRzKQorICAgICAgICBpZiAoTExJbnREYXRhSW50ZXJuYWw6OnZlcmJvc2VTdGF0
cykKICAgICAgICAgICAgIGRhdGFMb2dGKCJzYXZlZCBbJXVdOiBmYXN0OiV6dSBzbG93OiV6dSBp
ZDoldSAlc1xuIiwgaW5kZXgsIHN0YXRzLmNvdW50LCBzdGF0cy5zbG93UGF0aENvdW50LCBzdGF0
cy5pZCwgb3Bjb2RlTmFtZXNbc3RhdHMuaWRdKTsKIAogICAgICAgICBmcHJpbnRmKGZpbGUsICJb
JXVdOiBmYXN0OiV6dSBzbG93OiV6dSBpZDoldSAlc1xuIiwgaW5kZXgsIHN0YXRzLmNvdW50LCBz
dGF0cy5zbG93UGF0aENvdW50LCBzdGF0cy5pZCwgb3Bjb2RlTmFtZXNbc3RhdHMuaWRdKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRl
eCA4ZjcxMTdiN2Y2MTQyYmEwNmFlNzFjZTdjZTZkZGYzYTE2N2U3NzE3Li4zYjcxYTMwOTY3ZWEz
OThkNTkyOTJiMzk5Y2IzZWRiNTYwNWE0YjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0xMzY2LDcgKzEzNjYsOSBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9Qcml2YXRlRnVuY0FwcGVuZE1lbWNw
eShFeGVjU3RhdGUqIGV4ZWMpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIEFycmF5UHJvdG90
eXBlLmNvbnN0cnVjdG9yIFdhdGNocG9pbnQgLS0tLS0tLS0tLS0tLS0tLS0tCiAKK25hbWVzcGFj
ZSBBcnJheVByb3RvdHlwZUludGVybmFsIHsKIHN0YXRpYyBib29sIHZlcmJvc2UgPSBmYWxzZTsK
K30KIAogY2xhc3MgQXJyYXlQcm90b3R5cGVBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlXYXRjaHBv
aW50IDogcHVibGljIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2Ug
ewogcHVibGljOgpAQCAtMTM4OCw3ICsxMzkwLDcgQEAgdm9pZCBBcnJheVByb3RvdHlwZTo6dHJ5
SW5pdGlhbGl6ZVNwZWNpZXNXYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmICh2ZXJib3NlKQorICAg
IGlmIChBcnJheVByb3RvdHlwZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJJ
bml0aWFsaXppbmcgQXJyYXkgc3BlY2llcyB3YXRjaHBvaW50cyBmb3IgQXJyYXkucHJvdG90eXBl
OiAiLCBwb2ludGVyRHVtcCh0aGlzKSwgIiB3aXRoIHN0cnVjdHVyZTogIiwgcG9pbnRlckR1bXAo
dGhpcy0+c3RydWN0dXJlKCkpLCAiXG5hbmQgQXJyYXk6ICIsIHBvaW50ZXJEdW1wKHRoaXMtPmds
b2JhbE9iamVjdCgpLT5hcnJheUNvbnN0cnVjdG9yKCkpLCAiIHdpdGggc3RydWN0dXJlOiAiLCBw
b2ludGVyRHVtcCh0aGlzLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlDb25zdHJ1Y3RvcigpLT5zdHJ1
Y3R1cmUoKSksICJcbiIpOwogICAgIC8vIEZpcnN0IHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQg
dGhlIEFycmF5LnByb3RvdHlwZS5jb25zdHJ1Y3RvciBwcm9wZXJ0eSBwb2ludHMgdG8gQXJyYXkK
ICAgICAvLyBhbmQgdGhhdCBBcnJheVtTeW1ib2wuc3BlY2llc10gaXMgdGhlIHByaW1vcmRpYWwg
R2V0dGVyU2V0dGVyLgpAQCAtMTQ2Niw3ICsxNDY4LDcgQEAgdm9pZCBBcnJheVByb3RvdHlwZUFk
YXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ6OmhhbmRsZUZpcmUoY29uc3QgRmlyZURl
dGEKIAogICAgIFN0cmluZ0ZpcmVEZXRhaWwgc3RyaW5nRGV0YWlsKG91dC50b0NTdHJpbmcoKS5k
YXRhKCkpOwogCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEFycmF5UHJvdG90eXBlSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgIFdURjo6ZGF0YUxvZyhzdHJpbmdEZXRhaWwsICJcbiIpOwog
CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fYXJyYXlQcm90b3R5cGUtPmds
b2JhbE9iamVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvcklu
c3RhbmNlLmNwcAppbmRleCA1NDkzZjhmNzBhMzU3MzIxZjE2N2RlMWM1MmI0ZjM1Mjk5ODgwNDhj
Li5mYzhiODQ4MmJlZmQ2YjBjMDc0YjRlZThmZDI3YmFhMjIyNThiMDg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcApAQCAtMTA4LDQxICsx
MDgsNiBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vycm9yKENhbGxGcmFtZSogY2FsbEZy
YW1lLCBFcnJvckluc3RhbmNlKiBleGNlcHRpb24sCiAKIH0KIAotY2xhc3MgRmluZEZpcnN0Q2Fs
bGVyRnJhbWVXaXRoQ29kZWJsb2NrRnVuY3RvciB7Ci1wdWJsaWM6Ci0gICAgRmluZEZpcnN0Q2Fs
bGVyRnJhbWVXaXRoQ29kZWJsb2NrRnVuY3RvcihDYWxsRnJhbWUqIHN0YXJ0Q2FsbEZyYW1lKQot
ICAgICAgICA6IG1fc3RhcnRDYWxsRnJhbWUoc3RhcnRDYWxsRnJhbWUpCi0gICAgICAgICwgbV9m
b3VuZENhbGxGcmFtZShudWxscHRyKQotICAgICAgICAsIG1fZm91bmRTdGFydENhbGxGcmFtZShm
YWxzZSkKLSAgICAgICAgLCBtX2luZGV4KDApCi0gICAgeyB9Ci0KLSAgICBTdGFja1Zpc2l0b3I6
OlN0YXR1cyBvcGVyYXRvcigpKFN0YWNrVmlzaXRvciYgdmlzaXRvcikKLSAgICB7Ci0gICAgICAg
IGlmICghbV9mb3VuZFN0YXJ0Q2FsbEZyYW1lICYmICh2aXNpdG9yLT5jYWxsRnJhbWUoKSA9PSBt
X3N0YXJ0Q2FsbEZyYW1lKSkKLSAgICAgICAgICAgIG1fZm91bmRTdGFydENhbGxGcmFtZSA9IHRy
dWU7Ci0KLSAgICAgICAgaWYgKG1fZm91bmRTdGFydENhbGxGcmFtZSkgewotICAgICAgICAgICAg
aWYgKHZpc2l0b3ItPmNhbGxGcmFtZSgpLT5jb2RlQmxvY2soKSkgewotICAgICAgICAgICAgICAg
IG1fZm91bmRDYWxsRnJhbWUgPSB2aXNpdG9yLT5jYWxsRnJhbWUoKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
bV9pbmRleCsrOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29u
dGludWU7Ci0gICAgfQotCi0gICAgQ2FsbEZyYW1lKiBmb3VuZENhbGxGcmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZm91bmRDYWxsRnJhbWU7IH0KLSAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0IHsg
cmV0dXJuIG1faW5kZXg7IH0KLQotcHJpdmF0ZToKLSAgICBDYWxsRnJhbWUqIG1fc3RhcnRDYWxs
RnJhbWU7Ci0gICAgQ2FsbEZyYW1lKiBtX2ZvdW5kQ2FsbEZyYW1lOwotICAgIGJvb2wgbV9mb3Vu
ZFN0YXJ0Q2FsbEZyYW1lOwotICAgIHVuc2lnbmVkIG1faW5kZXg7Ci19OwotCiB2b2lkIEVycm9y
SW5zdGFuY2U6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIGJvb2wgdXNlQ3VycmVudEZyYW1lKQogewogICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXQuY3BwCmluZGV4IDdlZjAwMDhkODM3Y2NmOTEzNzE0ZjNhMzVjMzk1
NTE5OThiNmY5N2YuLmFjNzY5NzdhOTU1ZjZiYzlkNmVjMDIwN2IyMjQyNWMxYTliYjk1MTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0LmNwcApAQCAtNDksNyArNDksMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNz
SW5mbyBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bERhdGVUaW1lRm9y
bWF0KSB9OwogCituYW1lc3BhY2UgSW50bERURkludGVybmFsIHsKIHN0YXRpYyBjb25zdCBjaGFy
KiBjb25zdCByZWxldmFudEV4dGVuc2lvbktleXNbMl0gPSB7ICJjYSIsICJudSIgfTsKK30KKwog
c3RhdGljIGNvbnN0IHNpemVfdCBpbmRleE9mRXh0ZW5zaW9uS2V5Q2EgPSAwOwogc3RhdGljIGNv
bnN0IHNpemVfdCBpbmRleE9mRXh0ZW5zaW9uS2V5TnUgPSAxOwogCkBAIC00NTAsNyArNDUzLDcg
QEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChFeGVj
U3RhdGUmIGV4ZWMsIEpTVmFsdWUgbG9jYWwKICAgICAvLyAxMS4gTGV0IGxvY2FsZURhdGEgYmUg
dGhlIHZhbHVlIG9mICVEYXRlVGltZUZvcm1hdCUuW1tsb2NhbGVEYXRhXV0uCiAgICAgLy8gMTIu
IExldCByIGJlIFJlc29sdmVMb2NhbGUoICVEYXRlVGltZUZvcm1hdCUuW1thdmFpbGFibGVMb2Nh
bGVzXV0sIHJlcXVlc3RlZExvY2FsZXMsIG9wdCwgJURhdGVUaW1lRm9ybWF0JS5bW3JlbGV2YW50
RXh0ZW5zaW9uS2V5c11dLCBsb2NhbGVEYXRhKS4KICAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4g
YXZhaWxhYmxlTG9jYWxlcyA9IGV4ZWMuanNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPmludGxE
YXRlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKTsKLSAgICBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiByZXNvbHZlZCA9IHJlc29sdmVMb2NhbGUoZXhlYywgYXZhaWxhYmxlTG9jYWxlcywgcmVx
dWVzdGVkTG9jYWxlcywgbG9jYWxlT3B0LCByZWxldmFudEV4dGVuc2lvbktleXMsIFdURl9BUlJB
WV9MRU5HVEgocmVsZXZhbnRFeHRlbnNpb25LZXlzKSwgbG9jYWxlRGF0YSk7CisgICAgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4gcmVzb2x2ZWQgPSByZXNvbHZlTG9jYWxlKGV4ZWMsIGF2YWlsYWJs
ZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGxvY2FsZU9wdCwgSW50bERURkludGVybmFsOjpy
ZWxldmFudEV4dGVuc2lvbktleXMsIFdURl9BUlJBWV9MRU5HVEgoSW50bERURkludGVybmFsOjpy
ZWxldmFudEV4dGVuc2lvbktleXMpLCBsb2NhbGVEYXRhKTsKIAogICAgIC8vIDEzLiBTZXQgZGF0
ZVRpbWVGb3JtYXQuW1tsb2NhbGVdXSB0byB0aGUgdmFsdWUgb2Ygci5bW2xvY2FsZV1dLgogICAg
IG1fbG9jYWxlID0gcmVzb2x2ZWQuZ2V0KHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZS5zdHJpbmco
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlRGVm
ZXJyZWRUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlRGVm
ZXJyZWRUaW1lci5jcHAKaW5kZXggM2RjYWVhYWZlNWIzOGZiYTViYThhZjk3NjYwZjUxYmM2NTlm
ZDI0NS4uMDg3ODA0Njk1Y2RmMzVhNzQ5NGJiZDU4OTQ0MjkwNGViOWNhNzAzOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZURlZmVycmVkVGltZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVy
LmNwcApAQCAtMzQsNyArMzQsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFtZXNwYWNlIFBy
b21pc2VEZWZlcnJlZFRpbWVySW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9
IGZhbHNlOworfQogCiBQcm9taXNlRGVmZXJyZWRUaW1lcjo6UHJvbWlzZURlZmVycmVkVGltZXIo
Vk0mIHZtKQogICAgIDogQmFzZSgmdm0pCkBAIC01NSw3ICs1Nyw3IEBAIHZvaWQgUHJvbWlzZURl
ZmVycmVkVGltZXI6OmRvV29yaygpCiAgICAgICAgIEpTUHJvbWlzZURlZmVycmVkKiB0aWNrZXQ7
CiAgICAgICAgIFRhc2sgdGFzazsKICAgICAgICAgc3RkOjp0aWUodGlja2V0LCB0YXNrKSA9IG1f
dGFza3MudGFrZUxhc3QoKTsKLSAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIkRvaW5nIHdv
cmsgb24gcHJvbWlzZTogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKKyAgICAgICAgZGF0YUxvZ0xu
SWYoUHJvbWlzZURlZmVycmVkVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkRvaW5nIHdvcmsgb24g
cHJvbWlzZTogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKIAogICAgICAgICAvLyBXZSBtYXkgaGF2
ZSBhbHJlYWR5IGNhbmNlbGVkIHRoZXNlIHByb21pc2VzLgogICAgICAgICBpZiAobV9wZW5kaW5n
UHJvbWlzZXMuY29udGFpbnModGlja2V0KSkgewpAQCAtMTA1LDExICsxMDcsMTEgQEAgdm9pZCBQ
cm9taXNlRGVmZXJyZWRUaW1lcjo6YWRkUGVuZGluZ1Byb21pc2UoSlNQcm9taXNlRGVmZXJyZWQq
IHRpY2tldCwgVmVjdG9yPFMKIAogICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nUHJvbWlzZXMu
YWRkKHRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PigpKTsKICAgICBpZiAocmVzdWx0Lmlz
TmV3RW50cnkpIHsKLSAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIkFkZGluZyBuZXcgcGVu
ZGluZyBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworICAgICAgICBkYXRhTG9nTG5J
ZihQcm9taXNlRGVmZXJyZWRUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQWRkaW5nIG5ldyBwZW5k
aW5nIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CiAgICAgICAgIGRlcGVuZGVuY2ll
cy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4oKm1fdm0sIHRpY2tldCkpOwogICAgICAgICByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlID0gV1RGTW92ZShkZXBlbmRlbmNpZXMpOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJBZGRpbmcgbmV3IGRlcGVuZGVuY2llcyBmb3Ig
cHJvbWlzZTogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoUHJv
bWlzZURlZmVycmVkVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkFkZGluZyBuZXcgZGVwZW5kZW5j
aWVzIGZvciBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwogICAgICAgICByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlLmFwcGVuZFZlY3RvcihkZXBlbmRlbmNpZXMpOwogICAgIH0KIApAQCAt
MTI0LDcgKzEyNiw3IEBAIGJvb2wgUHJvbWlzZURlZmVycmVkVGltZXI6OmNhbmNlbFBlbmRpbmdQ
cm9taXNlKEpTUHJvbWlzZURlZmVycmVkKiB0aWNrZXQpCiAgICAgYm9vbCByZXN1bHQgPSBtX3Bl
bmRpbmdQcm9taXNlcy5yZW1vdmUodGlja2V0KTsKIAogICAgIGlmIChyZXN1bHQpCi0gICAgICAg
IGRhdGFMb2dMbklmKHZlcmJvc2UsICJDYW5jZWxpbmcgcHJvbWlzZTogIiwgUmF3UG9pbnRlcih0
aWNrZXQpKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoUHJvbWlzZURlZmVycmVkVGltZXJJbnRlcm5h
bDo6dmVyYm9zZSwgIkNhbmNlbGluZyBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwog
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1R5cGVQcm9maWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlUHJvZmlsZXIuY3BwCmluZGV4IGUzMTVjNDEyYjkzMzMwYjA1YWY2NjQwNzBjYTExNmNk
NTNlOTJkYjcuLjBmODVlZjg4Mjg1YzJlOGI4MWQ1ZmYwMGJjYWEyYjk5Y2Y2ZGM4MGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcApAQCAtMzIs
NyArMzIsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFtZXNwYWNlIFR5cGVQcm9maWxlcklu
dGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogVHlwZVBy
b2ZpbGVyOjpUeXBlUHJvZmlsZXIoKQogICAgIDogbV9uZXh0VW5pcXVlVmFyaWFibGVJRCgxKQpA
QCAtNTksNyArNjEsNyBAQCB2b2lkIFR5cGVQcm9maWxlcjo6bG9nVHlwZXNGb3JUeXBlTG9jYXRp
b24oVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiwgVk0mIHZtKQogCiB2b2lkIFR5cGVQcm9maWxlcjo6
aW5zZXJ0TmV3TG9jYXRpb24oVHlwZUxvY2F0aW9uKiBsb2NhdGlvbikKIHsKLSAgICBpZiAodmVy
Ym9zZSkKKyAgICBpZiAoVHlwZVByb2ZpbGVySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRh
dGFMb2dGKCJSZWdpc3RlcmluZyBsb2NhdGlvbjo6IGRpdm90U3RhcnQ6JXUsIGRpdm90RW5kOiV1
XG4iLCBsb2NhdGlvbi0+bV9kaXZvdFN0YXJ0LCBsb2NhdGlvbi0+bV9kaXZvdEVuZCk7CiAKICAg
ICBpZiAoIW1fYnVja2V0TWFwLmNvbnRhaW5zKGxvY2F0aW9uLT5tX3NvdXJjZUlEKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHAKaW5k
ZXggODVjNDlkMDQ2YmFmZWFjN2MyZmRlYTIxNTI1OGQzYzQ0ZWZjZDExNS4uNTNkNzNlODhiMTRl
Mzg2YjczNzhiODgyNDdiNzc2OTY0ZjZiNTdlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwCkBAIC0zNyw3ICszNyw5IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCituYW1lc3BhY2UgVHlwZVByb2ZpbGVyTG9nSW50ZXJuYWwgewogc3Rh
dGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiB2b2lkIFR5cGVQcm9maWxlckxv
Zzo6aW5pdGlhbGl6ZUxvZygpCiB7CkBAIC01Niw3ICs1OCw3IEBAIFR5cGVQcm9maWxlckxvZzo6
flR5cGVQcm9maWxlckxvZygpCiB2b2lkIFR5cGVQcm9maWxlckxvZzo6cHJvY2Vzc0xvZ0VudHJp
ZXMoY29uc3QgU3RyaW5nJiByZWFzb24pCiB7CiAgICAgZG91YmxlIGJlZm9yZSA9IDA7Ci0gICAg
aWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoVHlwZVByb2ZpbGVyTG9nSW50ZXJuYWw6OnZlcmJvc2Up
IHsKICAgICAgICAgZGF0YUxvZygiUHJvY2VzcyBjYWxsZXI6JyIsIHJlYXNvbiwgIiciKTsKICAg
ICAgICAgYmVmb3JlID0gY3VycmVudFRpbWVNUygpOwogICAgIH0KQEAgLTk1LDcgKzk3LDcgQEAg
dm9pZCBUeXBlUHJvZmlsZXJMb2c6OnByb2Nlc3NMb2dFbnRyaWVzKGNvbnN0IFN0cmluZyYgcmVh
c29uKQogICAgIC8vIHBhdXNlcyBhbmQgY2F1c2VzIHRoZSBjb2xsZWN0b3IgdG8gbWFyayB0aGUg
bG9nLgogICAgIG1fY3VycmVudExvZ0VudHJ5UHRyID0gbV9sb2dTdGFydFB0cjsKIAotICAgIGlm
ICh2ZXJib3NlKSB7CisgICAgaWYgKFR5cGVQcm9maWxlckxvZ0ludGVybmFsOjp2ZXJib3NlKSB7
CiAgICAgICAgIGRvdWJsZSBhZnRlciA9IGN1cnJlbnRUaW1lTVMoKTsKICAgICAgICAgZGF0YUxv
Z0YoIiBQcm9jZXNzaW5nIHRoZSBsb2cgdG9vazogJyVmJyBtc1xuIiwgYWZ0ZXIgLSBiZWZvcmUp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtN
YXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFBy
b3RvdHlwZS5jcHAKaW5kZXggNTMzNGIxMzkxNTg4NGE4OTAwYzQyYmQ0MWE5NzJjNGYwMGRiZDdh
ZC4uZTAwNjFhOWI4ZTU4OTc3YTJjOTI5NDYzNTdkMjZhOWQ4OGQ0NzFkMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5jcHAKQEAgLTY5
LDYgKzY5LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNXZWFrTWFwKiBnZXRXZWFrTWFwKENh
bGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHZhbHVlKQogICAgIHRocm93VHlwZUVycm9yKGNh
bGxGcmFtZSwgc2NvcGUsIFdURjo6QVNDSUlMaXRlcmFsKCJDYWxsZWQgV2Vha01hcCBmdW5jdGlv
biBvbiBhIG5vbi1XZWFrTWFwIG9iamVjdCIpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KK30K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwRGVsZXRlKENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9XZWFrU2V0UHJvdG90eXBlLmNwcAppbmRleCA1ODM4YjRmMGFmMDNhZWZlOTgzNjdhNjE3
YjUzNDFlYzViZWRlY2RjLi5iMzQ1ZTAzNDJmZmRjZDI3MTFiYWUzMTlmNGZmZDllYmEwNThjZjI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90
eXBlLmNwcApAQCAtNjcsNiArNjcsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1dlYWtTZXQq
IGdldFdlYWtTZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdmFsdWUpCiAgICAgdGhy
b3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkNhbGxlZCBX
ZWFrU2V0IGZ1bmN0aW9uIG9uIGEgbm9uLVdlYWtTZXQgb2JqZWN0IikpOwogICAgIHJldHVybiBu
dWxscHRyOwogfQorfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dl
YWtTZXREZWxldGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dFJlZ0V4cC5jcHAKaW5kZXggM2E2MGIxYjc5NDc5ZGFhZDhiZjk2MGRlNGU1Y2EzZmE4YmUyMWY0
OS4uMmM0OTFmN2JmMTIwNDU1ZThhNzNhMDNiOTA1YTc1MTFlYjc3NjU1YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0UmVnRXhwLmNwcApAQCAtMTg3LDcgKzE4Nyw5IEBAIGludCBtYWluKGludCBh
cmdjLCBjaGFyKiogYXJndikKICAgICByZXR1cm4gcmVzOwogfQogCituYW1lc3BhY2UgdGVzdFJl
Z0V4cEludGVybmFsIHsKIHN0YXRpYyBib29sIHRlc3RPbmVSZWdFeHAoVk0mIHZtLCBSZWdFeHAq
IHJlZ2V4cCwgUmVnRXhwVGVzdCogcmVnRXhwVGVzdCwgYm9vbCB2ZXJib3NlLCB1bnNpZ25lZCBp
bnQgbGluZU51bWJlcikKK30KIHsKICAgICBib29sIHJlc3VsdCA9IHRydWU7CiAgICAgVmVjdG9y
PGludD4gb3V0VmVjdG9yOwpAQCAtMTk2LDEyICsxOTgsMTIgQEAgc3RhdGljIGJvb2wgdGVzdE9u
ZVJlZ0V4cChWTSYgdm0sIFJlZ0V4cCogcmVnZXhwLCBSZWdFeHBUZXN0KiByZWdFeHBUZXN0LCBi
b29sIHYKIAogICAgIGlmIChtYXRjaFJlc3VsdCAhPSByZWdFeHBUZXN0LT5yZXN1bHQpIHsKICAg
ICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAo
dGVzdFJlZ0V4cEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgcHJpbnRmKCJMaW5lICVk
OiByZXN1bHRzIG1pc21hdGNoIC0gZXhwZWN0ZWQgJWQgZ290ICVkXG4iLCBsaW5lTnVtYmVyLCBy
ZWdFeHBUZXN0LT5yZXN1bHQsIG1hdGNoUmVzdWx0KTsKICAgICB9IGVsc2UgaWYgKG1hdGNoUmVz
dWx0ICE9IC0xKSB7CiAgICAgICAgIGlmIChvdXRWZWN0b3Iuc2l6ZSgpICE9IHJlZ0V4cFRlc3Qt
PmV4cGVjdFZlY3Rvci5zaXplKCkpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGlmICh0ZXN0UmVnRXhwSW50ZXJu
YWw6OnZlcmJvc2UpIHsKICNpZiBPUyhXSU5ET1dTKQogICAgICAgICAgICAgICAgIHByaW50Zigi
TGluZSAlZDogb3V0cHV0IHZlY3RvciBzaXplIG1pc21hdGNoIC0gZXhwZWN0ZWQgJUl1IGdvdCAl
SXVcbiIsIGxpbmVOdW1iZXIsIHJlZ0V4cFRlc3QtPmV4cGVjdFZlY3Rvci5zaXplKCksIG91dFZl
Y3Rvci5zaXplKCkpOwogI2Vsc2UKQEAgLTIxMCw3ICsyMTIsNyBAQCBzdGF0aWMgYm9vbCB0ZXN0
T25lUmVnRXhwKFZNJiB2bSwgUmVnRXhwKiByZWdleHAsIFJlZ0V4cFRlc3QqIHJlZ0V4cFRlc3Qs
IGJvb2wgdgogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKG91dFZlY3Rvci5zaXpl
KCkgJSAyKSB7CiAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmICh2
ZXJib3NlKSB7CisgICAgICAgICAgICBpZiAodGVzdFJlZ0V4cEludGVybmFsOjp2ZXJib3NlKSB7
CiAjaWYgT1MoV0lORE9XUykKICAgICAgICAgICAgICAgICBwcmludGYoIkxpbmUgJWQ6IG91dHB1
dCB2ZWN0b3Igc2l6ZSBpcyBvZGQgKCVJdSksIHNob3VsZCBiZSBldmVuXG4iLCBsaW5lTnVtYmVy
LCBvdXRWZWN0b3Iuc2l6ZSgpKTsKICNlbHNlCkBAIC0yMjQsNyArMjI2LDcgQEAgc3RhdGljIGJv
b2wgdGVzdE9uZVJlZ0V4cChWTSYgdm0sIFJlZ0V4cCogcmVnZXhwLCBSZWdFeHBUZXN0KiByZWdF
eHBUZXN0LCBib29sIHYKICAgICAgICAgICAgICAgICBzaXplX3Qgc3RhcnRJbmRleCA9IGkqMjsK
ICAgICAgICAgICAgICAgICBpZiAob3V0VmVjdG9yW3N0YXJ0SW5kZXhdICE9IHJlZ0V4cFRlc3Qt
PmV4cGVjdFZlY3RvcltzdGFydEluZGV4XSkgewogICAgICAgICAgICAgICAgICAgICByZXN1bHQg
PSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHRlc3RSZWdFeHBJbnRlcm5hbDo6dmVyYm9zZSkgewogI2lmIE9TKFdJTkRP
V1MpCiAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIkxpbmUgJWQ6IG91dHB1dCB2ZWN0
b3IgbWlzbWF0Y2ggYXQgaW5kZXggJUl1IC0gZXhwZWN0ZWQgJWQgZ290ICVkXG4iLCBsaW5lTnVt
YmVyLCBzdGFydEluZGV4LCByZWdFeHBUZXN0LT5leHBlY3RWZWN0b3Jbc3RhcnRJbmRleF0sIG91
dFZlY3RvcltzdGFydEluZGV4XSk7CiAjZWxzZQpAQCAtMjM0LDcgKzIzNiw3IEBAIHN0YXRpYyBi
b29sIHRlc3RPbmVSZWdFeHAoVk0mIHZtLCBSZWdFeHAqIHJlZ2V4cCwgUmVnRXhwVGVzdCogcmVn
RXhwVGVzdCwgYm9vbCB2CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICgo
aSA+IDApICYmIChyZWdFeHBUZXN0LT5leHBlY3RWZWN0b3Jbc3RhcnRJbmRleF0gIT0gLTEpICYm
IChvdXRWZWN0b3Jbc3RhcnRJbmRleCsxXSAhPSByZWdFeHBUZXN0LT5leHBlY3RWZWN0b3Jbc3Rh
cnRJbmRleCsxXSkpIHsKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0
ZXN0UmVnRXhwSW50ZXJuYWw6OnZlcmJvc2UpIHsKICNpZiBPUyhXSU5ET1dTKQogICAgICAgICAg
ICAgICAgICAgICAgICAgcHJpbnRmKCJMaW5lICVkOiBvdXRwdXQgdmVjdG9yIG1pc21hdGNoIGF0
IGluZGV4ICVJdSAtIGV4cGVjdGVkICVkIGdvdCAlZFxuIiwgbGluZU51bWJlciwgc3RhcnRJbmRl
eCArIDEsIHJlZ0V4cFRlc3QtPmV4cGVjdFZlY3RvcltzdGFydEluZGV4ICsgMV0sIG91dFZlY3Rv
cltzdGFydEluZGV4ICsgMV0pOwogI2Vsc2UKQEAgLTQwNyw3ICs0MDksOSBAQCBzdGF0aWMgUmVn
RXhwVGVzdCogcGFyc2VUZXN0TGluZShjaGFyKiBsaW5lLCBpbnQgbGluZUxlbmd0aCkKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCituYW1lc3BhY2UgdGVzdFJlZ0V4cEludGVybmFsIHsKIHN0YXRp
YyBib29sIHJ1bkZyb21GaWxlcyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGZpbGVzLCBib29sIHZlcmJvc2UpCit9CiB7CiAgICAgU3RyaW5nIHNjcmlw
dDsKICAgICBTdHJpbmcgZmlsZU5hbWU7CkBAIC00NTAsNyArNDU0LDcgQEAgc3RhdGljIGJvb2wg
cnVuRnJvbUZpbGVzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZmlsZXMKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAocmVnZXhw
ICYmIHJlZ0V4cFRlc3QpIHsKICAgICAgICAgICAgICAgICAgICAgKyt0ZXN0czsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCF0ZXN0T25lUmVnRXhwKHZtLCByZWdleHAsIHJlZ0V4cFRlc3QsIHZl
cmJvc2UsIGxpbmVOdW1iZXIpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghdGVzdE9uZVJl
Z0V4cCh2bSwgcmVnZXhwLCByZWdFeHBUZXN0LCB0ZXN0UmVnRXhwSW50ZXJuYWw6OnZlcmJvc2Us
IGxpbmVOdW1iZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlcysrOwogICAg
ICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJGYWlsdXJlIG9uIGxpbmUgJXVcbiIsIGxpbmVO
dW1iZXIpOwogICAgICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggMDBhYzNjMWFkYmQ3YWM4MmQyMTU5
MGY2MDEyOGI5NGE0MDBjNjI4ZS4uYWQ3ZDYyMWVjODc4ODVhYzAzNmQ4MTMxM2Q1YjBmYTA5MWE0
ZWY5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcApAQCAtNzYsNyArNzYsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20g
ewogdXNpbmcgbmFtZXNwYWNlIEIzOwogCiBuYW1lc3BhY2UgewotY29uc3QgYm9vbCB2ZXJib3Nl
ID0gZmFsc2U7CituYW1lc3BhY2UgV2FzbUIzSVJHZW5lcmF0b3JJbnRlcm5hbCB7CitzdGF0aWMg
Y29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiB9CiAKIGNsYXNzIEIzSVJHZW5lcmF0b3Ig
ewpAQCAtMTU2Niw5ICsxNTY4LDkgQEAgRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEludGVybmFs
RnVuY3Rpb24+LCBTdHJpbmc+IHBhcnNlQW5kQ29tcGlsZShDb21waWxhdGlvbkMKICAgICBpZiAo
IUFTU0VSVF9ESVNBQkxFRCkKICAgICAgICAgdmFsaWRhdGUocHJvY2VkdXJlLCAiQWZ0ZXIgcGFy
c2luZzpcbiIpOwogCi0gICAgZGF0YUxvZ0lmKHZlcmJvc2UsICJQcmUgU1NBOiAiLCBwcm9jZWR1
cmUpOworICAgIGRhdGFMb2dJZihXYXNtQjNJUkdlbmVyYXRvckludGVybmFsOjp2ZXJib3NlLCAi
UHJlIFNTQTogIiwgcHJvY2VkdXJlKTsKICAgICBmaXhTU0EocHJvY2VkdXJlKTsKLSAgICBkYXRh
TG9nSWYodmVyYm9zZSwgIlBvc3QgU1NBOiAiLCBwcm9jZWR1cmUpOworICAgIGRhdGFMb2dJZihX
YXNtQjNJUkdlbmVyYXRvckludGVybmFsOjp2ZXJib3NlLCAiUG9zdCBTU0E6ICIsIHByb2NlZHVy
ZSk7CiAgICAgCiAgICAgewogICAgICAgICBCMzo6cHJlcGFyZUZvckdlbmVyYXRpb24ocHJvY2Vk
dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFu
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAppbmRleCA1
MGZlYjczMGIwMGZkZDlkMGYwMTZlMzY2OTA4MTA3MjJkYmFkYjE1Li4yMmVkZDE2MDEzZTUxOTZm
ZTc0YWJkZDg0MGM2ZTRiY2M5NzUwZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUJCUVBsYW4uY3BwCkBAIC00OSw3ICs0OSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgV2FzbSB7CiAKK25hbWVzcGFjZSBXYXNtQkJRUGxhbkludGVybmFsIHsKIHN0YXRpYyBj
b25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogQkJRUGxhbjo6QkJRUGxhbihWTSogdm0s
IFJlZjxNb2R1bGVJbmZvcm1hdGlvbj4gaW5mbywgQXN5bmNXb3JrIHdvcmssIENvbXBsZXRpb25U
YXNrJiYgdGFzaykKICAgICA6IEJhc2Uodm0sIFdURk1vdmUoaW5mbyksIFdURk1vdmUodGFzaykp
CkBAIC04Niw3ICs4OCw3IEBAIGNvbnN0IGNoYXIqIEJCUVBsYW46OnN0YXRlU3RyaW5nKFN0YXRl
IHN0YXRlKQogdm9pZCBCQlFQbGFuOjptb3ZlVG9TdGF0ZShTdGF0ZSBzdGF0ZSkKIHsKICAgICBB
U1NFUlQoc3RhdGUgPj0gbV9zdGF0ZSk7Ci0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSAmJiBzdGF0
ZSAhPSBtX3N0YXRlLCAibW92aW5nIHRvIHN0YXRlOiAiLCBzdGF0ZVN0cmluZyhzdGF0ZSksICIg
ZnJvbSBzdGF0ZTogIiwgc3RhdGVTdHJpbmcobV9zdGF0ZSkpOworICAgIGRhdGFMb2dMbklmKFdh
c21CQlFQbGFuSW50ZXJuYWw6OnZlcmJvc2UgJiYgc3RhdGUgIT0gbV9zdGF0ZSwgIm1vdmluZyB0
byBzdGF0ZTogIiwgc3RhdGVTdHJpbmcoc3RhdGUpLCAiIGZyb20gc3RhdGU6ICIsIHN0YXRlU3Ry
aW5nKG1fc3RhdGUpKTsKICAgICBtX3N0YXRlID0gc3RhdGU7CiB9CiAKQEAgLTk1LDkgKzk3LDkg
QEAgYm9vbCBCQlFQbGFuOjpwYXJzZUFuZFZhbGlkYXRlTW9kdWxlKCkKICAgICBpZiAobV9zdGF0
ZSAhPSBTdGF0ZTo6SW5pdGlhbCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBkYXRhTG9n
TG5JZih2ZXJib3NlLCAic3RhcnRpbmcgdmFsaWRhdGlvbiIpOworICAgIGRhdGFMb2dMbklmKFdh
c21CQlFQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJzdGFydGluZyB2YWxpZGF0aW9uIik7CiAgICAg
TW9ub3RvbmljVGltZSBzdGFydFRpbWU7Ci0gICAgaWYgKHZlcmJvc2UgfHwgT3B0aW9uczo6cmVw
b3J0Q29tcGlsZVRpbWVzKCkpCisgICAgaWYgKFdhc21CQlFQbGFuSW50ZXJuYWw6OnZlcmJvc2Ug
fHwgT3B0aW9uczo6cmVwb3J0Q29tcGlsZVRpbWVzKCkpCiAgICAgICAgIHN0YXJ0VGltZSA9IE1v
bm90b25pY1RpbWU6Om5vdygpOwogCiAgICAgewpAQCAtMTExLDcgKzExMyw3IEBAIGJvb2wgQkJR
UGxhbjo6cGFyc2VBbmRWYWxpZGF0ZU1vZHVsZSgpCiAKICAgICBjb25zdCBhdXRvJiBmdW5jdGlv
bkxvY2F0aW9ucyA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmZ1bmN0aW9uTG9jYXRpb25JbkJpbmFy
eTsKICAgICBmb3IgKHVuc2lnbmVkIGZ1bmN0aW9uSW5kZXggPSAwOyBmdW5jdGlvbkluZGV4IDwg
ZnVuY3Rpb25Mb2NhdGlvbnMuc2l6ZSgpOyArK2Z1bmN0aW9uSW5kZXgpIHsKLSAgICAgICAgZGF0
YUxvZ0xuSWYodmVyYm9zZSwgIlByb2Nlc3NpbmcgZnVuY3Rpb24gc3RhcnRpbmcgYXQ6ICIsIGZ1
bmN0aW9uTG9jYXRpb25zW2Z1bmN0aW9uSW5kZXhdLnN0YXJ0LCAiIGFuZCBlbmRpbmcgYXQ6ICIs
IGZ1bmN0aW9uTG9jYXRpb25zW2Z1bmN0aW9uSW5kZXhdLmVuZCk7CisgICAgICAgIGRhdGFMb2dM
bklmKFdhc21CQlFQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJQcm9jZXNzaW5nIGZ1bmN0aW9uIHN0
YXJ0aW5nIGF0OiAiLCBmdW5jdGlvbkxvY2F0aW9uc1tmdW5jdGlvbkluZGV4XS5zdGFydCwgIiBh
bmQgZW5kaW5nIGF0OiAiLCBmdW5jdGlvbkxvY2F0aW9uc1tmdW5jdGlvbkluZGV4XS5lbmQpOwog
ICAgICAgICBjb25zdCB1aW50OF90KiBmdW5jdGlvblN0YXJ0ID0gbV9zb3VyY2UgKyBmdW5jdGlv
bkxvY2F0aW9uc1tmdW5jdGlvbkluZGV4XS5zdGFydDsKICAgICAgICAgc2l6ZV90IGZ1bmN0aW9u
TGVuZ3RoID0gZnVuY3Rpb25Mb2NhdGlvbnNbZnVuY3Rpb25JbmRleF0uZW5kIC0gZnVuY3Rpb25M
b2NhdGlvbnNbZnVuY3Rpb25JbmRleF0uc3RhcnQ7CiAgICAgICAgIEFTU0VSVChmdW5jdGlvbkxl
bmd0aCA8PSBtX3NvdXJjZUxlbmd0aCk7CkBAIC0xMjAsNyArMTIyLDcgQEAgYm9vbCBCQlFQbGFu
OjpwYXJzZUFuZFZhbGlkYXRlTW9kdWxlKCkKIAogICAgICAgICBhdXRvIHZhbGlkYXRpb25SZXN1
bHQgPSB2YWxpZGF0ZUZ1bmN0aW9uKGZ1bmN0aW9uU3RhcnQsIGZ1bmN0aW9uTGVuZ3RoLCBzaWdu
YXR1cmUsIG1fbW9kdWxlSW5mb3JtYXRpb24uZ2V0KCkpOwogICAgICAgICBpZiAoIXZhbGlkYXRp
b25SZXN1bHQpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICBpZiAo
V2FzbUJCUVBsYW5JbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBmdW5jdGlvbkxlbmd0aDsgKytpKQogICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nKFJhd1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZnVuY3Rpb25TdGFy
dFtpXSkpLCAiLCAiKTsKICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oKTsKQEAgLTEzMCw3ICsx
MzIsNyBAQCBib29sIEJCUVBsYW46OnBhcnNlQW5kVmFsaWRhdGVNb2R1bGUoKQogICAgICAgICB9
CiAgICAgfQogCi0gICAgaWYgKHZlcmJvc2UgfHwgT3B0aW9uczo6cmVwb3J0Q29tcGlsZVRpbWVz
KCkpCisgICAgaWYgKFdhc21CQlFQbGFuSW50ZXJuYWw6OnZlcmJvc2UgfHwgT3B0aW9uczo6cmVw
b3J0Q29tcGlsZVRpbWVzKCkpCiAgICAgICAgIGRhdGFMb2dMbigiVG9vayAiLCAoTW9ub3Rvbmlj
VGltZTo6bm93KCkgLSBzdGFydFRpbWUpLm1pY3Jvc2Vjb25kcygpLCAiIHVzIHRvIHZhbGlkYXRl
IG1vZHVsZSIpOwogCiAgICAgbW92ZVRvU3RhdGUoU3RhdGU6OlZhbGlkYXRlZCk7CkBAIC0xNDIs
NyArMTQ0LDcgQEAgYm9vbCBCQlFQbGFuOjpwYXJzZUFuZFZhbGlkYXRlTW9kdWxlKCkKIHZvaWQg
QkJRUGxhbjo6cHJlcGFyZSgpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlZhbGlk
YXRlZCk7Ci0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIlN0YXJ0aW5nIHByZXBhcmF0aW9uIik7
CisgICAgZGF0YUxvZ0xuSWYoV2FzbUJCUVBsYW5JbnRlcm5hbDo6dmVyYm9zZSwgIlN0YXJ0aW5n
IHByZXBhcmF0aW9uIik7CiAKICAgICBhdXRvIHRyeVJlc2VydmVDYXBhY2l0eSA9IFt0aGlzXSAo
YXV0byYgdmVjdG9yLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciogd2hhdCkgewogICAgICAgICBp
ZiAoVU5MSUtFTFkoIXZlY3Rvci50cnlSZXNlcnZlQ2FwYWNpdHkoc2l6ZSkpKSB7CkBAIC0xNzQs
NyArMTc2LDcgQEAgdm9pZCBCQlFQbGFuOjpwcmVwYXJlKCkKICAgICAgICAgaWYgKGltcG9ydC0+
a2luZCAhPSBFeHRlcm5hbEtpbmQ6OkZ1bmN0aW9uKQogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIHVuc2lnbmVkIGltcG9ydEZ1bmN0aW9uSW5kZXggPSBtX3dhc21Ub1dhc21FeGl0U3R1
YnMuc2l6ZSgpOwotICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiUHJvY2Vzc2luZyBpbXBv
cnQgZnVuY3Rpb24gbnVtYmVyICIsIGltcG9ydEZ1bmN0aW9uSW5kZXgsICI6ICIsIG1ha2VTdHJp
bmcoaW1wb3J0LT5tb2R1bGUpLCAiOiAiLCBtYWtlU3RyaW5nKGltcG9ydC0+ZmllbGQpKTsKKyAg
ICAgICAgZGF0YUxvZ0xuSWYoV2FzbUJCUVBsYW5JbnRlcm5hbDo6dmVyYm9zZSwgIlByb2Nlc3Np
bmcgaW1wb3J0IGZ1bmN0aW9uIG51bWJlciAiLCBpbXBvcnRGdW5jdGlvbkluZGV4LCAiOiAiLCBt
YWtlU3RyaW5nKGltcG9ydC0+bW9kdWxlKSwgIjogIiwgbWFrZVN0cmluZyhpbXBvcnQtPmZpZWxk
KSk7CiAgICAgICAgIGF1dG8gYmluZGluZyA9IHdhc21Ub1dhc20oaW1wb3J0RnVuY3Rpb25JbmRl
eCk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghYmluZGluZykpIHsKICAgICAgICAgICAgIHN3aXRj
aCAoYmluZGluZy5lcnJvcigpKSB7CkBAIC0yMzAsNyArMjMyLDcgQEAgcHVibGljOgogdm9pZCBC
QlFQbGFuOjpjb21waWxlRnVuY3Rpb25zKENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKIHsKICAg
ICBBU1NFUlQobV9zdGF0ZSA+PSBTdGF0ZTo6UHJlcGFyZWQpOwotICAgIGRhdGFMb2dMbklmKHZl
cmJvc2UsICJTdGFydGluZyBjb21waWxhdGlvbiIpOworICAgIGRhdGFMb2dMbklmKFdhc21CQlFQ
bGFuSW50ZXJuYWw6OnZlcmJvc2UsICJTdGFydGluZyBjb21waWxhdGlvbiIpOwogCiAgICAgaWYg
KCFoYXNXb3JrKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI5NCw3ICsyOTYsNyBAQCB2b2lkIEJC
UVBsYW46OmNvbXBpbGVGdW5jdGlvbnMoQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogdm9pZCBC
QlFQbGFuOjpjb21wbGV0ZShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyKQogewogICAgIEFT
U0VSVChtX3N0YXRlICE9IFN0YXRlOjpDb21waWxlZCB8fCBtX2N1cnJlbnRJbmRleCA+PSBtX21v
ZHVsZUluZm9ybWF0aW9uLT5mdW5jdGlvbkxvY2F0aW9uSW5CaW5hcnkuc2l6ZSgpKTsKLSAgICBk
YXRhTG9nTG5JZih2ZXJib3NlLCAiU3RhcnRpbmcgQ29tcGxldGlvbiIpOworICAgIGRhdGFMb2dM
bklmKFdhc21CQlFQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJTdGFydGluZyBDb21wbGV0aW9uIik7
CiAKICAgICBpZiAoIWZhaWxlZCgpICYmIG1fc3RhdGUgPT0gU3RhdGU6OkNvbXBpbGVkKSB7CiAg
ICAgICAgIGZvciAodWludDMyX3QgZnVuY3Rpb25JbmRleCA9IDA7IGZ1bmN0aW9uSW5kZXggPCBt
X21vZHVsZUluZm9ybWF0aW9uLT5mdW5jdGlvbkxvY2F0aW9uSW5CaW5hcnkuc2l6ZSgpOyBmdW5j
dGlvbkluZGV4KyspIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKaW5kZXggZTg2ZmQ0Nzk5MGU4ODg4ZDI2ZmRkZmE3Mzk0
ZTQ3NmFiY2M4MDE4NC4uMmIxZDgyOGUyN2M3NTM1MGZkZDk0ZmMxOTVjZTY0ZDdjMWVjNWE2OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFu
ZGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFs
SGFuZGxlci5jcHAKQEAgLTQyLDggKzQyLDEwIEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IFdhc20gewogCiBuYW1lc3BhY2UgeworbmFtZXNwYWNlIFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJ
bnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiB9Cit9CiAKIHN0
YXRpYyBTdGF0aWNMb2NrIGNvZGVMb2NhdGlvbnNMb2NrOwogc3RhdGljIExhenlOZXZlckRlc3Ry
b3llZDxIYXNoU2V0PHN0ZDo6dHVwbGU8dm9pZCosIHZvaWQqPj4+IGNvZGVMb2NhdGlvbnM7IC8v
IChzdGFydCwgZW5kKQpAQCAtNTUsMzMgKzU3LDMzIEBAIHN0YXRpYyBib29sIGZhc3RIYW5kbGVy
SW5zdGFsbGVkIHsgZmFsc2UgfTsKIHN0YXRpYyBTaWduYWxBY3Rpb24gdHJhcEhhbmRsZXIoU2ln
bmFsLCBTaWdJbmZvJiBzaWdJbmZvLCBQbGF0Zm9ybVJlZ2lzdGVycyYgY29udGV4dCkKIHsKICAg
ICB2b2lkKiBmYXVsdGluZ0luc3RydWN0aW9uID0gTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9u
UG9pbnRlcihjb250ZXh0KTsKLSAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAic3RhcnRpbmcgaGFu
ZGxlciBmb3IgZmF1bHQgYXQ6ICIsIFJhd1BvaW50ZXIoZmF1bHRpbmdJbnN0cnVjdGlvbikpOwor
ICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwg
InN0YXJ0aW5nIGhhbmRsZXIgZm9yIGZhdWx0IGF0OiAiLCBSYXdQb2ludGVyKGZhdWx0aW5nSW5z
dHJ1Y3Rpb24pKTsKIAotICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJKSVQgbWVtb3J5IHN0YXJ0
OiAiLCBSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXJ0T2ZGaXhlZEV4ZWN1
dGFibGVNZW1vcnlQb29sKSksICIgZW5kOiAiLCBSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KGVuZE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCkpKTsKKyAgICBkYXRhTG9nTG5J
ZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJKSVQgbWVtb3J5IHN0
YXJ0OiAiLCBSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXJ0T2ZGaXhlZEV4
ZWN1dGFibGVNZW1vcnlQb29sKSksICIgZW5kOiAiLCBSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KGVuZE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCkpKTsKICAgICAvLyBGaXJz
dCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBhcmUgaW4gSklUIGNvZGUgYmVmb3JlIHdlIGNhbiBh
cXVpcmUgYW55IGxvY2tzLiBPdGhlcndpc2UsCiAgICAgLy8gd2UgbWlnaHQgaGF2ZSBjcmFzaGVk
IGluIGNvZGUgdGhhdCBpcyBhbHJlYWR5IGhvbGRpbmcgb25lIG9mIHRoZSBsb2NrcyB3ZSB3YW50
IHRvIGFxdWlyZS4KICAgICBpZiAoaXNKSVRQQyhmYXVsdGluZ0luc3RydWN0aW9uKSkgewogICAg
ICAgICBib29sIGZhdWx0ZWRJbkFjdGl2ZUZhc3RNZW1vcnkgPSBmYWxzZTsKICAgICAgICAgewog
ICAgICAgICAgICAgdm9pZCogZmF1bHRpbmdBZGRyZXNzID0gc2lnSW5mby5mYXVsdGluZ0FkZHJl
c3M7Ci0gICAgICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiY2hlY2tpbmcgZmF1bHRpbmcg
YWRkcmVzczogIiwgUmF3UG9pbnRlcihmYXVsdGluZ0FkZHJlc3MpLCAiIGlzIGluIGFuIGFjdGl2
ZSBmYXN0IG1lbW9yeSIpOworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFs
SGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAiY2hlY2tpbmcgZmF1bHRpbmcgYWRkcmVzczogIiwg
UmF3UG9pbnRlcihmYXVsdGluZ0FkZHJlc3MpLCAiIGlzIGluIGFuIGFjdGl2ZSBmYXN0IG1lbW9y
eSIpOwogICAgICAgICAgICAgZmF1bHRlZEluQWN0aXZlRmFzdE1lbW9yeSA9IFdhc206Ok1lbW9y
eTo6YWRkcmVzc0lzSW5BY3RpdmVGYXN0TWVtb3J5KGZhdWx0aW5nQWRkcmVzcyk7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKGZhdWx0ZWRJbkFjdGl2ZUZhc3RNZW1vcnkpIHsKLSAgICAgICAgICAg
IGRhdGFMb2dMbklmKHZlcmJvc2UsICJmb3VuZCBhY3RpdmUgZmFzdCBtZW1vcnkgZm9yIGZhdWx0
aW5nIGFkZHJlc3MiKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhh
bmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZvdW5kIGFjdGl2ZSBmYXN0IG1lbW9yeSBmb3IgZmF1
bHRpbmcgYWRkcmVzcyIpOwogICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoY29kZUxvY2F0
aW9uc0xvY2spOwogICAgICAgICAgICAgZm9yIChhdXRvIHJhbmdlIDogY29kZUxvY2F0aW9ucy5n
ZXQoKSkgewogICAgICAgICAgICAgICAgIHZvaWQqIHN0YXJ0OwogICAgICAgICAgICAgICAgIHZv
aWQqIGVuZDsKICAgICAgICAgICAgICAgICBzdGQ6OnRpZShzdGFydCwgZW5kKSA9IHJhbmdlOwot
ICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJmdW5jdGlvbiBzdGFydDogIiwg
UmF3UG9pbnRlcihzdGFydCksICIgZW5kOiAiLCBSYXdQb2ludGVyKGVuZCkpOworICAgICAgICAg
ICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9z
ZSwgImZ1bmN0aW9uIHN0YXJ0OiAiLCBSYXdQb2ludGVyKHN0YXJ0KSwgIiBlbmQ6ICIsIFJhd1Bv
aW50ZXIoZW5kKSk7CiAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0IDw9IGZhdWx0aW5nSW5zdHJ1
Y3Rpb24gJiYgZmF1bHRpbmdJbnN0cnVjdGlvbiA8IGVuZCkgewotICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiZm91bmQgbWF0Y2giKTsKKyAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAi
Zm91bmQgbWF0Y2giKTsKICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGV4Y2VwdGlvblN0dWIgPSBUaHVua3M6OnNpbmdsZXRvbigpLmV4aXN0aW5nU3R1Yih0aHJvd0V4
Y2VwdGlvbkZyb21XYXNtVGh1bmtHZW5lcmF0b3IpOwogICAgICAgICAgICAgICAgICAgICAvLyBJ
ZiBmb3Igd2hhdGV2ZXIgcmVhc29uIHdlIGRvbid0IGhhdmUgYSBzdHViIHRoZW4gd2Ugc2hvdWxk
IGp1c3QgdHJlYXQgdGhpcyBsaWtlIGEgcmVndWxhciBjcmFzaC4KICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFleGNlcHRpb25TdHViKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJmb3VuZCBzdHViOiAiLCBS
YXdQb2ludGVyKGV4Y2VwdGlvblN0dWIuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVy
bmFsOjp2ZXJib3NlLCAiZm91bmQgc3R1YjogIiwgUmF3UG9pbnRlcihleGNlcHRpb25TdHViLmNv
ZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgICAgICAgICAgICAgICAgIE1hY2hpbmVD
b250ZXh0Ojphcmd1bWVudFBvaW50ZXI8MT4oY29udGV4dCkgPSByZWludGVycHJldF9jYXN0PHZv
aWQqPihFeGNlcHRpb25UeXBlOjpPdXRPZkJvdW5kc01lbW9yeUFjY2Vzcyk7CiAgICAgICAgICAg
ICAgICAgICAgIE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIoY29udGV4dCkgPSBl
eGNlcHRpb25TdHViLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gU2lnbmFsQWN0aW9uOjpIYW5kbGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU9NR1BsYW4uY3BwCmluZGV4IDU5MThmOTJiYjgwYmJkZWU1NDAxMDQ3MTMxZDgz
MmJkMTk2YmY3NWIuLjc0Y2Y2NTM0OTc1MjVjZTI2MWQ0MGM3MmM0NjIzYWNkODBmNjVjZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKQEAgLTQ3LDcgKzQ3
LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAorbmFtZXNwYWNlIFdh
c21PTUdQbGFuSW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwor
fQogCiBPTUdQbGFuOjpPTUdQbGFuKFJlZjxNb2R1bGU+IG1vZHVsZSwgdWludDMyX3QgZnVuY3Rp
b25JbmRleCwgTWVtb3J5TW9kZSBtb2RlLCBDb21wbGV0aW9uVGFzayYmIHRhc2spCiAgICAgOiBC
YXNlKG51bGxwdHIsIG1ha2VSZWYoY29uc3RfY2FzdDxNb2R1bGVJbmZvcm1hdGlvbiY+KG1vZHVs
ZS0+bW9kdWxlSW5mb3JtYXRpb24oKSkpLCBXVEZNb3ZlKHRhc2spKQpAQCAtNTgsNyArNjAsNyBA
QCBPTUdQbGFuOjpPTUdQbGFuKFJlZjxNb2R1bGU+IG1vZHVsZSwgdWludDMyX3QgZnVuY3Rpb25J
bmRleCwgTWVtb3J5TW9kZSBtb2RlLCBDbwogICAgIHNldE1vZGUobW9kZSk7CiAgICAgQVNTRVJU
KG1fY29kZUJsb2NrLT5ydW5uYWJsZSgpKTsKICAgICBBU1NFUlQobV9jb2RlQmxvY2sucHRyKCkg
PT0gbV9tb2R1bGUtPmNvZGVCbG9ja0ZvcihtX21vZGUpKTsKLSAgICBkYXRhTG9nTG5JZih2ZXJi
b3NlLCAiU3RhcnRpbmcgT01HIHBsYW4gZm9yICIsIGZ1bmN0aW9uSW5kZXgsICIgb2YgbW9kdWxl
OiAiLCBSYXdQb2ludGVyKCZtX21vZHVsZS5nZXQoKSkpOworICAgIGRhdGFMb2dMbklmKFdhc21P
TUdQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJTdGFydGluZyBPTUcgcGxhbiBmb3IgIiwgZnVuY3Rp
b25JbmRleCwgIiBvZiBtb2R1bGU6ICIsIFJhd1BvaW50ZXIoJm1fbW9kdWxlLmdldCgpKSk7CiB9
CiAKIHZvaWQgT01HUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkKQEAgLTEzOCw5ICsxNDAs
OSBAQCB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGlsYXRpb25FZmZvcnQpCiAKICAgICAgICAgYXV0
byByZXBhdGNoQ2FsbHMgPSBbJl0gKGNvbnN0IFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxs
PiYgIGNhbGxzaXRlcykgewogICAgICAgICAgICAgZm9yIChhdXRvJiBjYWxsIDogY2FsbHNpdGVz
KSB7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIkNvbnNpZGVyaW5nIHJl
cGF0Y2hpbmcgY2FsbCBhdDogIiwgUmF3UG9pbnRlcihjYWxsLmNhbGxMb2NhdGlvbi5kYXRhTG9j
YXRpb24oKSksICIgdGhhdCB0YXJnZXRzICIsIGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlKTsKKyAg
ICAgICAgICAgICAgICBkYXRhTG9nTG5JZihXYXNtT01HUGxhbkludGVybmFsOjp2ZXJib3NlLCAi
Q29uc2lkZXJpbmcgcmVwYXRjaGluZyBjYWxsIGF0OiAiLCBSYXdQb2ludGVyKGNhbGwuY2FsbExv
Y2F0aW9uLmRhdGFMb2NhdGlvbigpKSwgIiB0aGF0IHRhcmdldHMgIiwgY2FsbC5mdW5jdGlvbklu
ZGV4U3BhY2UpOwogICAgICAgICAgICAgICAgIGlmIChjYWxsLmZ1bmN0aW9uSW5kZXhTcGFjZSA9
PSBmdW5jdGlvbkluZGV4U3BhY2UpIHsKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYo
dmVyYm9zZSwgIlJlcGF0Y2hpbmcgY2FsbCBhdDogIiwgUmF3UG9pbnRlcihjYWxsLmNhbGxMb2Nh
dGlvbi5kYXRhTG9jYXRpb24oKSksICIgdG8gIiwgUmF3UG9pbnRlcihlbnRyeXBvaW50KSk7Cisg
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21PTUdQbGFuSW50ZXJuYWw6OnZlcmJv
c2UsICJSZXBhdGNoaW5nIGNhbGwgYXQ6ICIsIFJhd1BvaW50ZXIoY2FsbC5jYWxsTG9jYXRpb24u
ZGF0YUxvY2F0aW9uKCkpLCAiIHRvICIsIFJhd1BvaW50ZXIoZW50cnlwb2ludCkpOwogICAgICAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKGNhbGwuY2FsbExv
Y2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbChlbnRyeXBvaW50KSk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQpAQCAtMTU2LDcgKzE1OCw3IEBAIHZvaWQgT01HUGxhbjo6d29yayhD
b21waWxhdGlvbkVmZm9ydCkKICAgICAgICAgcmVwYXRjaENhbGxzKHVubGlua2VkQ2FsbHMpOwog
ICAgIH0KIAotICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJGaW5pc2hlZCB3aXRoIHRpZXIgdXAg
Y291bnQgYXQ6ICIsIG1fY29kZUJsb2NrLT50aWVyVXBDb3VudChtX2Z1bmN0aW9uSW5kZXgpLmNv
dW50KCkpOworICAgIGRhdGFMb2dMbklmKFdhc21PTUdQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJG
aW5pc2hlZCB3aXRoIHRpZXIgdXAgY291bnQgYXQ6ICIsIG1fY29kZUJsb2NrLT50aWVyVXBDb3Vu
dChtX2Z1bmN0aW9uSW5kZXgpLmNvdW50KCkpOwogICAgIGNvbXBsZXRlKGhvbGRMb2NrKG1fbG9j
aykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxh
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKaW5kZXggMTQ4
M2FjNzQ4OTJiMmYxNjQyYTZjYjM2MGJjNjQ5ODdiY2Y1ZjExZi4uYmEyN2NmOWY5NmY1NTUwZjJm
NDgxMmUwOTEyNGI1YmY4MTAwNWFjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Q
bGFuLmNwcApAQCAtNDcsNyArNDcsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdh
c20gewogCituYW1lc3BhY2UgV2FzbVBsYW5JbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2
ZXJib3NlID0gZmFsc2U7Cit9CiAKIFBsYW46OlBsYW4oVk0qIHZtLCBSZWY8TW9kdWxlSW5mb3Jt
YXRpb24+IGluZm8sIENvbXBsZXRpb25UYXNrJiYgdGFzaykKICAgICA6IG1fbW9kdWxlSW5mb3Jt
YXRpb24oV1RGTW92ZShpbmZvKSkKQEAgLTEyOCw3ICsxMzAsNyBAQCBib29sIFBsYW46OnRyeVJl
bW92ZVZNQW5kQ2FuY2VsSWZMYXN0KFZNJiB2bSkKIAogdm9pZCBQbGFuOjpmYWlsKGNvbnN0IEFi
c3RyYWN0TG9ja2VyJiBsb2NrZXIsIFN0cmluZyYmIGVycm9yTWVzc2FnZSkKIHsKLSAgICBkYXRh
TG9nTG5JZih2ZXJib3NlLCAiZmFpbGluZyB3aXRoIG1lc3NhZ2U6ICIsIGVycm9yTWVzc2FnZSk7
CisgICAgZGF0YUxvZ0xuSWYoV2FzbVBsYW5JbnRlcm5hbDo6dmVyYm9zZSwgImZhaWxpbmcgd2l0
aCBtZXNzYWdlOiAiLCBlcnJvck1lc3NhZ2UpOwogICAgIG1fZXJyb3JNZXNzYWdlID0gV1RGTW92
ZShlcnJvck1lc3NhZ2UpOwogICAgIGNvbXBsZXRlKGxvY2tlcik7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuY3BwCmluZGV4IGIyMjk4ZDY1Y2JhYjhkNTBi
ZTg3ZTAyMmRhNDNiYjYyMmM1OGZlN2IuLjhiNjAwZWQzODY0NDMxMjg4MmYxM2M1ZjQ5ZmM4ZmQ5
ZTY3OTI5NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWdu
YXR1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUu
Y3BwCkBAIC0zNiw3ICszNiw5IEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewog
CiBuYW1lc3BhY2UgewotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgV2Fz
bVNpZ25hdHVyZUludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsK
K30KIH0KIAogU3RyaW5nIFNpZ25hdHVyZTo6dG9TdHJpbmcoKSBjb25zdApAQCAtMTAzLDcgKzEw
NSw3IEBAIHN0ZDo6cGFpcjxTaWduYXR1cmVJbmRleCwgUmVmPFNpZ25hdHVyZT4+IFNpZ25hdHVy
ZUluZm9ybWF0aW9uOjphZG9wdChSZWY8U2lnbmF0CiAgICAgICAgICsraW5mby5tX25leHRJbmRl
eDsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5mby5tX25leHRJbmRleCA+IG5leHRWYWx1ZSk7
IC8vIGNyYXNoIG9uIG92ZXJmbG93LgogICAgICAgICBBU1NFUlQobmV4dFZhbHVlID09IGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUpOwotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYg
KFdhc21TaWduYXR1cmVJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2dMbigi
QWRvcHQgbmV3IHNpZ25hdHVyZSAiLCBzaWduYXR1cmUuZ2V0KCksICIgd2l0aCBpbmRleCAiLCBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLCAiIGhhc2g6ICIsIHNpZ25hdHVyZS0+aGFzaCgpKTsK
IAogICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IGluZm8ubV9pbmRleE1hcC5hZGQobmV4dFZhbHVl
LCBzaWduYXR1cmUuY29weVJlZigpKTsKQEAgLTExMSw3ICsxMTMsNyBAQCBzdGQ6OnBhaXI8U2ln
bmF0dXJlSW5kZXgsIFJlZjxTaWduYXR1cmU+PiBTaWduYXR1cmVJbmZvcm1hdGlvbjo6YWRvcHQo
UmVmPFNpZ25hdAogICAgICAgICBBU1NFUlQoaW5mby5tX2luZGV4TWFwLnNpemUoKSA9PSBpbmZv
Lm1fc2lnbmF0dXJlTWFwLnNpemUoKSk7CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihu
ZXh0VmFsdWUsIFdURk1vdmUoc2lnbmF0dXJlKSk7CiAgICAgfQotICAgIGlmICh2ZXJib3NlKQor
ICAgIGlmIChXYXNtU2lnbmF0dXJlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2dM
bigiRXhpc3Rpbmcgc2lnbmF0dXJlICIsIHNpZ25hdHVyZS5nZXQoKSwgIiB3aXRoIGluZGV4ICIs
IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUsICIgaGFzaDogIiwgc2lnbmF0dXJlLT5oYXNoKCkp
OwogICAgIEFTU0VSVChhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlICE9IFNpZ25hdHVyZTo6aW52
YWxpZEluZGV4KTsKICAgICBBU1NFUlQoaW5mby5tX2luZGV4TWFwLmNvbnRhaW5zKGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21Xb3JrbGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29y
a2xpc3QuY3BwCmluZGV4IDc2YTg3YWMxYjQ3MzZmM2NmMzdjMzUzOWRiYzk2MWY2Nzg2YTAxMzQu
LjljNWI2ODQ0YzQ2Yjc0ZjAyNmUwZDg1NmI0MTljZTk3NWM2MDA5MmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcApAQCAtMzMsNyArMzMsOSBAQAogCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCituYW1lc3BhY2UgV2FzbVdvcmtsaXN0
SW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBjb25z
dCBjaGFyKiBXb3JrbGlzdDo6cHJpb3JpdHlTdHJpbmcoUHJpb3JpdHkgcHJpb3JpdHkpCiB7CkBA
IC0xNDQsNyArMTQ2LDcgQEAgdm9pZCBXb3JrbGlzdDo6ZW5xdWV1ZShSZWY8UGxhbj4gcGxhbikK
ICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoZWxlbWVudCwgZWxlbWVudC5wbGFuLmdldCgpICE9
ICZwbGFuLmdldCgpKTsKICAgICB9CiAKLSAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiRW5xdWV1
aW5nIHBsYW4iKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtV29ya2xpc3RJbnRlcm5hbDo6dmVyYm9z
ZSwgIkVucXVldWluZyBwbGFuIik7CiAgICAgbV9xdWV1ZS5lbnF1ZXVlKHsgUHJpb3JpdHk6OlBy
ZXBhcmF0aW9uLCBuZXh0VGlja2V0KCksICBXVEZNb3ZlKHBsYW4pIH0pOwogICAgIG1fcGxhbkVu
cXVldWVkLT5ub3RpZnlPbmUobG9ja2VyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0Fzc2VydGlvbnMuaCBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaAppbmRleCAzYjA0Mzc5
OWEwYTRlNGJkZTBhZmRmNTBjMmFkMDYwZTE1OTI5NjNhLi4xNzlmNTE4ZWQ2NGU4YjUyZDBhM2Nk
N2ZkY2VkZmVjN2UzYzI3ZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25z
LmgKKysrIGIvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oCkBAIC01MzUsMTggKzUzNSwyMiBA
QCBpbmxpbmUgdm9pZCBjb21waWxlckZlbmNlRm9yQ3Jhc2goKQogI2VuZGlmCiB9CiAKLSNpZm5k
ZWYgQ1JBU0hfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTl9BTkRfSU5GTworI2lmbmRlZiBDUkFT
SF9XSVRIX0lORk8KIC8vIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBhcmUgZ29pbmcgdG8gc3R1ZmYg
ZGF0YSBpbnRvIHJlZ2lzdGVycyBiZWZvcmUgY3Jhc2hpbmcuIExpa2UgdGhlIGNyYXNoV2l0aElu
Zm8gZnVuY3Rpb25zIGJlbG93Li4uCiAvLyBHQ0MgZG9lc24ndCBsaWtlIHRoZSAjI19fVkFfQVJH
U19fIGhlcmUgc2luY2UgdGhpcyBtYWNybyBpcyBjYWxsZWQgZnJvbSBhbm90aGVyIG1hY3JvIHNv
IHdlIGp1c3QgQ1JBU0ggaW5zdGVhZCB0aGVyZS4KICNpZiBDT01QSUxFUihDTEFORykgfHwgQ09N
UElMRVIoTVNWQykKLSNkZWZpbmUgQ1JBU0hfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTl9BTkRf
SU5GTyguLi4pIGRvIHsgXAorI2RlZmluZSBDUkFTSF9XSVRIX0lORk8oLi4uKSBkbyB7IFwKICAg
ICAgICAgV1RGOjppc0ludGVncmFsVHlwZShfX1ZBX0FSR1NfXyk7IFwKICAgICAgICAgY29tcGls
ZXJGZW5jZUZvckNyYXNoKCk7IFwKICAgICAgICAgV1RGQ3Jhc2hXaXRoSW5mbyhfX0xJTkVfXywg
X19GSUxFX18sIFdURl9QUkVUVFlfRlVOQ1RJT04sIF9fQ09VTlRFUl9fLCAjI19fVkFfQVJHU19f
KTsgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogI2Vsc2UKLSNkZWZpbmUgQ1JBU0hfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTl9BTkRfSU5GTyguLi4pIENSQVNIKCkKKyNkZWZpbmUgQ1JBU0hfV0lU
SF9JTkZPKC4uLikgQ1JBU0goKQogI2VuZGlmCisjZW5kaWYgLy8gQ1JBU0hfV0lUSF9JTkZPCisK
KyNpZm5kZWYgQ1JBU0hfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTl9BTkRfSU5GTworI2RlZmlu
ZSBDUkFTSF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OX0FORF9JTkZPIENSQVNIX1dJVEhfSU5G
TwogI2VuZGlmIC8vIENSQVNIX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fQU5EX0lORk8KIAog
I2VuZGlmIC8vIF9fY3BsdXNwbHVzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320459</attachid>
            <date>2017-09-11 12:51:34 -0700</date>
            <delta_ts>2017-09-11 15:26:08 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-176076-20170911125129.patch</filename>
            <type>text/plain</type>
            <size>198189</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxODU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YmNjZWFjYzVkY2IxNTdmMjAzMDNkYzUzODlmOGMzNzk0YWQwMTlmLi42NTY3NThkNmQ5MjgxN2Ex
ZTlhNGQyZDNhNjkyYmVlZjZhM2MxNjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMjkgQEAKKzIwMTctMDktMTEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgRG8gdW5pZmllZCBzb3VyY2UgYnVpbGRzIGZvciBKU0MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjA3NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEpTQyBidWlsZHMgd2l0
aCBDTWFrZSBsb2NhbGx5LgorCisgICAgICAgIFRoaW5ncyB0byBkbzoKKworICAgICAgICBNYWtl
IHN1cmUgWGNvZGUgc3RpbGwgYnVpbGRzLgorICAgICAgICBNb3ZlIGJ1bmRsZXIgdG8gZ2VuZXJh
bCBzY3JpcHQuCisgICAgICAgIE1ha2UgZGVwZW5kZW5jaWVzIGFjdHVhbGx5IHdvcmsgaW4gQ01h
a2UuIENNYWtlIHNlZW1zIHRvLCByZWFzb25hYmx5LCB0aGluIHRoYXQgY3BwIGZpbGVzIGFyZSB0
aGVpciBvd24gdHJhbnNsYXRpb24gdW5pdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBiMy9CM0NoZWNrU3BlY2lhbC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpDaGVj
a1NwZWNpYWw6OmZvckVhY2hBcmcpOgorICAgICAgICAoSlNDOjpCMzo6Q2hlY2tTcGVjaWFsOjpn
ZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Om51bUIzQXJncyk6IERlbGV0ZWQuCisg
ICAgICAgICogYjMvQjNEdXBsaWNhdGVUYWlscy5jcHA6CisgICAgICAgICogYjMvQjNFbGltaW5h
dGVDb21tb25TdWJleHByZXNzaW9ucy5jcHA6CisgICAgICAgICogYjMvQjNGaXhTU0EuY3BwOgor
ICAgICAgICAoSlNDOjpCMzo6ZGVtb3RlVmFsdWVzKToKKyAgICAgICAgKiBiMy9CM0ZvbGRQYXRo
Q29uc3RhbnRzLmNwcDoKKyAgICAgICAgKiBiMy9CM0luZmVyU3dpdGNoZXMuY3BwOgorICAgICAg
ICAqIGIzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwOgorICAgICAgICAoKTog
RGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpMb3dlclRvQWlyOjpMb3dlclRvQWlyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6cnVuKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6c2hvdWxkQ29weVByb3BhZ2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OkFyZ1Byb21pc2UpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjpzd2FwKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6
b3BlcmF0b3I9KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
QXJnUHJvbWlzZTo6fkFyZ1Byb21pc2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjpzZXRUcmFwcyk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OnRtcCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6Om9wZXJhdG9yIGJvb2wg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQ
cm9taXNlOjpraW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6cGVlayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OmNvbnN1bWUpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjppbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dG1wKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dG1wUHJvbWlzZSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNhbkJlSW50ZXJuYWwpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpjb21taXRJbnRlcm5hbCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyb3NzZXNJbnRlcmZl
cmVuY2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzY2Fs
ZUZvclNobCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmVm
ZmVjdGl2ZUFkZHIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
OjphZGRyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJh
cHBpbmdJbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
bG9hZFByb21pc2VBbnlPcGNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpsb2FkUHJvbWlzZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okxvd2VyVG9BaXI6OmltbSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6OmJpdEltbSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OmJpdEltbTY0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fp
cjo6aW1tT3JUbXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
Ojp0cnlPcGNvZGVGb3JUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6b3Bjb2RlRm9yVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okxvd2VyVG9BaXI6OmFwcGVuZFVuT3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjpwcmVmZXJSaWdodEZvclJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZEJpbk9wKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kU2hpZnQpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0cnlBcHBlbmRTdG9yZVVuT3ApOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0cnlBcHBlbmRTdG9yZUJpbk9w
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRlU3Rv
cmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzdG9yZU9w
Y29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVu
ZFN0b3JlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bW92
ZUZvclR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpy
ZWxheGVkTW92ZUZvclR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpwcmludCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OmFwcGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OmFwcGVuZFRyYXBwaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJU
b0Fpcjo6ZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bmV3QmxvY2spOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzcGxpdEJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6ZW5zdXJlU3BlY2lhbCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmVuc3VyZUNoZWNrU3BlY2lhbCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmZpbGxTdGFja21hcCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZUdlbmVyaWNDb21w
YXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRl
QnJhbmNoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3Jl
YXRlQ29tcGFyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OmNyZWF0ZVNlbGVjdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OnRyeUFwcGVuZExlYSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6OmFwcGVuZFg4NkRpdik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6OmFwcGVuZFg4NlVEaXYpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjpsb2FkTGlua09wY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OnN0b3JlQ29uZE9wY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZENBUyk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFZvaWRBdG9taWMpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRHZW5lcmFsQXRvbWljKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG93ZXIpOiBEZWxldGVk
LgorICAgICAgICAqIGIzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwOgorICAgICAgICAoSlNDOjpC
Mzo6UGF0Y2hwb2ludFNwZWNpYWw6OmdlbmVyYXRlKToKKyAgICAgICAgKiBiMy9CM1JlZHVjZURv
dWJsZVRvRmxvYXQuY3BwOgorICAgICAgICAoSlNDOjpCMzo6cmVkdWNlRG91YmxlVG9GbG9hdCk6
CisgICAgICAgICogYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHA6CisgICAgICAgICogYjMvQjNTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMuY3BwOgorICAgICAgICAqIGIzL0IzU3RhY2ttYXBTcGVjaWFs
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlN0YWNrbWFwU3BlY2lhbDo6cmVwc0ltcGwpOgorICAg
ICAgICAoSlNDOjpCMzo6U3RhY2ttYXBTcGVjaWFsOjpyZXBGb3JBcmcpOgorICAgICAgICAqIGIz
L2Fpci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6YWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZyk6CisgICAgICAgICogYjMvYWly
L0FpckVtaXRTaHVmZmxlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6ZW1pdFNodWZmbGUp
OgorICAgICAgICAqIGIzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcDoKKyAgICAgICAgKiBi
My9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
bG93ZXJBZnRlclJlZ0FsbG9jKToKKyAgICAgICAgKiBiMy9haXIvQWlyU3RhY2tBbGxvY2F0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6YXR0ZW1wdEFzc2lnbm1lbnQpOgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjphc3NpZ24pOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVERkdTdGF0dXNlcyk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVt
aXRET01KSVRHZXR0ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0LmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6Cisg
ICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcyk6CisgICAgICAgIChKU0M6
OlBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Qcm9w
ZXJ0eUNvbmRpdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjppc1N0
aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCBjb25zdCk6CisgICAgICAg
ICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0Vs
aW1pbmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OkRlbGF5ZWRTZXRMb2NhbDo6RGVs
YXllZFNldExvY2FsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5p
bmdDb3N0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lubGluZUNhbGwp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBsYW5Mb2FkKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6c3RvcmUpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6bGlua0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bGlua0Js
b2Nrcyk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
SW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0
cmFjdFN0YXRlOjptZXJnZSk6CisgICAgICAgICogZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmlu
Z1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFz
ZTo6aGFuZGxlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRp
b25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR01vdkhpbnRSZW1vdmFsUGhhc2UuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHUGhhbnRvbUluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
UHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhh
c2UuY3BwOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXAuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OkFic3RyYWN0SGVhcDo6Y29tcHV0ZSk6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9z
aXRvcnk6OmRlY29yYXRlTWVtb3J5KToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5OjpkZWNvcmF0ZUNDYWxsUmVhZCk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVDQ2FsbFdyaXRlKToKKyAgICAgICAgKEpTQzo6RlRM
OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZVBhdGNocG9pbnRSZWFkKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZVBhdGNocG9pbnRX
cml0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3Jh
dGVGZW5jZVJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6
OmRlY29yYXRlRmVuY2VXcml0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVw
b3NpdG9yeTo6ZGVjb3JhdGVGZW5jZWRBY2Nlc3MpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3Ry
YWN0SGVhcFJlcG9zaXRvcnk6OmNvbXB1dGVSYW5nZXNBbmREZWNvcmF0ZUluc3RydWN0aW9ucyk6
CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgor
ICAgICAgICAqIGhlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwOgorICAgICAgICAoSlNDOjpN
YXJraW5nQ29uc3RyYWludFNldDo6YWRkKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9TaGFkb3dD
aGlja2VuLmNwcDoKKyAgICAgICAgKEpTQzo6U2hhZG93Q2hpY2tlbjo6dXBkYXRlKToKKyAgICAg
ICAgKiBqaXQvQmluYXJ5U3dpdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6QmluYXJ5U3dpdGNoOjpC
aW5hcnlTd2l0Y2gpOgorICAgICAgICAoSlNDOjpCaW5hcnlTd2l0Y2g6OmJ1aWxkKToKKyAgICAg
ICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6bG9h
ZFN0YXRzKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnNhdmVTdGF0cyk6CisgICAgICAg
ICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFycmF5UHJvdG90
eXBlOjp0cnlJbml0aWFsaXplU3BlY2llc1dhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBcnJh
eVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ6OmhhbmRsZUZpcmUp
OgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkZp
bmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3I6OkZpbmRGaXJzdENhbGxlckZy
YW1lV2l0aENvZGVibG9ja0Z1bmN0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGaW5kRmly
c3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjpvcGVyYXRvcigpKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2NrRnVuY3Rvcjo6
Zm91bmRDYWxsRnJhbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGaW5kRmlyc3RD
YWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjppbmRleCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJ
bnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCk6CisgICAgICAgICog
cnVudGltZS9Qcm9taXNlRGVmZXJyZWRUaW1lci5jcHA6CisgICAgICAgIChKU0M6OlByb21pc2VE
ZWZlcnJlZFRpbWVyOjpkb1dvcmspOgorICAgICAgICAoSlNDOjpQcm9taXNlRGVmZXJyZWRUaW1l
cjo6YWRkUGVuZGluZ1Byb21pc2UpOgorICAgICAgICAoSlNDOjpQcm9taXNlRGVmZXJyZWRUaW1l
cjo6Y2FuY2VsUGVuZGluZ1Byb21pc2UpOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVByb2ZpbGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVByb2ZpbGVyOjppbnNlcnROZXdMb2NhdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwOgorICAgICAgICAoSlNDOjpUeXBl
UHJvZmlsZXJMb2c6OnByb2Nlc3NMb2dFbnRyaWVzKToKKyAgICAgICAgKiBydW50aW1lL1dlYWtN
YXBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwRGVsZXRlKToK
KyAgICAgICAgKEpTQzo6cHJvdG9GdW5jV2Vha01hcEdldCk6CisgICAgICAgIChKU0M6OnByb3Rv
RnVuY1dlYWtNYXBIYXMpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwU2V0KToKKyAg
ICAgICAgKEpTQzo6Z2V0V2Vha01hcERhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
V2Vha1NldFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtTZXREZWxl
dGUpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrU2V0SGFzKToKKyAgICAgICAgKEpTQzo6
cHJvdG9GdW5jV2Vha1NldEFkZCk6CisgICAgICAgIChKU0M6OmdldFdlYWtNYXBEYXRhKTogRGVs
ZXRlZC4KKyAgICAgICAgKiB0ZXN0UmVnRXhwLmNwcDoKKyAgICAgICAgKHRlc3RPbmVSZWdFeHAp
OgorICAgICAgICAocnVuRnJvbUZpbGVzKToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlKToKKyAgICAgICAg
KiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6bW92
ZVRvU3RhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpwYXJzZUFuZFZhbGlkYXRl
TW9kdWxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6cHJlcGFyZSk6CisgICAgICAg
IChKU0M6Oldhc206OkJCUVBsYW46OmNvbXBpbGVGdW5jdGlvbnMpOgorICAgICAgICAoSlNDOjpX
YXNtOjpCQlFQbGFuOjpjb21wbGV0ZSk6CisgICAgICAgICogd2FzbS9XYXNtRmF1bHRTaWduYWxI
YW5kbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6dHJhcEhhbmRsZXIpOgorICAgICAgICAq
IHdhc20vV2FzbU9NR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjpPTUdQ
bGFuKToKKyAgICAgICAgKEpTQzo6V2FzbTo6T01HUGxhbjo6d29yayk6CisgICAgICAgICogd2Fz
bS9XYXNtUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlBsYW46OmZhaWwpOgorICAgICAg
ICAqIHdhc20vV2FzbVNpZ25hdHVyZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlNpZ25hdHVy
ZUluZm9ybWF0aW9uOjphZG9wdCk6CisgICAgICAgICogd2FzbS9XYXNtV29ya2xpc3QuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpXb3JrbGlzdDo6ZW5xdWV1ZSk6CisKIDIwMTctMDktMDMgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0RGR10gT3B0
aW1pemUgV2Vha01hcDo6Z2V0IGJ5IGFkZGluZyBpbnRyaW5zaWMgYW5kIGZpeHVwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGFm
ODVmNWYzY2Q0NTdhNDRlOTkyNWE5YWNmMzZmMWMxOWYzOWRhMjcuLmM1NTQ0Mzg5ZjgwNDRhMDU2
ODlhZjM3ODBkMDUwOWI0Y2E3NDQyZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDktMTEg
IEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgRG8gdW5p
ZmllZCBzb3VyY2UgYnVpbGRzIGZvciBKU0MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NjA3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuaDoKKwogMjAxNy0wOS0wMyAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbREZHXSBPcHRp
bWl6ZSBXZWFrTWFwOjpnZXQgYnkgYWRkaW5nIGludHJpbnNpYyBhbmQgZml4dXAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBkYTFiYTFkOWJlMTU3YjU4M2M4MTA3OGJhZGJl
ZmRlYWQ1YmIyMGZhLi5hNTVhNWUyYWQyNmQ0NzYzMTFhMjYwM2M1MDY2YmNmNjEwYTNhNzhmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMDE3LDYgKzEwMTcsNzQgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICB5YXJyL1lhcnJTeW50YXhDaGVja2VyLmNw
cAogKQogCitzZXQoX3VuaWZpZWRTb3VyY2VDb3VudCAwKQorbGlzdChTT1JUIEphdmFTY3JpcHRD
b3JlX1NPVVJDRVMpCitsaXN0KExFTkdUSCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTIEphdmFTY3Jp
cHRDb3JlX1NPVVJDRV9DT1VOVCkKK21hdGgoRVhQUiBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VfQ09V
TlQgIiR7SmF2YVNjcmlwdENvcmVfU09VUkNFX0NPVU5UfSAtIDEiKQorbGlzdChHRVQgSmF2YVNj
cmlwdENvcmVfU09VUkNFUyAwIF9maXJzdFNvdXJjZUZpbGUpCitnZXRfZmlsZW5hbWVfY29tcG9u
ZW50KF91bmlmaWVkU291cmNlQ3VycmVudERpcmVjdG9yeSAke19maXJzdFNvdXJjZUZpbGV9IERJ
UkVDVE9SWSkKK2ZvcmVhY2ggKF9pbmRleCBSQU5HRSAke0phdmFTY3JpcHRDb3JlX1NPVVJDRV9D
T1VOVH0pCisgICAgbWF0aChFWFBSIF9uZXdVbmlmaWVkU291cmNlRmlsZSAiJHtfaW5kZXh9ICUg
OCIpCisgICAgbGlzdChHRVQgSmF2YVNjcmlwdENvcmVfU09VUkNFUyAke19pbmRleH0gX3NvdXJj
ZUZpbGUpCisgICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChfdW5pZmllZFNvdXJjZUZpbGVEaXJl
Y3RvcnkgJHtfc291cmNlRmlsZX0gRElSRUNUT1JZKQorCisgICAgaWYgKChOT1QgJHtfbmV3VW5p
ZmllZFNvdXJjZUZpbGV9KSBPUiAoTk9UICgke191bmlmaWVkU291cmNlRmlsZURpcmVjdG9yeX0g
U1RSRVFVQUwgJHtfdW5pZmllZFNvdXJjZUN1cnJlbnREaXJlY3Rvcnl9KSkpCisgICAgICAgIHNl
dChfdW5pZmllZFNvdXJjZUN1cnJlbnREaXJlY3RvcnkgJHtfdW5pZmllZFNvdXJjZUZpbGVEaXJl
Y3Rvcnl9KQorICAgICAgICBtYXRoKEVYUFIgX3VuaWZpZWRTb3VyY2VDb3VudCAiJHtfdW5pZmll
ZFNvdXJjZUNvdW50fSArIDEiKQorICAgICAgICBzZXQoX3VuaWZpZWRTb3VyY2VOYW1lICIke0RF
UklWRURfU09VUkNFU19ESVJ9L0phdmFTY3JpcHRDb3JlL1VuaWZpZWRTb3VyY2Uke191bmlmaWVk
U291cmNlQ291bnR9LmNwcCIpCisgICAgICAgIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1VO
SUZJRURfU09VUkNFUyAke191bmlmaWVkU291cmNlTmFtZX0pCisgICAgZW5kaWYgKCkKKworICAg
IGZpbGUoQVBQRU5EICR7X3VuaWZpZWRTb3VyY2VOYW1lfSAiIikKKyAgICBpZiAoJHtfc291cmNl
RmlsZX0gTUFUQ0hFUyAiLioobW18YykkIikKKyAgICAgIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRD
b3JlX1VOSUZJRURfU09VUkNFUyAke19zb3VyY2VGaWxlfSkKKyAgICBlbHNlICgpCisgICAgICAj
ICAgICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChfc291cmNlRmlsZSAke19zb3VyY2VGaWxlfSBO
QU1FKQorICAgICAgZmlsZShBUFBFTkQgJHtfdW5pZmllZFNvdXJjZU5hbWV9ICIjaW5jbHVkZSBc
IiR7X3NvdXJjZUZpbGV9XCJcbiIpCisgICAgZW5kaWYgKCkKK2VuZGZvcmVhY2ggKCkKKworc2V0
KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMgJHtKYXZhU2NyaXB0Q29yZV9VTklGSUVEX1NPVVJDRVN9
KQorbWVzc2FnZSgke0phdmFTY3JpcHRDb3JlX1NPVVJDRVN9KQorCisjIHNldChfdW5pZmllZFNv
dXJjZUNvdW50IDApCisjIGxpc3QoU09SVCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTKQorIyBsaXN0
KExFTkdUSCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTIEphdmFTY3JpcHRDb3JlX1NPVVJDRV9DT1VO
VCkKKyMgbWF0aChFWFBSIEphdmFTY3JpcHRDb3JlX1NPVVJDRV9DT1VOVCAiJHtKYXZhU2NyaXB0
Q29yZV9TT1VSQ0VfQ09VTlR9IC0gMSIpCisjIGxpc3QoR0VUIEphdmFTY3JpcHRDb3JlX1NPVVJD
RVMgMCBfZmlyc3RTb3VyY2VGaWxlKQorIyBtZXNzYWdlKCR7X2ZpcnN0U291cmNlRmlsZX0pCisj
IGdldF9maWxlbmFtZV9jb21wb25lbnQoX3VuaWZpZWRTb3VyY2VDdXJyZW50RGlyZWN0b3J5ICR7
X2ZpcnN0U291cmNlRmlsZX0gRElSRUNUT1JZKQorIyBmb3JlYWNoIChfaW5kZXggUkFOR0UgJHtK
YXZhU2NyaXB0Q29yZV9TT1VSQ0VfQ09VTlR9KQorIyAgICAgbWF0aChFWFBSIF9uZXdVbmlmaWVk
U291cmNlRmlsZSAiJHtfaW5kZXh9ICUgOCIpCisjICAgICBsaXN0KEdFVCBKYXZhU2NyaXB0Q29y
ZV9TT1VSQ0VTICR7X2luZGV4fSBfc291cmNlRmlsZSkKKyMgICAgIGdldF9maWxlbmFtZV9jb21w
b25lbnQoX3VuaWZpZWRTb3VyY2VGaWxlRGlyZWN0b3J5ICR7X3NvdXJjZUZpbGV9IERJUkVDVE9S
WSkKKyMgICAgIG1lc3NhZ2UoJHtfdW5pZmllZFNvdXJjZUN1cnJlbnREaXJlY3Rvcnl9KQorIyAg
ICAgbWVzc2FnZSgke191bmlmaWVkU291cmNlRmlsZURpcmVjdG9yeX0pCisjICAgICBpZigoJHtf
dW5pZmllZFNvdXJjZUZpbGVEaXJlY3Rvcnl9IFNUUkVRVUFMICR7X3VuaWZpZWRTb3VyY2VDdXJy
ZW50RGlyZWN0b3J5fSkpCisjICAgICAgIG1lc3NhZ2UodHJ1ZSkKKyMgICAgIGVsc2UgKCkKKyMg
ICAgICAgbWVzc2FnZShmYWxzZSkKKyMgICAgIGVuZGlmICgpCisKKyMgICAgIGlmICgoTk9UICR7
X25ld1VuaWZpZWRTb3VyY2VGaWxlfSkgT1IgKE5PVCAoJHtfdW5pZmllZFNvdXJjZUZpbGVEaXJl
Y3Rvcnl9IFNUUkVRVUFMICR7X3VuaWZpZWRTb3VyY2VDdXJyZW50RGlyZWN0b3J5fSkpKQorIyAg
ICAgICAgIHNldChfdW5pZmllZFNvdXJjZUN1cnJlbnREaXJlY3RvcnkgJHtfdW5pZmllZFNvdXJj
ZUZpbGVEaXJlY3Rvcnl9KQorIyAgICAgICAgIG1hdGgoRVhQUiBfdW5pZmllZFNvdXJjZUNvdW50
ICIke191bmlmaWVkU291cmNlQ291bnR9ICsgMSIpCisjICAgICAgICAgc2V0KF91bmlmaWVkU291
cmNlTmFtZSAiJHtERVJJVkVEX1NPVVJDRVNfRElSfS9KYXZhU2NyaXB0Q29yZS9VbmlmaWVkU291
cmNlJHtfdW5pZmllZFNvdXJjZUNvdW50fS5jcHAiKQorIyAgICAgICAgIGxpc3QoQVBQRU5EIEph
dmFTY3JpcHRDb3JlX1VOSUZJRURfU09VUkNFUyAke191bmlmaWVkU291cmNlTmFtZX0pCisjICAg
ICBlbmRpZiAoKQorCisjICAgICBsaXN0KEdFVCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTICR7X2lu
ZGV4fSBfc291cmNlRmlsZSkKKyMgICAgIGlmICgke19zb3VyY2VGaWxlfSBNQVRDSEVTICIuKiht
bXxjfGgpJCIpCisjICAgICAgIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1VOSUZJRURfU09V
UkNFUyAke19zb3VyY2VGaWxlfSkKKyMgICAgIGVsc2UgKCkKKyMgICAgICAgV0VCS0lUX0FERF9T
T1VSQ0VfREVQRU5ERU5DSUVTKCR7X3VuaWZpZWRTb3VyY2VOYW1lfSAke19zb3VyY2VGaWxlfSkK
KyMgICAgICAgZmlsZShBUFBFTkQgJHtfdW5pZmllZFNvdXJjZU5hbWV9ICIjaW5jbHVkZSBcIiR7
X3NvdXJjZUZpbGV9XCJcbiIpCisjICAgICBlbmRpZiAoKQorIyBlbmRmb3JlYWNoICgpCisKKyMg
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMgJHtKYXZhU2NyaXB0Q29yZV9VTklGSUVEX1NPVVJD
RVN9KQorIyBtZXNzYWdlKCR7SmF2YVNjcmlwdENvcmVfU09VUkNFU30pCisKICMgRXh0cmEgZmxh
Z3MgZm9yIGNvbXBpbGUgc291cmNlcyBjYW4gZ28gaGVyZS4KIGlmIChOT1QgTVNWQykKICAgICBz
ZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMocnVudGltZS9Qcm94eU9iamVjdC5jcHAgUFJPUEVS
VElFUyBDT01QSUxFX0ZMQUdTIC1mbm8tb3B0aW1pemUtc2libGluZy1jYWxscykKQEAgLTEzMzYs
NiArMTQwNCw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBNQUlOX0RFUEVOREVOQ1kgJHtD
TUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2NyZWF0ZV9yZWdleF90YWJsZXMKICAgICBDT01NQU5E
ICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9jcmVhdGVf
cmVnZXhfdGFibGVzID4gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9SZWdF
eHBKaXRUYWJsZXMuaAogICAgIFZFUkJBVElNKQorbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVf
SEVBREVSUyAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L1JlZ0V4cEppdFRh
Ymxlcy5oKQogV0VCS0lUX0FERF9TT1VSQ0VfREVQRU5ERU5DSUVTKCR7Q01BS0VfQ1VSUkVOVF9T
T1VSQ0VfRElSfS95YXJyL1lhcnJQYXR0ZXJuLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L1JlZ0V4cEppdFRhYmxlcy5oKQogCiBhZGRfY3VzdG9tX2NvbW1hbmQoCkBA
IC0xMzU2LDYgKzE0MjUsNyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgREVQRU5EUyAke0NN
QUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vcGFyc2VyL0tleXdvcmRzLnRhYmxlCiAgICAgQ09NTUFO
RCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vS2V5d29y
ZExvb2t1cEdlbmVyYXRvci5weSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vcGFyc2VyL0tl
eXdvcmRzLnRhYmxlID4gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9LZXl3
b3JkTG9va3VwLmgKICAgICBWRVJCQVRJTSkKK2xpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hF
QURFUlMgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9LZXl3b3JkTG9va3Vw
LmgpCiBXRUJLSVRfQUREX1NPVVJDRV9ERVBFTkRFTkNJRVMoJHtDTUFLRV9DVVJSRU5UX1NPVVJD
RV9ESVJ9L3BhcnNlci9MZXhlci5jcHAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVf
RElSfS9LZXl3b3JkTG9va3VwLmgpCiAKIApAQCAtMTUwMyw3ICsxNTczLDcgQEAgYWRkX2N1c3Rv
bV9jb21tYW5kKAogICAgIFdPUktJTkdfRElSRUNUT1JZICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUFRDT1JFX0RJUn0KICkKIAotbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfU09VUkNFUwor
bGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwogICAgICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vQWlyT3Bjb2RlLmgKICAgICAke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9L0Fpck9wY29kZUdlbmVyYXRlZC5oCiApCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcAppbmRleCBiZWI4NzkyODU4OGZkNWI2ZDcz
MTBmN2YzNDg1YmMxNzViYTNkYmZmLi43YzUzNzJhYzVlMjcxMTQxOTkzZjc4YmUxNjgzZTA5MzE4
NTNjODk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNp
YWwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAK
QEAgLTM2LDExICszNiwxMyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAot
dXNpbmcgbmFtZXNwYWNlIEFpcjsKK3VzaW5nIEluc3QgPSBBaXI6Okluc3Q7Cit1c2luZyBBcmcg
PSBBaXI6OkFyZzsKK3VzaW5nIEdlbmVyYXRpb25Db250ZXh0ID0gQWlyOjpHZW5lcmF0aW9uQ29u
dGV4dDsKIAogbmFtZXNwYWNlIHsKIAotdW5zaWduZWQgbnVtQjNBcmdzKEIzOjpLaW5kIGtpbmQp
Cit1bnNpZ25lZCBudW1CM0FyZ3MoS2luZCBraW5kKQogewogICAgIHN3aXRjaCAoa2luZC5vcGNv
ZGUoKSkgewogICAgIGNhc2UgQ2hlY2tBZGQ6CkBAIC0xMDgsNiArMTEwLDcgQEAgSW5zdCBDaGVj
a1NwZWNpYWw6OmhpZGRlbkJyYW5jaChjb25zdCBJbnN0JiBpbnN0KSBjb25zdAogCiB2b2lkIENo
ZWNrU3BlY2lhbDo6Zm9yRWFjaEFyZyhJbnN0JiBpbnN0LCBjb25zdCBTY29wZWRMYW1iZGE8SW5z
dDo6RWFjaEFyZ0NhbGxiYWNrPiYgY2FsbGJhY2spCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIEFp
cjsKICAgICBzdGQ6Om9wdGlvbmFsPFdpZHRoPiBvcHRpb25hbERlZkFyZ1dpZHRoOwogICAgIElu
c3QgaGlkZGVuID0gaGlkZGVuQnJhbmNoKGluc3QpOwogICAgIGhpZGRlbi5mb3JFYWNoQXJnKApA
QCAtMTU2LDYgKzE1OSw3IEBAIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IENoZWNrU3BlY2lhbDo6
c2hvdWxkVHJ5QWxpYXNpbmdEZWYoSW5zdCYgaW5zdCkKIAogQ0NhbGxIZWxwZXJzOjpKdW1wIENo
ZWNrU3BlY2lhbDo6Z2VuZXJhdGUoSW5zdCYgaW5zdCwgQ0NhbGxIZWxwZXJzJiBqaXQsIEdlbmVy
YXRpb25Db250ZXh0JiBjb250ZXh0KQogeworICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wIGZhaWwgPSBoaWRkZW5CcmFuY2goaW5zdCkuZ2VuZXJhdGUoaml0
LCBjb250ZXh0KTsKICAgICBBU1NFUlQoZmFpbC5pc1NldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRHVwbGljYXRlVGFpbHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzRHVwbGljYXRlVGFpbHMuY3BwCmluZGV4IGZkNjU3OTBlOTljMmZlYWQ0
ZjVmYmI5ZWFmNjBjMWE3NWM5MzIyNTUuLmNmZjQ0YTRjMWUwMDkxZWJhNGE3ODNiMzhmMzVhM2Jk
Y2VkMWJjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0R1cGxpY2F0
ZVRhaWxzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNEdXBsaWNhdGVUYWls
cy5jcHAKQEAgLTQ0LDcgKzQ0LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAK
IG5hbWVzcGFjZSB7CiAKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEIz
RHVwbGljYXRlVGFpbHNJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFs
c2U7Cit9CiAKIGNsYXNzIER1cGxpY2F0ZVRhaWxzIHsKIHB1YmxpYzoKQEAgLTk0LDcgKzk2LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGRlbW90ZVZhbHVl
cyhtX3Byb2MsIHZhbHVlc1RvRGVtb3RlKTsKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAg
ICAgaWYgKEIzRHVwbGljYXRlVGFpbHNJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAg
ZGF0YUxvZygiUHJvY2VkdXJlIGFmdGVyIHZhbHVlIGRlbW90aW9uOlxuIik7CiAgICAgICAgICAg
ICBkYXRhTG9nKG1fcHJvYyk7CiAgICAgICAgIH0KQEAgLTExNiw3ICsxMTgsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAvLyBwb2ludC4KICAgICAgICAgICAgIGNhbmRpZGF0ZXMucmVtb3ZlKGJs
b2NrKTsKIAotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNEdXBs
aWNhdGVUYWlsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkR1
cGxpY2F0aW5nICIsICp0YWlsLCAiIGludG8gIiwgKmJsb2NrLCAiXG4iKTsKIAogICAgICAgICAg
ICAgYmxvY2stPnJlbW92ZUxhc3QobV9wcm9jKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAppbmRl
eCAxYWU0MzU1NjE1MTdlOTFjMDllNjY4YzY5ZWFmYzE1NGE3NDhiZGU2Li45YTJlOThhYTQzODU2
MjgwMDlmMTJhNDQ1MjRhNGQxYWZmNTVmOWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCkBA
IC01Myw3ICs1Myw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBuYW1lc3Bh
Y2UgewogCi1jb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBCM0VsaW1pbmF0
ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9z
ZSA9IGZhbHNlOworfQogCiAvLyBGSVhNRTogV2UgY291bGQgdHJlYXQgUGF0Y2hwb2ludHMgd2l0
aCBhIG5vbi1lbXB0eSBzZXQgb2YgcmVhZHMgYXMgYSAibWVtb3J5IHZhbHVlIiBhbmQgc29tZWhv
dwogLy8gZWxpbWluYXRlIHJlZHVuZGFudCBvbmVzLiBXZSB3b3VsZCBuZWVkIHNvbWUgd2F5IG9m
IGRldGVybWluaW5nIGlmIHR3byBwYXRjaHBvaW50cyBhcmUgcmVwbGFjYWJsZS4KQEAgLTE2MCw3
ICsxNjIsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHJ1bigpCiAgICAgewotICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkIzIGJlZm9yZSBDU0U6XG4iLCBt
X3Byb2MpOwogICAgICAgICAKICAgICAgICAgbV9wcm9jLnJlc2V0VmFsdWVPd25lcnMoKTsKQEAg
LTE4OCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGRhdGEubWVtb3J5
VmFsdWVzQXRUYWlsLmFkZChtZW1vcnkpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Np
b25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiQmxvY2sgIiwg
KmJsb2NrLCAiOiAiLCBkYXRhLCAiXG4iKTsKICAgICAgICAgfQogCkBAIC0xOTYsNyArMTk4LDcg
QEAgcHVibGljOgogICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IHBvc3RPcmRlciA9IG1fcHJv
Yy5ibG9ja3NJblBvc3RPcmRlcigpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBwb3N0T3Jk
ZXIuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBtX2Jsb2NrID0gcG9zdE9yZGVyW2ldOwot
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21t
b25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFM
b2coIkxvb2tpbmcgYXQgIiwgKm1fYmxvY2ssICI6XG4iKTsKIAogICAgICAgICAgICAgbV9kYXRh
ID0gSW1wdXJlQmxvY2tEYXRhKCk7CkBAIC0yMjIsNyArMjI0LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lv
bnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkIzIGFmdGVyIENTRTpc
biIsIG1fcHJvYyk7CiAKICAgICAgICAgcmV0dXJuIG1fY2hhbmdlZDsKQEAgLTQ4Nyw3ICs0ODks
NyBAQCBwcml2YXRlOgogICAgICAgICAvLyBleHBlbnNpdmUsIGJ1dCBpbiB0aGUgb3ZlcndoZWxt
aW5nIG1ham9yaXR5IG9mIGNhc2VzIGl0IHdpbGwgYWxtb3N0IGltbWVkaWF0ZWx5IGhpdCBhbiAK
ICAgICAgICAgLy8gb3BlcmF0aW9uIHRoYXQgaW50ZXJmZXJlcy4KIAotICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coKm1fdmFsdWUsICI6IGxvb2tpbmcgZm9y
d2FyZCBmb3Igc3RvcmVzIHRvICIsICpwdHIsICIuLi5cbiIpOwogCiAgICAgICAgIC8vIEZpcnN0
IHNlYXJjaCBmb3J3YXJkIGluIHRoaXMgYmFzaWMgYmxvY2suCkBAIC01NTcsNyArNTU5LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgaWYgKG1hdGNoZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQjNFbGltaW5h
dGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0
YUxvZygiRWxpbWluYXRpbmcgIiwgKm1fdmFsdWUsICIgZHVlIHRvICIsIHBvaW50ZXJMaXN0RHVt
cChtYXRjaGVzKSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwpA
QCAtNTY2LDcgKzU2OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBNZW1vcnlWYWx1ZSogZG9t
aW5hdGluZ01hdGNoID0gbWF0Y2hlc1swXTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1f
ZG9taW5hdG9ycy5kb21pbmF0ZXMoZG9taW5hdGluZ01hdGNoLT5vd25lciwgbV9ibG9jaykpOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChC
M0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiICAgIEVsaW1pbmF0aW5nIHVzaW5nICIsICpkb21pbmF0aW5nTWF0
Y2gsICJcbiIpOwogICAgICAgICAgICAgVmVjdG9yPFZhbHVlKj4gZXh0cmFWYWx1ZXM7CiAgICAg
ICAgICAgICBpZiAoVmFsdWUqIHZhbHVlID0gcmVwbGFjZShkb21pbmF0aW5nTWF0Y2gsIGV4dHJh
VmFsdWVzKSkgewpAQCAtNTkwLDcgKzU5Miw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgVmFyaWFi
bGVWYWx1ZSogZ2V0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhcmlhYmxlVmFsdWU+KAogICAg
ICAgICAgICAgbV9pbmRleCwgR2V0LCBtX3ZhbHVlLT5vcmlnaW4oKSwgdmFyaWFibGUpOwotICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVz
c2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBJbnNlcnRp
bmcgZ2V0IG9mIHZhbHVlOiAiLCAqZ2V0LCAiXG4iKTsKICAgICAgICAgbV92YWx1ZS0+cmVwbGFj
ZVdpdGhJZGVudGl0eShnZXQpOwogICAgICAgICAgICAgCkBAIC02MTUsMjMgKzYxNywyMyBAQCBw
cml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlcj4KICAgICBNZW1vcnlNYXRjaGVz
IGZpbmRNZW1vcnlWYWx1ZShWYWx1ZSogcHRyLCBIZWFwUmFuZ2UgcmFuZ2UsIGNvbnN0IEZpbHRl
ciYgZmlsdGVyKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCM0Vs
aW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICBkYXRhTG9nKCptX3ZhbHVlLCAiOiBsb29raW5nIGJhY2t3YXJkIGZvciAiLCAqcHRyLCAiLi4u
XG4iKTsKICAgICAgICAgCiAgICAgICAgIGlmIChtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+
aGFzRmVuY2UoKSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAo
QjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgICAgIGRhdGFMb2coIiAgICBHaXZpbmcgdXAgYmVjYXVzZSBmZW5jZXMuXG4iKTsKICAg
ICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChN
ZW1vcnlWYWx1ZSogbWF0Y2ggPSBtX2RhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmZpbmQocHRyLCBm
aWx0ZXIpKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0Vs
aW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiICAgIEZvdW5kICIsICptYXRjaCwgIiBsb2NhbGx5LlxuIik7CiAgICAg
ICAgICAgICByZXR1cm4geyBtYXRjaCB9OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fZGF0
YS53cml0ZXMub3ZlcmxhcHMocmFuZ2UpKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEdpdmluZyB1cCBiZWNhdXNlIG9m
IHdyaXRlcy5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQpAQCAtNjQy
LDI3ICs2NDQsMjcgQEAgcHJpdmF0ZToKICAgICAgICAgTWVtb3J5TWF0Y2hlcyBtYXRjaGVzOwog
CiAgICAgICAgIHdoaWxlIChCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnBvcCgpKSB7Ci0g
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1v
blN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiICAgIExvb2tpbmcgYXQgIiwgKmJsb2NrLCAiXG4iKTsKIAogICAgICAgICAgICAgSW1wdXJl
QmxvY2tEYXRhJiBkYXRhID0gbV9pbXB1cmVCbG9ja0RhdGFbYmxvY2tdOwogCiAgICAgICAgICAg
ICBNZW1vcnlWYWx1ZSogbWF0Y2ggPSBkYXRhLm1lbW9yeVZhbHVlc0F0VGFpbC5maW5kKHB0ciwg
ZmlsdGVyKTsKICAgICAgICAgICAgIGlmIChtYXRjaCAmJiBtYXRjaCAhPSBtX3ZhbHVlKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEIzRWxpbWlu
YXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiICAgIEZvdW5kIG1hdGNoOiAiLCAqbWF0Y2gsICJcbiIpOwogICAgICAg
ICAgICAgICAgIG1hdGNoZXMuYXBwZW5kKG1hdGNoKTsKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGRhdGEud3JpdGVzLm92ZXJsYXBz
KHJhbmdlKSkgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAg
IGlmIChCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBHaXZpbmcgdXAgYmVjYXVzZSBvZiB3cml0
ZXMuXG4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBpZiAoIWJsb2NrLT5udW1QcmVkZWNlc3NvcnMoKSkgewotICAgICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1vblN1
YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIiAgICBHaXZpbmcgdXAgYmVjYXVzZSBpdCdzIGxpdmUgYXQgcm9vdC5cbiIpOwogICAgICAg
ICAgICAgICAgIC8vIFRoaXMgZXNzZW50aWFsbHkgcHJvdmVzIHRoYXQgdGhpcyBpcyBsaXZlIGF0
IHRoZSBwcm9sb2d1ZS4gVGhhdCBtZWFucyB0aGF0IHdlCiAgICAgICAgICAgICAgICAgLy8gY2Fu
bm90IHJlbGlhYmx5IG9wdGltaXplIHRoaXMgY2FzZS4KQEAgLTY3Miw3ICs2NzQsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgd29ya2xpc3QucHVzaEFsbChibG9jay0+cHJlZGVjZXNzb3JzKCkp
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCM0VsaW1p
bmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgR290IG1hdGNoZXM6ICIsIHBvaW50ZXJMaXN0RHVtcChtYXRjaGVzKSwgIlxu
Iik7CiAgICAgICAgIHJldHVybiBtYXRjaGVzOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0ZpeFNTQS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNGaXhTU0EuY3BwCmluZGV4IGQyMDM4MWQyMDIyZmEwNGYyNjNhODdlZmIxYjNjZDkyMDJlNjc1
OGEuLmIyOGYyMWYxMTA3YzgyNmZhZjYyYjNmODM3MDYyNTgzNjg3ZTM3ZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZpeFNTQS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzRml4U1NBLmNwcApAQCAtNDgsNyArNDgsOSBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEIzIHsKIAogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7CituYW1lc3BhY2UgQjNGaXhTU0FJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2
ZXJib3NlID0gZmFsc2U7Cit9CiAKIHZvaWQga2lsbERlYWRWYXJpYWJsZXMoUHJvY2VkdXJlJiBw
cm9jKQogewpAQCAtMTU3LDcgKzE1OSw3IEBAIHZvaWQgZml4U1NBR2xvYmFsbHkoUHJvY2VkdXJl
JiBwcm9jKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBWYWx1ZSogcGhpID0gcHJvYy5hZGQ8VmFsdWU+KFBoaSwg
dmFyaWFibGUtPnR5cGUoKSwgYmxvY2stPmF0KDApLT5vcmlnaW4oKSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICBpZiAoQjNGaXhTU0FJbnRlcm5hbDo6
dmVyYm9zZSkgewogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAg
ICAgICAgICAgIkFkZGluZyBQaGkgZm9yICIsIHBvaW50ZXJEdW1wKHZhcmlhYmxlKSwgIiBhdCAi
LCAqYmxvY2ssICI6ICIsCiAgICAgICAgICAgICAgICAgICAgICAgICBkZWVwRHVtcChwcm9jLCBw
aGkpLCAiXG4iKTsKQEAgLTIzMSw3ICsyMzMsNyBAQCB2b2lkIGZpeFNTQUdsb2JhbGx5KFByb2Nl
ZHVyZSYgcHJvYykKICAgICAgICAgICAgICAgICBWYXJpYWJsZSogdmFyaWFibGUgPSBjYWxjVmFy
VG9WYXJpYWJsZVtjYWxjVmFyLT5pbmRleCgpXTsKIAogICAgICAgICAgICAgICAgIFZhbHVlKiBt
YXBwZWRWYWx1ZSA9IGVuc3VyZU1hcHBpbmcodmFyaWFibGUsIHVwc2lsb25JbnNlcnRpb25Qb2lu
dCwgdXBzaWxvbk9yaWdpbik7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoQjNGaXhTU0FJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgIk1hcHBlZCB2YWx1ZSBm
b3IgIiwgKnZhcmlhYmxlLCAiIHdpdGggc3VjY2Vzc29yIFBoaSAiLCAqcGhpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIiBhdCBlbmQgb2YgIiwgKmJsb2NrLCAiOiAiLCBwb2ludGVyRHVtcCht
YXBwZWRWYWx1ZSksICJcbiIpOwpAQCAtMjQ1LDcgKzI0Nyw3IEBAIHZvaWQgZml4U1NBR2xvYmFs
bHkoUHJvY2VkdXJlJiBwcm9jKQogICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7
CiAgICAgfQogCi0gICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoQjNGaXhTU0FJbnRlcm5hbDo6
dmVyYm9zZSkgewogICAgICAgICBkYXRhTG9nKCJCMyBhZnRlciBTU0EgY29udmVyc2lvbjpcbiIp
OwogICAgICAgICBkYXRhTG9nKHByb2MpOwogICAgIH0KQEAgLTI2Niw3ICsyNjgsNyBAQCB2b2lk
IGRlbW90ZVZhbHVlcyhQcm9jZWR1cmUmIHByb2MsIGNvbnN0IEluZGV4U2V0PFZhbHVlKj4mIHZh
bHVlcykKICAgICAgICAgICAgIHBoaU1hcC5hZGQodmFsdWUsIHByb2MuYWRkVmFyaWFibGUodmFs
dWUtPnR5cGUoKSkpOwogICAgIH0KIAotICAgIGlmICh2ZXJib3NlKSB7CisgICAgaWYgKEIzRml4
U1NBSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZGF0YUxvZygiRGVtb3RpbmcgdmFsdWVz
IGFzIGZvbGxvd3M6XG4iKTsKICAgICAgICAgZGF0YUxvZygiICAgbWFwID0gIik7CiAgICAgICAg
IENvbW1hUHJpbnRlciBjb21tYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0ZvbGRQYXRoQ29uc3RhbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Zv
bGRQYXRoQ29uc3RhbnRzLmNwcAppbmRleCBiOWJkYzhkNGYyODhiODJjNjMzMWVmMzEwZDMzM2Uz
YTU2NDdlMDRkLi4yMjI1MGNiYzdmMzVjNGNmY2Y5OTE2YTVhYjJlZTcyNmFmYzRhZDVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGb2xkUGF0aENvbnN0YW50cy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRm9sZFBhdGhDb25zdGFudHMuY3BwCkBA
IC00MSw3ICs0MSw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBuYW1lc3Bh
Y2UgewogCi1jb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBCM0ZvbGRQYXRo
Q29uc3RhbnRzSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwor
fQogCiBjbGFzcyBGb2xkUGF0aENvbnN0YW50cyB7CiBwdWJsaWM6CkBAIC01NSw3ICs1Nyw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwogCi0gICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQjNGb2xkUGF0aENvbnN0YW50c0ludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQjMgYmVmb3JlIGZvbGRpbmcgcGF0aCBjb25z
dGFudHM6IFxuIiwgbV9wcm9jLCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZpbmQgYWxs
IG9mIHRoZSB2YWx1ZXMgdGhhdCBhcmUgdGhlIHN1YmplY3Qgb2YgYSBicmFuY2ggb3Igc3dpdGNo
LiBGb3IgYW55IHN1Y2Nlc3NvcgpAQCAtODAsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVF9VTlVTRUQob3RoZXJPdmVycmlkZSwgb3RoZXJPdmVycmlkZS5ibG9j
ayAhPSBvdmVycmlkZS5ibG9jayk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzRm9sZFBhdGhDb25zdGFudHNJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJPdmVycmlkaW5nICIsICp2YWx1ZSwgIiBm
cm9tICIsICpmcm9tLCAiOiAiLCBvdmVycmlkZSwgIlxuIik7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGZvclZhbHVlLmFwcGVuZChvdmVycmlkZSk7CkBAIC0xNDksNyArMTUxLDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBvdmVycmlkZTsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNGb2xkUGF0
aENvbnN0YW50c0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIklu
IGJsb2NrICIsICpibG9jaywgIiBnZXR0aW5nIG92ZXJyaWRlIGZvciAiLCAqdmFsdWUsICI6ICIs
IHJlc3VsdCwgIlxuIik7CiAKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbmZlclN3aXRjaGVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0luZmVyU3dpdGNoZXMuY3BwCmluZGV4IGYyOWY0ZjA5NTRiMmFl
NzIwMDVhMTMwMmVmZmNjZDRlMzRkZmI4NzguLmVlNjEyZmVmMjhjNmE3N2FhYzE1Yzk4YTk3YWM5
MzkyYjEzYzVhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luZmVy
U3dpdGNoZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luZmVyU3dpdGNo
ZXMuY3BwCkBAIC00Miw3ICs0Miw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewog
CiBuYW1lc3BhY2UgewogCi1jb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBC
M0luZmVyU3dpdGNoZXNJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFs
c2U7Cit9CiAKIGNsYXNzIEluZmVyU3dpdGNoZXMgewogcHVibGljOgpAQCAtNTUsNyArNTcsNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBydW4oKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgIGRhdGFMb2coIkIzIGJlZm9yZSBpbmZlclN3aXRjaGVzOlxuIiwgbV9wcm9jKTsKICAg
ICAgICAgCiAgICAgICAgIGJvb2wgY2hhbmdlZCA9IHRydWU7CkBAIC02Myw3ICs2NSw3IEBAIHB1
YmxpYzoKICAgICAgICAgd2hpbGUgKGNoYW5nZWQpIHsKICAgICAgICAgICAgIGNoYW5nZWQgPSBm
YWxzZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAg
ICBpZiAoQjNJbmZlclN3aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiUGVyZm9ybWluZyBmaXhwb2ludCBpdGVyYXRpb246XG4iKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fcHJvYykKQEAgLTc4LDcg
KzgwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX3Byb2MuZGVsZXRl
T3JwaGFucygpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJCMyBhZnRlciBpbmZlclN3aXRjaGVzOlxuIiwgbV9wcm9jKTsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC05NiwxMCArOTgsMTAgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIFN3aXRjaERl
c2NyaXB0aW9uIGRlc2NyaXB0aW9uID0gZGVzY3JpYmUoYmxvY2spOwotICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICAgICAgZGF0YUxvZygiRGVzY3JpcHRpb24gb2YgcHJpbWFyeSBibG9jayAiLCAqYmxvY2ss
ICI6ICIsIGRlc2NyaXB0aW9uLCAiXG4iKTsKICAgICAgICAgaWYgKCFkZXNjcmlwdGlvbikgewot
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNJbmZlclN3aXRjaGVz
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEJhaWxpbmcg
YmVjYXVzZSBub3Qgc3dpdGNoLWxpa2UuXG4iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQpAQCAtMTE1LDE3ICsxMTcsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBkZXNjcmlwdGlvbi5icmFuY2gp
CiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGluZyBiZWNhdXNlIG9mICIsIGRlZXBEdW1wKG1fcHJv
YywgdmFsdWUpLCAiXG4iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgPSBibG9jay0+cHJlZGVj
ZXNzb3IoMCk7CiAgICAgICAgIFN3aXRjaERlc2NyaXB0aW9uIHByZWRlY2Vzc29yRGVzY3JpcHRp
b24gPSBkZXNjcmliZShwcmVkZWNlc3Nvcik7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICBpZiAoQjNJbmZlclN3aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgRGVzY3JpcHRpb24gb2YgcHJlZGVjZXNzb3IgYmxvY2sgIiwgKnByZWRlY2Vzc29y
LCAiOiAiLCBwcmVkZWNlc3NvckRlc2NyaXB0aW9uLCAiXG4iKTsKICAgICAgICAgaWYgKCFwcmVk
ZWNlc3NvckRlc2NyaXB0aW9uKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCIgICAgQmFpbGluZyBiZWNhdXNlIG5vdCBzd2l0Y2gtbGlrZS5cbiIpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0xMzMsNyArMTM1LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgLy8gQm90aCB1cyBhbmQgdGhlIHByZWRlY2Vzc29yIGFyZSBzd2l0Y2gt
bGlrZSwgYnV0IHRoYXQgZG9lc24ndCBtZWFuIHRoYXQgd2UncmUgY29tcGF0aWJsZS4KICAgICAg
ICAgLy8gV2UgbWF5IGJlIHN3aXRjaGluZyBvbiBkaWZmZXJlbnQgdmFsdWVzIQogICAgICAgICBp
ZiAoZGVzY3JpcHRpb24uc291cmNlICE9IHByZWRlY2Vzc29yRGVzY3JpcHRpb24uc291cmNlKSB7
Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0luZmVyU3dpdGNo
ZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGlu
ZyBiZWNhdXNlIHNvdXJjZXMgZG9uJ3QgbWF0Y2guXG4iKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQpAQCAtMTQzLDcgKzE0NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8v
IGp1c3QgdG90YWxseSByZWR1bmRhbnQgYW5kIHdlIHNob3VsZCBiZSBnZXR0aW5nIHJpZCBvZiBp
dC4gQnV0IHdlIGRvbid0IGhhbmRsZSB0aGF0IGhlcmUsCiAgICAgICAgIC8vIHlldC4KICAgICAg
ICAgaWYgKHByZWRlY2Vzc29yRGVzY3JpcHRpb24uZmFsbFRocm91Z2guYmxvY2soKSAhPSBibG9j
aykgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNJbmZlclN3
aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEJh
aWxpbmcgYmVjYXVzZSBmYWxsLXRocm91Z2ggb2YgcHJlZGVjZXNzb3IgaXMgbm90IHRoZSBwcmlt
YXJ5IGJsb2NrLlxuIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAg
LTE1MSwxNCArMTUzLDE0IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRo
ZXJlIGFpbid0IG5vIGxvb3BzLgogICAgICAgICBpZiAoZGVzY3JpcHRpb24uZmFsbFRocm91Z2gu
YmxvY2soKSA9PSBibG9jawogICAgICAgICAgICAgfHwgZGVzY3JpcHRpb24uZmFsbFRocm91Z2gu
YmxvY2soKSA9PSBwcmVkZWNlc3NvcikgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgICAgICBpZiAoQjNJbmZlclN3aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiICAgIEJhaWxpbmcgYmVjYXVzZSBvZiBmYWxsLXRocm91Z2ggbG9vcC5c
biIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGZvciAo
U3dpdGNoQ2FzZSBzd2l0Y2hDYXNlIDogZGVzY3JpcHRpb24uY2FzZXMpIHsKICAgICAgICAgICAg
IGlmIChzd2l0Y2hDYXNlLnRhcmdldEJsb2NrKCkgPT0gYmxvY2sKICAgICAgICAgICAgICAgICB8
fCBzd2l0Y2hDYXNlLnRhcmdldEJsb2NrKCkgPT0gcHJlZGVjZXNzb3IpIHsKLSAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQjNJbmZlclN3aXRjaGVzSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBCYWlsaW5n
IGJlY2F1c2Ugb2YgbG9vcCBpbiBwcmltYXJ5IGNhc2VzLlxuIik7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQpAQCAtMTY2LDEzICsxNjgsMTMgQEAgcHJpdmF0
ZToKICAgICAgICAgZm9yIChTd2l0Y2hDYXNlIHN3aXRjaENhc2UgOiBwcmVkZWNlc3NvckRlc2Ny
aXB0aW9uLmNhc2VzKSB7CiAgICAgICAgICAgICBpZiAoc3dpdGNoQ2FzZS50YXJnZXRCbG9jaygp
ID09IGJsb2NrCiAgICAgICAgICAgICAgICAgfHwgc3dpdGNoQ2FzZS50YXJnZXRCbG9jaygpID09
IHByZWRlY2Vzc29yKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAg
ICAgICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGluZyBiZWNhdXNlIG9mIGxvb3AgaW4gcHJlZGVjZXNz
b3IgY2FzZXMuXG4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBp
ZiAoQjNJbmZlclN3aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgRG9pbmcgaXQhXG4iKTsKICAgICAgICAgLy8gV2UncmUgY29tbWl0dGVkIHRvIGRvaW5n
IHRoZSB0aGluZy4KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAKaW5kZXggOTYzYzEw
ZWRjNWU0OTM5ZjVmYmUyZWQ0MjU2NGRkM2Q3ZTA3NjNkZC4uMTQ1NjdmY2M1YmRhYzllMGY4ZTcx
ODE2OGQ2ZmYyNzcwYzY0OGZhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkFpckFyZy5oIgogI2lu
Y2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0Jsb2NrSW5zZXJ0aW9u
U2V0LmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgiCkBAIC0zOSwxMSArNDAsMTUgQEAKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKK3VzaW5nIEFyZyA9IEFpcjo6QXJnOwor
dXNpbmcgQ29kZSA9IEFpcjo6Q29kZTsKK3VzaW5nIFRtcCA9IEFpcjo6VG1wOworCiBuYW1lc3Bh
Y2UgewogCi1jbGFzcyBMb3dlck1hY3JvcyB7CitjbGFzcyBMb3dlck1hY3Jvc0FmdGVyT3B0aW1p
emF0aW9ucyB7CiBwdWJsaWM6Ci0gICAgTG93ZXJNYWNyb3MoUHJvY2VkdXJlJiBwcm9jKQorICAg
IExvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zKFByb2NlZHVyZSYgcHJvYykKICAgICAgICAg
OiBtX3Byb2MocHJvYykKICAgICAgICAgLCBtX2Jsb2NrSW5zZXJ0aW9uU2V0KHByb2MpCiAgICAg
ICAgICwgbV9pbnNlcnRpb25TZXQocHJvYykKQEAgLTE4Myw3ICsxODgsNyBAQCBwcml2YXRlOgog
CiBib29sIGxvd2VyTWFjcm9zSW1wbChQcm9jZWR1cmUmIHByb2MpCiB7Ci0gICAgTG93ZXJNYWNy
b3MgbG93ZXJNYWNyb3MocHJvYyk7CisgICAgTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMg
bG93ZXJNYWNyb3MocHJvYyk7CiAgICAgcmV0dXJuIGxvd2VyTWFjcm9zLnJ1bigpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDE0ODljMzExYzYz
ZWUwMDJmYTkxYTc2MWIxZDYwNjBjYWY0ZTI5MzEuLjc2NGRiNGNiZDg2OGRkODUwYmQ4YTNhYmQx
NDgyYWZhNDIzODQyZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIu
Y3BwCkBAIC02OSwyMSArNjksMjYgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7
CiAKLXVzaW5nIG5hbWVzcGFjZSBBaXI7Ci0KIG5hbWVzcGFjZSB7CiAKLWNvbnN0IGJvb2wgdmVy
Ym9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEIzTG93ZXJUb0FpckludGVybmFsIHsKK3N0YXRpYyBj
b25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KKwordXNpbmcgQXJnID0gQWlyOjpBcmc7Cit1
c2luZyBJbnN0ID0gQWlyOjpJbnN0OwordXNpbmcgQ29kZSA9IEFpcjo6Q29kZTsKK3VzaW5nIFRt
cCA9IEFpcjo6VG1wOwogCiAvLyBGSVhNRTogV2Ugd291bGRuJ3QgbmVlZCB0aGlzIGlmIEFpciBz
dXBwb3J0ZWQgV2lkdGggbW9kaWZpZXJzIGluIEFpcjo6S2luZC4KIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkyNDcKICNkZWZpbmUgT1BDT0RFX0ZPUl9XSURU
SChvcGNvZGUsIHdpZHRoKSAoIFwKLSAgICAod2lkdGgpID09IFdpZHRoOCA/IG9wY29kZSAjIyA4
IDogXAotICAgICh3aWR0aCkgPT0gV2lkdGgxNiA/IG9wY29kZSAjIyAxNiA6IFwKLSAgICAod2lk
dGgpID09IFdpZHRoMzIgPyBvcGNvZGUgIyMgMzIgOiBcCi0gICAgb3Bjb2RlICMjIDY0KQorICAg
ICh3aWR0aCkgPT0gV2lkdGg4ID8gQWlyOjpvcGNvZGUgIyMgOCA6IFwKKyAgICAod2lkdGgpID09
IFdpZHRoMTYgPyBBaXI6Om9wY29kZSAjIyAxNiA6ICAgIFwKKyAgICAod2lkdGgpID09IFdpZHRo
MzIgPyBBaXI6Om9wY29kZSAjIyAzMiA6ICAgIFwKKyAgICBBaXI6Om9wY29kZSAjIyA2NCkKICNk
ZWZpbmUgT1BDT0RFX0ZPUl9DQU5PTklDQUxfV0lEVEgob3Bjb2RlLCB3aWR0aCkgKCBcCi0gICAg
KHdpZHRoKSA9PSBXaWR0aDY0ID8gb3Bjb2RlICMjIDY0IDogb3Bjb2RlICMjIDMyKQorICAgICh3
aWR0aCkgPT0gV2lkdGg2NCA/IEFpcjo6b3Bjb2RlICMjIDY0IDogQWlyOjpvcGNvZGUgIyMgMzIp
CiAKIGNsYXNzIExvd2VyVG9BaXIgewogcHVibGljOgpAQCAtMTA3LDYgKzExMiw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgcnVuKCkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7
CiAgICAgICAgIGZvciAoQjM6OkJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jZWR1cmUpCiAgICAg
ICAgICAgICBtX2Jsb2NrVG9CbG9ja1tibG9ja10gPSBtX2NvZGUuYWRkQmxvY2soYmxvY2stPmZy
ZXF1ZW5jeSgpKTsKICAgICAgICAgCkBAIC0xMTQsNyArMTIwLDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgc3dpdGNoICh2YWx1ZS0+b3Bjb2RlKCkpIHsKICAgICAgICAgICAgIGNhc2UgUGhpOiB7
CiAgICAgICAgICAgICAgICAgbV9waGlUb1RtcFt2YWx1ZV0gPSBtX2NvZGUubmV3VG1wKHZhbHVl
LT5yZXN1bHRCYW5rKCkpOwotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAg
ICAgICAgIGlmIChCM0xvd2VyVG9BaXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiUGhpIHRtcCBmb3IgIiwgKnZhbHVlLCAiOiAiLCBtX3BoaVRvVG1wW3Zh
bHVlXSwgIlxuIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0x
NDYsNyArMTUyLDcgQEAgcHVibGljOgogCiAgICAgICAgICAgICBtX2lzUmFyZSA9ICFtX2Zhc3RX
b3JrbGlzdC5zYXcoYmxvY2spOwogCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgIGlmIChCM0xvd2VyVG9BaXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBk
YXRhTG9nKCJMb3dlcmluZyBCbG9jayAiLCAqYmxvY2ssICI6XG4iKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHN1Y2Nlc3NvcnMgYXJlIHNldCB1cCBj
b3JyZWN0bHkuCkBAIC0xNjMsMTAgKzE2OSwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
aWYgKG1fbG9ja2VkLmNvbnRhaW5zKG1fdmFsdWUpKQogICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgICAgICBtX2luc3RzLmFwcGVuZChWZWN0b3I8SW5zdD4oKSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEIzTG93ZXJU
b0FpckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJMb3dl
cmluZyAiLCBkZWVwRHVtcChtX3Byb2NlZHVyZSwgbV92YWx1ZSksICI6XG4iKTsKICAgICAgICAg
ICAgICAgICBsb3dlcigpOwotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAg
ICAgICAgICAgaWYgKEIzTG93ZXJUb0FpckludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGZvciAoSW5zdCYgaW5zdCA6IG1faW5zdHMubGFzdCgpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiICAgICIsIGluc3QsICJcbiIpOwogICAgICAgICAgICAgICAg
IH0KQEAgLTM3OSw3ICszODUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJlYWxUbXAg
PSBtX2NvZGUubmV3VG1wKHZhbHVlLT5yZXN1bHRCYW5rKCkpOwogICAgICAgICAgICAgICAgIGlm
IChtX3Byb2NlZHVyZS5pc0Zhc3RDb25zdGFudCh2YWx1ZS0+a2V5KCkpKQogICAgICAgICAgICAg
ICAgICAgICBtX2NvZGUuYWRkRmFzdFRtcChyZWFsVG1wKTsKLSAgICAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQjNMb3dlclRvQWlySW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIlRtcCBmb3IgIiwgKnZhbHVlLCAiOiAi
LCByZWFsVG1wLCAiXG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRtcCA9IHJlYWxU
bXA7CkBAIC05MDYsNiArOTEyLDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxBaXI6Ok9wY29k
ZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQ+CiAgICAgdm9pZCBhcHBlbmRTaGlmdChW
YWx1ZSogdmFsdWUsIFZhbHVlKiBhbW91bnQpCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3Bh
Y2UgQWlyOwogICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBvcGNvZGVGb3JUeXBlKG9wY29k
ZTMyLCBvcGNvZGU2NCwgdmFsdWUtPnR5cGUoKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoaW1t
KGFtb3VudCkpIHsKQEAgLTEwMTksNiArMTAyNiw3IEBAIHByaXZhdGU6CiAKICAgICBJbnN0IGNy
ZWF0ZVN0b3JlKEFpcjo6S2luZCBtb3ZlLCBWYWx1ZSogdmFsdWUsIGNvbnN0IEFyZyYgZGVzdCkK
ICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAgIGlmIChhdXRvIGlt
bV92YWx1ZSA9IGltbSh2YWx1ZSkpIHsKICAgICAgICAgICAgIGlmIChpc0FSTTY0KCkgJiYgaW1t
X3ZhbHVlLnZhbHVlKCkgPT0gMCkgewogICAgICAgICAgICAgICAgIHN3aXRjaCAobW92ZS5vcGNv
ZGUpIHsKQEAgLTEwNDMsNiArMTA1MSw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgQWlyOjpPcGNv
ZGUgc3RvcmVPcGNvZGUoV2lkdGggd2lkdGgsIEJhbmsgYmFuaykKICAgICB7CisgICAgICAgIHVz
aW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAgIHN3aXRjaCAod2lkdGgpIHsKICAgICAgICAgY2Fz
ZSBXaWR0aDg6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChiYW5rID09IEdQKTsKQEAgLTEw
NzMsNiArMTA4Miw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBhcHBlbmRTdG9yZShWYWx1
ZSogdmFsdWUsIGNvbnN0IEFyZyYgZGVzdCkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFj
ZSBBaXI7CiAgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSB2YWx1ZS0+YXM8TWVtb3J5VmFs
dWU+KCk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1lbW9yeS0+aXNTdG9yZSgpKTsKIApAQCAt
MTEwMCw2ICsxMTEwLDcgQEAgcHJpdmF0ZToKIAogICAgIEFpcjo6T3Bjb2RlIG1vdmVGb3JUeXBl
KFR5cGUgdHlwZSkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAg
IHN3aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIEludDMyOgogICAgICAgICAgICAgcmV0dXJu
IE1vdmUzMjsKQEAgLTExMTksNiArMTEzMCw3IEBAIHByaXZhdGU6CiAKICAgICBBaXI6Ok9wY29k
ZSByZWxheGVkTW92ZUZvclR5cGUoVHlwZSB0eXBlKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFt
ZXNwYWNlIEFpcjsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgSW50MzI6
CiAgICAgICAgIGNhc2UgSW50NjQ6CkBAIC0xMTYyLDggKzExNzQsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgcHJpbnQoVmFsdWUqIG9yaWdpbiwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAg
IHsKICAgICAgICAgYXV0byBwcmludExpc3QgPSBQcmludGVyOjptYWtlUHJpbnRSZWNvcmRMaXN0
KGFyZ3VtZW50cy4uLik7Ci0gICAgICAgIGF1dG8gcHJpbnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8
UHJpbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxQcmludFNw
ZWNpYWw+KHByaW50TGlzdCkpKTsKLSAgICAgICAgSW5zdCBpbnN0KFBhdGNoLCBvcmlnaW4sIEFy
Zzo6c3BlY2lhbChwcmludFNwZWNpYWwpKTsKKyAgICAgICAgYXV0byBwcmludFNwZWNpYWwgPSBz
dGF0aWNfY2FzdDxBaXI6OlByaW50U3BlY2lhbCo+KG1fY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFr
ZV91bmlxdWU8QWlyOjpQcmludFNwZWNpYWw+KHByaW50TGlzdCkpKTsKKyAgICAgICAgSW5zdCBp
bnN0KEFpcjo6UGF0Y2gsIG9yaWdpbiwgQXJnOjpzcGVjaWFsKHByaW50U3BlY2lhbCkpOwogICAg
ICAgICBQcmludGVyOjphcHBlbmRBaXJBcmdzKGluc3QsIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+
KGFyZ3VtZW50cykuLi4pOwogICAgICAgICBhcHBlbmQoV1RGTW92ZShpbnN0KSk7CiAgICAgfQpA
QCAtMTc2Miw2ICsxNzc0LDcgQEAgcHJpdmF0ZToKIAogICAgIEluc3QgY3JlYXRlQnJhbmNoKFZh
bHVlKiB2YWx1ZSwgYm9vbCBpbnZlcnRlZCA9IGZhbHNlKQogICAgIHsKKyAgICAgICAgdXNpbmcg
bmFtZXNwYWNlIEFpcjsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUdlbmVyaWNDb21wYXJlKAogICAg
ICAgICAgICAgdmFsdWUsCiAgICAgICAgICAgICBbdGhpc10gKApAQCAtMTg0NSw2ICsxODU4LDcg
QEAgcHJpdmF0ZToKIAogICAgIEluc3QgY3JlYXRlQ29tcGFyZShWYWx1ZSogdmFsdWUsIGJvb2wg
aW52ZXJ0ZWQgPSBmYWxzZSkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAg
ICAgICAgIHJldHVybiBjcmVhdGVHZW5lcmljQ29tcGFyZSgKICAgICAgICAgICAgIHZhbHVlLAog
ICAgICAgICAgICAgW3RoaXNdICgKQEAgLTE5MjQsNiArMTkzOCw3IEBAIHByaXZhdGU6CiAgICAg
fTsKICAgICBJbnN0IGNyZWF0ZVNlbGVjdChjb25zdCBNb3ZlQ29uZGl0aW9uYWxseUNvbmZpZyYg
Y29uZmlnKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAgYXV0
byBjcmVhdGVTZWxlY3RJbnN0cnVjdGlvbiA9IFsmXSAoQWlyOjpPcGNvZGUgb3Bjb2RlLCBjb25z
dCBBcmcmIGNvbmRpdGlvbiwgQXJnUHJvbWlzZSYgbGVmdCwgQXJnUHJvbWlzZSYgcmlnaHQpIC0+
IEluc3QgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRGb3JtKG9wY29kZSwgY29uZGl0aW9uLmtp
bmQoKSwgbGVmdC5raW5kKCksIHJpZ2h0LmtpbmQoKSwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6
OlRtcCkpIHsKICAgICAgICAgICAgICAgICBUbXAgcmVzdWx0ID0gdG1wKG1fdmFsdWUpOwpAQCAt
MTk4Nyw2ICsyMDAyLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBib29sIHRyeUFwcGVuZExlYSgp
CiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICBBaXI6Ok9wY29k
ZSBsZWFPcGNvZGUgPSB0cnlPcGNvZGVGb3JUeXBlKExlYTMyLCBMZWE2NCwgbV92YWx1ZS0+dHlw
ZSgpKTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShsZWFPcGNvZGUsIEFyZzo6SW5kZXgsIEFy
Zzo6VG1wKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxMTYsNiArMjEzMiw3IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGFwcGVuZFg4NkRpdihCMzo6T3Bjb2RlIG9wKQogICAgIHsK
KyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAgQWlyOjpPcGNvZGUgY29udmVy
dFRvRG91YmxlV29yZDsKICAgICAgICAgQWlyOjpPcGNvZGUgZGl2OwogICAgICAgICBzd2l0Y2gg
KG1fdmFsdWUtPnR5cGUoKSkgewpAQCAtMjE0Myw2ICsyMTYwLDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgYXBwZW5kWDg2VURpdihCMzo6T3Bjb2RlIG9wKQogICAgIHsKKyAgICAgICAgdXNpbmcg
bmFtZXNwYWNlIEFpcjsKICAgICAgICAgQWlyOjpPcGNvZGUgZGl2ID0gbV92YWx1ZS0+dHlwZSgp
ID09IEludDMyID8gWDg2VURpdjMyIDogWDg2VURpdjY0OwogCiAgICAgICAgIEFTU0VSVChvcCA9
PSBVRGl2IHx8IG9wID09IFVNb2QpOwpAQCAtMjE3OCw2ICsyMTk2LDcgQEAgcHJpdmF0ZToKICAg
ICAvLyBnZW5lcmF0ZWQuIEl0IGFzc3VtZXMgdGhhdCB5b3UndmUgY29uc3VtZWQgZXZlcnl0aGlu
ZyB0aGF0IG5lZWRzIHRvIGJlIGNvbnN1bWVkLgogICAgIHZvaWQgYXBwZW5kQ0FTKFZhbHVlKiBh
dG9taWNWYWx1ZSwgYm9vbCBpbnZlcnQpCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2Ug
QWlyOwogICAgICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gYXRvbWljVmFsdWUtPmFzPEF0b21p
Y1ZhbHVlPigpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChhdG9taWMpOwogICAgICAgICAKQEAg
LTIzNDAsNiArMjM1OSw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBhcHBlbmRHZW5lcmFs
QXRvbWljKEFpcjo6T3Bjb2RlIG9wY29kZSwgQ29tbXV0YXRpdml0eSBjb21tdXRhdGl2aXR5ID0g
Tm90Q29tbXV0YXRpdmUpCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAg
ICAgICBBdG9taWNWYWx1ZSogYXRvbWljID0gbV92YWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CiAg
ICAgICAgIAogICAgICAgICBBcmcgYWRkcmVzcyA9IGFkZHIobV92YWx1ZSk7CkBAIC0yNDI0LDYg
KzI0NDQsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgbG93ZXIoKQogICAgIHsKKyAgICAg
ICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT5vcGNvZGUo
KSkgewogICAgICAgICBjYXNlIEIzOjpOb3A6IHsKICAgICAgICAgICAgIC8vIFllcywgd2Ugd2ls
bCB0b3RhbGx5IHNlZSBOb3AncyBiZWNhdXNlIHNvbWUgcGhhc2VzIHdpbGwgcmVwbGFjZVdpdGhO
b3AoKSBpbnN0ZWFkIG9mCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQ
YXRjaHBvaW50U3BlY2lhbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBv
aW50U3BlY2lhbC5jcHAKaW5kZXggNDdmMGFiZDJmZmYzYjUwNTcwODJkNzAzYTUxNDIzYzhjYjM4
YjBiMC4uYjM3NWNkZDBlMGZiMGJmMDg2MjA0ZDEyNzYzYWEwZDUyYjE4MTJhMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRTcGVjaWFsLmNwcApAQCAtMzQs
NyArMzQsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAotdXNpbmcgbmFt
ZXNwYWNlIEFpcjsKK3VzaW5nIEFyZyA9IEFpcjo6QXJnOwordXNpbmcgSW5zdCA9IEFpcjo6SW5z
dDsKIAogUGF0Y2hwb2ludFNwZWNpYWw6OlBhdGNocG9pbnRTcGVjaWFsKCkKIHsKQEAgLTEzNSw4
ICsxMzYsNyBAQCBib29sIFBhdGNocG9pbnRTcGVjaWFsOjphZG1pdHNFeHRlbmRlZE9mZnNldEFk
ZHIoSW5zdCYgaW5zdCwgdW5zaWduZWQgYXJnSW5kZXgpCiAgICAgcmV0dXJuIGFkbWl0c1N0YWNr
KGluc3QsIGFyZ0luZGV4KTsKIH0KIAotQ0NhbGxIZWxwZXJzOjpKdW1wIFBhdGNocG9pbnRTcGVj
aWFsOjpnZW5lcmF0ZSgKLSAgICBJbnN0JiBpbnN0LCBDQ2FsbEhlbHBlcnMmIGppdCwgR2VuZXJh
dGlvbkNvbnRleHQmIGNvbnRleHQpCitDQ2FsbEhlbHBlcnM6Okp1bXAgUGF0Y2hwb2ludFNwZWNp
YWw6OmdlbmVyYXRlKEluc3QmIGluc3QsIENDYWxsSGVscGVycyYgaml0LCBBaXI6OkdlbmVyYXRp
b25Db250ZXh0JiBjb250ZXh0KQogewogICAgIFBhdGNocG9pbnRWYWx1ZSogdmFsdWUgPSBpbnN0
Lm9yaWdpbi0+YXM8UGF0Y2hwb2ludFZhbHVlPigpOwogICAgIEFTU0VSVCh2YWx1ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwCmlu
ZGV4IDFjN2IwZDAwMmExYjkxOWUyMzBmZTY0NmIwMzJlNGE0ZTk5Y2QxNjEuLjZkMzFmN2NiYzA0
NjdjYmRkNmY2ZTNjNThjNjBjYzNlOTE3Y2NlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwCkBAIC0zOSw3ICszOSw5IEBAIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJv
c2UgPSBmYWxzZTsKK25hbWVzcGFjZSBCM1JlZHVjZURvdWJsZVRvRmxvYXRJbnRlcm5hbCB7Citz
dGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiBib29sIHByaW50UmVtYWluaW5n
Q29udmVyc2lvbnMgPSBmYWxzZTsKIAogY2xhc3MgRG91YmxlVG9GbG9hdFJlZHVjdGlvbiB7CkBA
IC0xMjgsNyArMTMwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgfSB3aGls
ZSAoY2hhbmdlZFBoaVN0YXRlKTsKIAotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBp
ZiAoQjNSZWR1Y2VEb3VibGVUb0Zsb2F0SW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAg
IGRhdGFMb2coIkNvbnZlcnNpb24gY2FuZGlkYXRlczpcbiIpOwogICAgICAgICAgICAgZm9yIChC
YXNpY0Jsb2NrKiBibG9jayA6IG1fcHJvY2VkdXJlKSB7CiAgICAgICAgICAgICAgICAgZm9yIChW
YWx1ZSogdmFsdWUgOiAqYmxvY2spIHsKQEAgLTE5Miw3ICsxOTQsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgfQogICAgICAgICB9IHdoaWxlIChjaGFuZ2VkUGhpU3RhdGUpOwogCi0gICAgICAg
IGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChCM1JlZHVjZURvdWJsZVRvRmxvYXRJbnRlcm5h
bDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiUGhpcyBjb250YWluaW5nIGZsb2F0
IHZhbHVlczpcbiIpOwogICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fcHJv
Y2VkdXJlKSB7CiAgICAgICAgICAgICAgICAgZm9yIChWYWx1ZSogdmFsdWUgOiAqYmxvY2spIHsK
QEAgLTQ4OSwxMyArNDkxLDEzIEBAIHZvaWQgcmVkdWNlRG91YmxlVG9GbG9hdChQcm9jZWR1cmUm
IHByb2NlZHVyZSkKIHsKICAgICBQaGFzZVNjb3BlIHBoYXNlU2NvcGUocHJvY2VkdXJlLCAicmVk
dWNlRG91YmxlVG9GbG9hdCIpOwogCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEIzUmVkdWNl
RG91YmxlVG9GbG9hdEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJCZWZvcmUg
RG91YmxlVG9GbG9hdFJlZHVjdGlvbjpcbiIsIHByb2NlZHVyZSwgIlxuIik7CiAKICAgICBEb3Vi
bGVUb0Zsb2F0UmVkdWN0aW9uIGRvdWJsZVRvRmxvYXRSZWR1Y3Rpb24ocHJvY2VkdXJlKTsKICAg
ICBkb3VibGVUb0Zsb2F0UmVkdWN0aW9uLnJ1bigpOwogCi0gICAgaWYgKHZlcmJvc2UpCisgICAg
aWYgKEIzUmVkdWNlRG91YmxlVG9GbG9hdEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRh
TG9nKCJBZnRlciBEb3VibGVUb0Zsb2F0UmVkdWN0aW9uOlxuIiwgcHJvY2VkdXJlLCAiXG4iKTsK
IAogICAgIHByaW50R3JhcGhJZkNvbnZlcnRpbmcocHJvY2VkdXJlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAppbmRleCBjMjJlOWI0NTNkMDk1Mjk2
N2YyMmE2ZmZiYTY0OTFmZmQwMGY5YzZjLi41NTAyZDVlNDdlNTg3MDYxMDYyYjE2ODZkOWJiM2My
NjkzNThiOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VT
dHJlbmd0aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5n
dGguY3BwCkBAIC04OCw3ICs4OCw5IEBAIG5hbWVzcGFjZSB7CiAvLyBjb25zdGFudHMgdGhlbiB0
aGUgY2Fub25pY2FsIGZvcm0gaW52b2x2ZXMgdGhlIGxvd2VyLWluZGV4ZWQgdmFsdWUgZmlyc3Qu
IEdpdmVuIEFkZCh4LCB5KSwgaXQncwogLy8gY2Fub25pY2FsIGlmIHgtPmluZGV4KCkgPD0geS0+
aW5kZXgoKS4KIAotYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgQjNSZWR1Y2VTdHJl
bmd0aEludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAog
Ly8gRklYTUU6IFRoaXMgSW50UmFuZ2Ugc3R1ZmYgc2hvdWxkIGJlIHJlZmFjdG9yZWQgaW50byBh
IGdlbmVyYWwgY29uc3RhbnQgcHJvcGFnYXRvci4gSXQncyB3ZWlyZAogLy8gdGhhdCBpdCdzIGp1
c3Qgc2l0dGluZyBoZXJlIGluIHRoaXMgZmlsZS4KQEAgLTQxNCw3ICs0MTYsNyBAQCBwdWJsaWM6
CiAKICAgICAgICAgICAgIGlmIChmaXJzdCkKICAgICAgICAgICAgICAgICBmaXJzdCA9IGZhbHNl
OwotICAgICAgICAgICAgZWxzZSBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgZWxzZSBpZiAo
QjNSZWR1Y2VTdHJlbmd0aEludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgZGF0
YUxvZygiQjMgYWZ0ZXIgaXRlcmF0aW9uICMiLCBpbmRleCAtIDEsICIgb2YgcmVkdWNlU3RyZW5n
dGg6XG4iKTsKICAgICAgICAgICAgICAgICBkYXRhTG9nKG1fcHJvYyk7CiAgICAgICAgICAgICB9
CkBAIC00NTIsNyArNDU0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIG1fYmxvY2sgPSBi
bG9jazsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmb3IgKG1faW5kZXggPSAw
OyBtX2luZGV4IDwgYmxvY2stPnNpemUoKTsgKyttX2luZGV4KSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChCM1JlZHVjZVN0cmVu
Z3RoSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxvb2tpbmcgYXQgIiwgKmJsb2NrLCAiICMi
LCBtX2luZGV4LCAiOiAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZXBEdW1wKG1f
cHJvYywgYmxvY2stPmF0KG1faW5kZXgpKSwgIlxuIik7CkBAIC0yMDM1LDcgKzIwMzcsNyBAQCBw
cml2YXRlOgogICAgIC8vIGVhcmx5LgogICAgIHZvaWQgc3BlY2lhbGl6ZVNlbGVjdChWYWx1ZSog
c291cmNlKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCM1JlZHVj
ZVN0cmVuZ3RoSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJTcGVjaWFs
aXppbmcgc2VsZWN0OiAiLCBkZWVwRHVtcChtX3Byb2MsIHNvdXJjZSksICJcbiIpOwogCiAgICAg
ICAgIC8vIFRoaXMgbXV0YXRlcyBzdGFydEluZGV4IHRvIGFjY291bnQgZm9yIHRoZSBmYWN0IHRo
YXQgbV9ibG9jayBnb3QgdGhlIGZyb250IG9mIGl0CkBAIC0yMjc2LDcgKzIyNzgsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBzaW1wbGlmeUNGRygpCiAgICAgewotICAgICAgICBpZiAodmVyYm9z
ZSkgeworICAgICAgICBpZiAoQjNSZWR1Y2VTdHJlbmd0aEludGVybmFsOjp2ZXJib3NlKSB7CiAg
ICAgICAgICAgICBkYXRhTG9nKCJCZWZvcmUgc2ltcGxpZnlDRkc6XG4iKTsKICAgICAgICAgICAg
IGRhdGFMb2cobV9wcm9jKTsKICAgICAgICAgfQpAQCAtMjMwMSw3ICsyMzAzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgLy8gaXRlcmF0aW9ucyBuZWVkZWQgdG8ga2lsbCBhIGxvdCBvZiBjb2RlLgog
CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX3Byb2MpIHsKLSAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzUmVkdWNlU3RyZW5ndGhJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBibG9jayAiLCAq
YmxvY2ssICI6XG4iKTsKIAogICAgICAgICAgICAgY2hlY2tQcmVkZWNlc3NvclZhbGlkaXR5KCk7
CkBAIC0yMzE3LDcgKzIzMTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAmJiBz
dWNjZXNzb3ItPmxhc3QoKS0+b3Bjb2RlKCkgPT0gSnVtcCkgewogICAgICAgICAgICAgICAgICAg
ICBCYXNpY0Jsb2NrKiBuZXdTdWNjZXNzb3IgPSBzdWNjZXNzb3ItPnN1Y2Nlc3NvckJsb2NrKDAp
OwogICAgICAgICAgICAgICAgICAgICBpZiAobmV3U3VjY2Vzc29yICE9IHN1Y2Nlc3Nvcikgewot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChCM1JlZHVjZVN0cmVuZ3RoSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiUmVwbGFjaW5nICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIi0+IiwgcG9pbnRlckR1bXAo
c3VjY2Vzc29yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiB3aXRoICIsIHBv
aW50ZXJEdW1wKGJsb2NrKSwgIi0+IiwgcG9pbnRlckR1bXAobmV3U3VjY2Vzc29yKSwKQEAgLTIz
NDgsNyArMjM1MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKGFsbFNhbWUpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoQjNSZWR1Y2VTdHJlbmd0aEludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkNoYW5naW5nICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIidzIHRlcm1pbmFsIHRvIGEgSnVt
cC5cbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjM4Nyw3ICsyMzg5LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBuZXdTdWNjZXNz
b3IgOiBibG9jay0+c3VjY2Vzc29yQmxvY2tzKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBu
ZXdTdWNjZXNzb3ItPnJlcGxhY2VQcmVkZWNlc3NvcihzdWNjZXNzb3IsIGJsb2NrKTsKIAotICAg
ICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
QjNSZWR1Y2VTdHJlbmd0aEludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNZXJnZWQgIiwgcG9p
bnRlckR1bXAoYmxvY2spLCAiLT4iLCBwb2ludGVyRHVtcChzdWNjZXNzb3IpLCAiXG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgfQpAQCAtMjM5Nyw3ICsyMzk5LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChtX2NoYW5nZWRDRkcgJiYgdmVyYm9z
ZSkgeworICAgICAgICBpZiAobV9jaGFuZ2VkQ0ZHICYmIEIzUmVkdWNlU3RyZW5ndGhJbnRlcm5h
bDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiQjMgYWZ0ZXIgc2ltcGxpZnlDRkc6
XG4iKTsKICAgICAgICAgICAgIGRhdGFMb2cobV9wcm9jKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5j
cHAKaW5kZXggYmJhODRjYWY4YjRiZTA5YzI4ODYzYzQyOTAyMDg1MmU3MDUxMTYyMi4uMzg5ZWY4
YjljYTJkNjEwZWZkYTU3YjlkODBlYTkzZWJiNTgyZTE5YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuY3BwCkBAIC0z
NCw4ICszNCw2IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi11c2luZyBu
YW1lc3BhY2UgQWlyOwotCiBjb25zdCBSZWdpc3RlclNldCYgU3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zOjp1c2VkUmVnaXN0ZXJzKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9jb250ZXh0LmNvZGUt
Pm5lZWRzVXNlZFJlZ2lzdGVycygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNT
dGFja21hcFNwZWNpYWwuY3BwCmluZGV4IDYwMzcwYzU3OGRkZmMzMjkxOGVmZmI1YTFiZGU4NTc4
ZTkzZjJmNzAuLjVlYjViOWIwZTY3ZDM3M2MzOWJjN2Q5NmQ5M2VkOWY2YWM1ZDE4NDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcApAQCAtMzQs
NyArMzQsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAotdXNpbmcgbmFt
ZXNwYWNlIEFpcjsKK3VzaW5nIEFyZyA9IEFpcjo6QXJnOwordXNpbmcgSW5zdCA9IEFpcjo6SW5z
dDsKK3VzaW5nIFRtcCA9IEFpcjo6VG1wOwogCiBTdGFja21hcFNwZWNpYWw6OlN0YWNrbWFwU3Bl
Y2lhbCgpCiB7CkBAIC0yMTAsOCArMjEyLDcgQEAgYm9vbCBTdGFja21hcFNwZWNpYWw6OmFkbWl0
c1N0YWNrSW1wbCgKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVZlY3RvcjxWYWx1ZVJlcD4gU3Rh
Y2ttYXBTcGVjaWFsOjpyZXBzSW1wbCgKLSAgICBHZW5lcmF0aW9uQ29udGV4dCYgY29udGV4dCwg
dW5zaWduZWQgbnVtSWdub3JlZEIzQXJncywgdW5zaWduZWQgbnVtSWdub3JlZEFpckFyZ3MsIElu
c3QmIGluc3QpCitWZWN0b3I8VmFsdWVSZXA+IFN0YWNrbWFwU3BlY2lhbDo6cmVwc0ltcGwoQWly
OjpHZW5lcmF0aW9uQ29udGV4dCYgY29udGV4dCwgdW5zaWduZWQgbnVtSWdub3JlZEIzQXJncywg
dW5zaWduZWQgbnVtSWdub3JlZEFpckFyZ3MsIEluc3QmIGluc3QpCiB7CiAgICAgVmVjdG9yPFZh
bHVlUmVwPiByZXN1bHQ7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGluc3Qub3JpZ2lu
LT5udW1DaGlsZHJlbigpIC0gbnVtSWdub3JlZEIzQXJnczsgKytpKQpAQCAtMjY3LDcgKzI2OCw3
IEBAIGJvb2wgU3RhY2ttYXBTcGVjaWFsOjppc0FyZ1ZhbGlkRm9yUmVwKEFpcjo6Q29kZSYgY29k
ZSwgY29uc3QgQWlyOjpBcmcmIGFyZywgY29uCiAgICAgfQogfQogCi1WYWx1ZVJlcCBTdGFja21h
cFNwZWNpYWw6OnJlcEZvckFyZyhDb2RlJiBjb2RlLCBjb25zdCBBcmcmIGFyZykKK1ZhbHVlUmVw
IFN0YWNrbWFwU3BlY2lhbDo6cmVwRm9yQXJnKEFpcjo6Q29kZSYgY29kZSwgY29uc3QgQXJnJiBh
cmcpCiB7CiAgICAgc3dpdGNoIChhcmcua2luZCgpKSB7CiAgICAgY2FzZSBBcmc6OlRtcDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVTdGFja0J5
R3JhcGhDb2xvcmluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9j
YXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcuY3BwCmluZGV4IGU4NjBkOWNjYzVjYjBhZTFkODdjM2Fm
ZWZkYWJmODg2NmYzMTdkMWEuLmVkNjdkMWM3Y2Q4OWRiMDhjMGY5OGNmMWY2NjNhMWY1YWJjNTJl
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVT
dGFja0J5R3JhcGhDb2xvcmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcApAQCAtNDIsNyArNDIsOSBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CiAKIG5hbWVzcGFj
ZSB7CiAKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEFpckFsbG9jYXRl
U3RhY2tCeUdyYXBoQ29sb3JpbmdJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3Nl
ID0gZmFsc2U7Cit9CiAKIHN0cnVjdCBDb2FsZXNjYWJsZU1vdmUgewogICAgIENvYWxlc2NhYmxl
TW92ZSgpCkBAIC0xNTMsNyArMTU1LDcgQEAgdm9pZCBhbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9y
aW5nKENvZGUmIGNvZGUpCiAgICAgICAgIFN0YWNrU2xvdExpdmVuZXNzOjpMb2NhbENhbGMgbG9j
YWxDYWxjKGxpdmVuZXNzLCBibG9jayk7CiAKICAgICAgICAgYXV0byBpbnRlcmZlcmUgPSBbJl0g
KHVuc2lnbmVkIGluc3RJbmRleCkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICBpZiAoQWlyQWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZ0ludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkludGVyZmVyaW5nOiAiLCBXVEY6OnBvaW50ZXJM
aXN0RHVtcChsb2NhbENhbGMubGl2ZSgpKSwgIlxuIik7CiAKICAgICAgICAgICAgIEluc3QqIHBy
ZXZJbnN0ID0gYmxvY2stPmdldChpbnN0SW5kZXgpOwpAQCAtMTg1LDcgKzE4Nyw3IEBAIHZvaWQg
YWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZyhDb2RlJiBjb2RlKQogICAgICAgICB9OwogCiAg
ICAgICAgIGZvciAodW5zaWduZWQgaW5zdEluZGV4ID0gYmxvY2stPnNpemUoKTsgaW5zdEluZGV4
LS07KSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChBaXJBbGxv
Y2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiQW5hbHl6aW5nOiAiLCBibG9jay0+YXQoaW5zdEluZGV4KSwgIlxuIik7CiAK
ICAgICAgICAgICAgIC8vIEtpbGwgZGVhZCBzdG9yZXMuIEZvciBzaW1wbGljaXR5IHdlIHNheSB0
aGF0IGEgc3RvcmUgaXMga2lsbGFibGUgaWYgaXQgaGFzIG9ubHkgbGF0ZQpAQCAtMjMyLDcgKzIz
NCw3IEBAIHZvaWQgYWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZyhDb2RlJiBjb2RlKQogICAg
ICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoQWlyQWxs
b2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZ0ludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGZv
ciAoU3RhY2tTbG90KiBzbG90IDogY29kZS5zdGFja1Nsb3RzKCkpCiAgICAgICAgICAgICBkYXRh
TG9nKCJJbnRlcmZlcmVuY2Ugb2YgIiwgcG9pbnRlckR1bXAoc2xvdCksICI6ICIsIHBvaW50ZXJM
aXN0RHVtcChpbnRlcmZlcmVuY2Vbc2xvdF0pLCAiXG4iKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVtaXRTaHVmZmxlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZmbGUuY3BwCmluZGV4IDczZDcxMGZmNjll
NzE4ZWI0YmUzMDY5YzFjMWQ4MGFmYjljNjQ5NjcuLjcxNjZlZDg2OTRlYTNmMTg0MjRmZDIzZTgw
MjEwOTgwNWY2MTJiZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyRW1pdFNodWZmbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
RW1pdFNodWZmbGUuY3BwCkBAIC0zNyw3ICszNyw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKIAogbmFtZXNwYWNlIHsKIAotYm9vbCB2ZXJib3NlID0g
ZmFsc2U7CituYW1lc3BhY2UgQWlyRW1pdFNodWZmbGVJbnRlcm5hbCB7CitzdGF0aWMgY29uc3Qg
Ym9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiBU
bXAgZmluZFBvc3NpYmxlU2NyYXRjaChDb2RlJiBjb2RlLCBCYW5rIGJhbmssIGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpIHsKQEAgLTEyNSw3ICsxMjcsNyBAQCBWZWN0b3I8SW5zdD4gZW1pdFNodWZm
bGUoCiAgICAgQ29kZSYgY29kZSwgVmVjdG9yPFNodWZmbGVQYWlyPiBwYWlycywgc3RkOjphcnJh
eTxBcmcsIDI+IHNjcmF0Y2hlcywgQmFuayBiYW5rLAogICAgIFZhbHVlKiBvcmlnaW4pCiB7Ci0g
ICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoQWlyRW1pdFNodWZmbGVJbnRlcm5hbDo6dmVyYm9z
ZSkgewogICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgIkRlYWxpbmcgd2l0aCBwYWlyczog
IiwgbGlzdER1bXAocGFpcnMpLCAiIGFuZCBzY3JhdGNoZXMgIiwgc2NyYXRjaGVzWzBdLCAiLCAi
LAogICAgICAgICAgICAgc2NyYXRjaGVzWzFdLCAiXG4iKTsKQEAgLTE4NSw3ICsxODcsNyBAQCBW
ZWN0b3I8SW5zdD4gZW1pdFNodWZmbGUoCiAgICAgICAgICAgICBBU1NFUlQoY3VycmVudFBhaXJz
LmlzRW1wdHkoKSk7CiAgICAgICAgICAgICBBcmcgb3JpZ2luYWxTcmMgPSBtYXBwaW5nLmJlZ2lu
KCktPmtleTsKICAgICAgICAgICAgIEFTU0VSVCghc2hpZnRzLmNvbnRhaW5zKG9yaWdpbmFsU3Jj
KSk7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChBaXJFbWl0U2h1
ZmZsZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIlByb2Nlc3Np
bmcgZnJvbSAiLCBvcmlnaW5hbFNyYywgIlxuIik7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IEdyYXBoTm9kZVdvcmtsaXN0PEFyZz4gd29ya2xpc3Q7CkBAIC0xOTUsNyArMTk3LDcgQEAgVmVj
dG9yPEluc3Q+IGVtaXRTaHVmZmxlKAogICAgICAgICAgICAgICAgIGlmIChpdGVyID09IG1hcHBp
bmcuZW5kKCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gV2l0aCBhIHNoaWZ0IGl0J3MgcG9z
c2libGUgdGhhdCB3ZSBwcmV2aW91c2x5IGJ1aWx0IHRoZSB0YWlsIG9mIHRoaXMgc2hpZnQuCiAg
ICAgICAgICAgICAgICAgICAgIC8vIFNlZSBpZiB0aGF0J3MgdGhlIGNhc2Ugbm93LgotICAgICAg
ICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKEFpckVt
aXRTaHVmZmxlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKCJUcnlpbmcgdG8gYXBwZW5kIHNoaWZ0IGF0ICIsIHNyYywgIlxuIik7CiAgICAgICAgICAg
ICAgICAgICAgIGN1cnJlbnRQYWlycy5hcHBlbmRWZWN0b3Ioc2hpZnRzLnRha2Uoc3JjKSk7CiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjEzLDcgKzIxNSw3IEBAIFZlY3RvcjxJ
bnN0PiBlbWl0U2h1ZmZsZSgKICAgICAgICAgICAgIEFTU0VSVChjdXJyZW50UGFpcnMuc2l6ZSgp
KTsKICAgICAgICAgICAgIEFTU0VSVChjdXJyZW50UGFpcnNbMF0uc3JjKCkgPT0gb3JpZ2luYWxT
cmMpOwogCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChBaXJFbWl0
U2h1ZmZsZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coImN1cnJl
bnRQYWlycyA9ICIsIGxpc3REdW1wKGN1cnJlbnRQYWlycyksICJcbiIpOwogCiAgICAgICAgICAg
ICBib29sIGlzUm90YXRlID0gZmFsc2U7CkBAIC0yMjUsNyArMjI3LDcgQEAgVmVjdG9yPEluc3Q+
IGVtaXRTaHVmZmxlKAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoaXNSb3RhdGUp
IHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQWly
RW1pdFNodWZmbGVJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiSXQncyBhIHJvdGF0ZS5cbiIpOwogICAgICAgICAgICAgICAgIFJvdGF0ZSByb3RhdGU7CiAK
QEAgLTI3NywxNCArMjc5LDE0IEBAIFZlY3RvcjxJbnN0PiBlbWl0U2h1ZmZsZSgKICAgICAgICAg
ICAgICAgICByb3RhdGVzLmFwcGVuZChXVEZNb3ZlKHJvdGF0ZSkpOwogICAgICAgICAgICAgICAg
IGN1cnJlbnRQYWlycy5zaHJpbmsoMCk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChBaXJFbWl0U2h1ZmZsZUlu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJJdCdzIGEgc2hp
ZnQuXG4iKTsKICAgICAgICAgICAgICAgICBzaGlmdHMuYWRkKG9yaWdpbmFsU3JjLCBXVEZNb3Zl
KGN1cnJlbnRQYWlycykpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAg
aWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoQWlyRW1pdFNodWZmbGVJbnRlcm5hbDo6dmVyYm9zZSkg
ewogICAgICAgICBkYXRhTG9nKCJTaGlmdHM6XG4iKTsKICAgICAgICAgZm9yIChhdXRvJiBlbnRy
eSA6IHNoaWZ0cykKICAgICAgICAgICAgIGRhdGFMb2coIiAgICAiLCBlbnRyeS5rZXksICI6ICIs
IGxpc3REdW1wKGVudHJ5LnZhbHVlKSwgIlxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcAppbmRleCA5Y2IxMTAxYTExZjIz
NTE3YzI5OTMzYmZhYmE5YTNjOTIxYTg2NmFlLi42MGE4Y2MwMzVmZjEyOTA1OTEwNWVkNjVlY2Yy
NTMzMjZjOGU1Mzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckZpeE9idmlvdXNTcGlsbHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyRml4T2J2aW91c1NwaWxscy5jcHAKQEAgLTM5LDcgKzM5LDkgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZl
cmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBBaXJGaXhPYnZpb3VzU3BpbGxzSW50ZXJuYWwgewor
c3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBjbGFzcyBGaXhPYnZpb3Vz
U3BpbGxzIHsKIHB1YmxpYzoKQEAgLTUxLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBy
dW4oKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChBaXJGaXhPYnZp
b3VzU3BpbGxzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJDb2RlIGJl
Zm9yZSBmaXhPYnZpb3VzU3BpbGxzOlxuIiwgbV9jb2RlKTsKICAgICAgICAgCiAgICAgICAgIGNv
bXB1dGVBbGlhc2VzKCk7CkBAIC03Myw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgaWYgKCFtX3N0YXRlLndhc1Zpc2l0ZWQpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEFp
ckZpeE9idmlvdXNTcGlsbHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiRXhlY3V0aW5nIGJsb2NrICIsICptX2Jsb2NrLCAiOiAiLCBtX3N0YXRlLCAiXG4i
KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmb3IgKG1faW5zdEluZGV4ID0g
MDsgbV9pbnN0SW5kZXggPCBibG9jay0+c2l6ZSgpOyArK21faW5zdEluZGV4KQpAQCAtMTY5LDEz
ICsxNzEsMTMgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEluc3QmIGluc3QgPSBtX2Jsb2Nr
LT5hdChtX2luc3RJbmRleCk7CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChB
aXJGaXhPYnZpb3VzU3BpbGxzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgRXhlY3V0aW5nICIsIGluc3QsICI6ICIsIG1fc3RhdGUsICJcbiIpOwogCiAgICAgICAg
IEluc3Q6OmZvckVhY2hEZWZXaXRoRXh0cmFDbG9iYmVyZWRSZWdzPEFyZz4oCiAgICAgICAgICAg
ICAmaW5zdCwgJmluc3QsCiAgICAgICAgICAgICBbJl0gKGNvbnN0IEFyZyYgYXJnLCBBcmc6OlJv
bGUsIEJhbmssIFdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICAgICAgaWYgKEFpckZpeE9idmlvdXNTcGlsbHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBDbG9iYmVyaW5nICIsIGFyZywgIlxuIik7
CiAgICAgICAgICAgICAgICAgbV9zdGF0ZS5jbG9iYmVyKGFyZyk7CiAgICAgICAgICAgICB9KTsK
QEAgLTE5MCw3ICsxOTIsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgSW5zdCYgaW5zdCA9
IG1fYmxvY2stPmF0KG1faW5zdEluZGV4KTsKIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgaWYgKEFpckZpeE9idmlvdXNTcGlsbHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
IGRhdGFMb2coIkZpeGluZyBpbnN0ICIsIGluc3QsICI6ICIsIG1fc3RhdGUsICJcbiIpOwogICAg
ICAgICAKICAgICAgICAgLy8gQ2hlY2sgaWYgYWxpYXMgYW5hbHlzaXMgc2F5cyB0aGF0IHRoaXMg
aXMgdW5uZWNlc3NhcnkuCkBAIC0yNjcsMTMgKzI2OSwxMyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIGNhc2UgV2lkdGg2NDoKICAgICAgICAgICAgICAgICAgICAgaWYgKGFsaWFzLT5tb2Rl
ICE9IFJlZ1Nsb3Q6OkFsbEJpdHMpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAo
QWlyRml4T2J2aW91c1NwaWxsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiICAgIFJlcGxhY2luZyAiLCBhcmcsICIgd2l0aCAiLCBhbGlhcy0+cmVn
LCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgYXJnID0gVG1wKGFsaWFzLT5yZWcpOwogICAg
ICAgICAgICAgICAgICAgICBkaWRUaGluZ3MgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAgICAgY2FzZSBXaWR0aDMyOgotICAgICAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKEFpckZpeE9idmlvdXNTcGls
bHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICBSZXBsYWNpbmcgIiwgYXJnLCAiIHdpdGggIiwgYWxpYXMtPnJlZywgIiAoc3Vid2lkdGggY2Fz
ZSlcbiIpOwogICAgICAgICAgICAgICAgICAgICBhcmcgPSBUbXAoYWxpYXMtPnJlZyk7CiAgICAg
ICAgICAgICAgICAgICAgIGRpZFRoaW5ncyA9IHRydWU7CkBAIC0yODUsNyArMjg3LDcgQEAgcHJp
dmF0ZToKIAogICAgICAgICAgICAgLy8gUmV2ZXJ0IHRvIGltbWVkaWF0ZSBpZiB0aGF0IGRpZG4n
dCB3b3JrLgogICAgICAgICAgICAgaWYgKGNvbnN0IFNsb3RDb25zdCogYWxpYXMgPSBtX3N0YXRl
LmdldFNsb3RDb25zdChhcmcuc3RhY2tTbG90KCkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEFpckZpeE9idmlvdXNTcGlsbHNJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIFJlcGxhY2luZyAiLCBh
cmcsICIgd2l0aCBjb25zdGFudCAiLCBhbGlhcy0+Y29uc3RhbnQsICJcbiIpOwogICAgICAgICAg
ICAgICAgIGlmIChBcmc6OmlzVmFsaWRJbW1Gb3JtKGFsaWFzLT5jb25zdGFudCkpCiAgICAgICAg
ICAgICAgICAgICAgIGFyZyA9IEFyZzo6aW1tKGFsaWFzLT5jb25zdGFudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyQWZ0ZXJSZWdBbGxvYy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyQWZ0ZXJSZWdBbGxvYy5jcHAK
aW5kZXggMWZhMDUzZGI5Y2E3ZmM0YzM4NmZiMTkzNzE1MjI1NWJlZWQ3MTM5Yi4uYmZlZjNiM2Y0
ZjExYTU5YTIxZDJiODFjY2UxOTI1YmNkODFlNTRlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcApAQCAtNDYsNyAr
NDYsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CiAK
IG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEFpckxvd2Vy
QWZ0ZXJSZWdBbGxvY0ludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxz
ZTsKK30KICAgICAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCkBAIC01NCw3ICs1Niw3IEBA
IHZvaWQgbG93ZXJBZnRlclJlZ0FsbG9jKENvZGUmIGNvZGUpCiB7CiAgICAgUGhhc2VTY29wZSBw
aGFzZVNjb3BlKGNvZGUsICJsb3dlckFmdGVyUmVnQWxsb2MiKTsKIAotICAgIGlmICh2ZXJib3Nl
KQorICAgIGlmIChBaXJMb3dlckFmdGVyUmVnQWxsb2NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgZGF0YUxvZygiQ29kZSBiZWZvcmUgbG93ZXJBZnRlclJlZ0FsbG9jOlxuIiwgY29kZSk7CiAg
ICAgCiAgICAgYXV0byBpc1JlbGV2YW50ID0gW10gKEluc3QmIGluc3QpIC0+IGJvb2wgewpAQCAt
MjIxLDcgKzIyMyw3IEBAIHZvaWQgbG93ZXJBZnRlclJlZ0FsbG9jKENvZGUmIGNvZGUpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGFja1Nsb3RzLmFwcGVuZChzdGFja1Nsb3QpOwogICAgICAg
ICAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgICAgIGlmIChBaXJMb3dlckFmdGVyUmVnQWxsb2NJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygiUHJlLWNhbGwgcGFpcnMgZm9yICIsIGluc3QsICI6
ICIsIGxpc3REdW1wKHBhaXJzKSwgIlxuIik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydEluc3RzKApAQCAtMjczLDcgKzI3NSw3IEBAIHZvaWQg
bG93ZXJBZnRlclJlZ0FsbG9jKENvZGUmIGNvZGUpCiAgICAgICAgICAgICB9KTsKICAgICB9CiAK
LSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQWlyTG93ZXJBZnRlclJlZ0FsbG9jSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkNvZGUgYWZ0ZXIgbG93ZXJBZnRlclJlZ0FsbG9j
OlxuIiwgY29kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyU3RhY2tBbGxvY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyU3RhY2tBbGxvY2F0aW9uLmNwcAppbmRleCAzOTIyMjNjYTg4NTgwNWM1Zjk2ZDJmYmI4ODM5
ZDEyMDM5YzY2Y2NmLi42YjZhMjZhZTdlZmJiN2Q5ZjNmMmVhMWJlYTY2YmFlMzRkNThiNmY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclN0YWNrQWxsb2NhdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTdGFja0FsbG9jYXRp
b24uY3BwCkBAIC0zOCw3ICszOCw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBu
YW1lc3BhY2UgQWlyIHsKIAogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFs
c2U7CituYW1lc3BhY2UgQWlyU3RhY2tBbGxvY2F0aW9uSW50ZXJuYWwgeworc3RhdGljIGNvbnN0
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9u
Pgogdm9pZCB1cGRhdGVGcmFtZVNpemVCYXNlZE9uU3RhY2tTbG90c0ltcGwoQ29kZSYgY29kZSwg
Y29uc3QgQ29sbGVjdGlvbiYgY29sbGVjdGlvbikKQEAgLTU0LDcgKzU2LDcgQEAgdm9pZCB1cGRh
dGVGcmFtZVNpemVCYXNlZE9uU3RhY2tTbG90c0ltcGwoQ29kZSYgY29kZSwgY29uc3QgQ29sbGVj
dGlvbiYgY29sbGVjdGkKIGJvb2wgYXR0ZW1wdEFzc2lnbm1lbnQoCiAgICAgU3RhY2tTbG90KiBz
bG90LCBpbnRwdHJfdCBvZmZzZXRGcm9tRlAsIGNvbnN0IFZlY3RvcjxTdGFja1Nsb3QqPiYgb3Ro
ZXJTbG90cykKIHsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQWlyU3RhY2tBbGxvY2F0aW9u
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkF0dGVtcHRpbmcgdG8gYXNzaWdu
ICIsIHBvaW50ZXJEdW1wKHNsb3QpLCAiIHRvICIsIG9mZnNldEZyb21GUCwgIiB3aXRoIGludGVy
ZmVyZW5jZSAiLCBwb2ludGVyTGlzdER1bXAob3RoZXJTbG90cyksICJcbiIpOwogCiAgICAgLy8g
TmVlZCB0byBhbGlnbiBpdCB0byB0aGUgc2xvdCdzIGRlc2lyZWQgYWxpZ25tZW50LgpAQCAtNzIs
NyArNzQsNyBAQCBib29sIGF0dGVtcHRBc3NpZ25tZW50KAogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChBaXJTdGFja0FsbG9jYXRp
b25JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQXNzaWduZWQgIiwgcG9pbnRl
ckR1bXAoc2xvdCksICIgdG8gIiwgb2Zmc2V0RnJvbUZQLCAiXG4iKTsKICAgICBzbG90LT5zZXRP
ZmZzZXRGcm9tRlAob2Zmc2V0RnJvbUZQKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTgwLDcgKzgy
LDcgQEAgYm9vbCBhdHRlbXB0QXNzaWdubWVudCgKIAogdm9pZCBhc3NpZ24oU3RhY2tTbG90KiBz
bG90LCBjb25zdCBWZWN0b3I8U3RhY2tTbG90Kj4mIG90aGVyU2xvdHMpCiB7Ci0gICAgaWYgKHZl
cmJvc2UpCisgICAgaWYgKEFpclN0YWNrQWxsb2NhdGlvbkludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICBkYXRhTG9nKCJBdHRlbXB0aW5nIHRvIGFzc2lnbiAiLCBwb2ludGVyRHVtcChzbG90KSwg
IiB3aXRoIGludGVyZmVyZW5jZSAiLCBwb2ludGVyTGlzdER1bXAob3RoZXJTbG90cyksICJcbiIp
OwogICAgIAogICAgIGlmIChhdHRlbXB0QXNzaWdubWVudChzbG90LCAtc3RhdGljX2Nhc3Q8aW50
cHRyX3Q+KHNsb3QtPmJ5dGVTaXplKCkpLCBvdGhlclNsb3RzKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCAzNWZmYmYxYWJhYjgyZWQ3ZjQ0
NmI1NmI0ZWRjMTU1YTQ5ZmVkOGQwLi40MTk4NjU1MDQ3NDQzODc3ZWNhNjEzMGNjZmZhN2E1YWEy
M2Y4NGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2Uu
Y3BwCkBAIC01MSw3ICs1MSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCituYW1lc3BhY2UgQWNj
ZXNzQ2FzZUludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30K
IAogQWNjZXNzQ2FzZTo6QWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5
cGUgdHlwZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCkKICAgICA6IG1fdHlw
ZSh0eXBlKQpAQCAtNDA4LDcgKzQxMCw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGUoQWNj
ZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBs
KEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUg
c3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChBY2Nl
c3NDYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIlxuXG5HZW5lcmF0aW5n
IGNvZGUgZm9yOiAiLCAqdGhpcywgIlxuIik7CiAKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBHZW5l
cmF0ZWQpOyAvLyBXZSByZWx5IG9uIHRoZSBjYWxsZXJzIHNldHRpbmcgdGhpcyBmb3IgdXMuCkBA
IC03OTAsMTEgKzc5MiwxMSBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NH
ZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogCiAgICAgY2FzZSBSZXBsYWNlOiB7CiAgICAgICAgIGlm
IChJbmZlcnJlZFR5cGUqIHR5cGUgPSBzdHJ1Y3R1cmUoKS0+aW5mZXJyZWRUeXBlRm9yKGlkZW50
LmltcGwoKSkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEFj
Y2Vzc0Nhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJIYXZl
IHR5cGU6ICIsIHR5cGUtPmRlc2NyaXB0b3IoKSwgIlxuIik7CiAgICAgICAgICAgICBzdGF0ZS5m
YWlsQW5kUmVwYXRjaC5hcHBlbmQoCiAgICAgICAgICAgICAgICAgaml0LmJyYW5jaElmTm90VHlw
ZSh2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIHR5cGUtPmRlc2NyaXB0b3IoKSkpOwotICAgICAgICB9
IGVsc2UgaWYgKHZlcmJvc2UpCisgICAgICAgIH0gZWxzZSBpZiAoQWNjZXNzQ2FzZUludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiRG9uJ3QgaGF2ZSB0eXBlLlxuIik7CiAK
ICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG1fb2Zmc2V0KSkgewpAQCAtODIwLDExICs4MjIs
MTEgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRl
JiBzdGF0ZSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3Rl
cnMgPj0gNiB8fCAhc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgfHwgc3RydWN0dXJl
KCktPm91dE9mTGluZUNhcGFjaXR5KCkgPT0gbmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFj
aXR5KCkpOwogCiAgICAgICAgIGlmIChJbmZlcnJlZFR5cGUqIHR5cGUgPSBuZXdTdHJ1Y3R1cmUo
KS0+aW5mZXJyZWRUeXBlRm9yKGlkZW50LmltcGwoKSkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgaWYgKEFjY2Vzc0Nhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJIYXZlIHR5cGU6ICIsIHR5cGUtPmRlc2NyaXB0b3IoKSwgIlxu
Iik7CiAgICAgICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoCiAgICAgICAgICAg
ICAgICAgaml0LmJyYW5jaElmTm90VHlwZSh2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIHR5cGUtPmRl
c2NyaXB0b3IoKSkpOwotICAgICAgICB9IGVsc2UgaWYgKHZlcmJvc2UpCisgICAgICAgIH0gZWxz
ZSBpZiAoQWNjZXNzQ2FzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygi
RG9uJ3QgaGF2ZSB0eXBlLlxuIik7CiAKICAgICAgICAgLy8gTk9URTogVGhpcyBsb2dpYyBpcyBk
dXBsaWNhdGVkIGluIEFjY2Vzc0Nhc2U6OmRvZXNDYWxscygpLiBJdCdzIGltcG9ydGFudCB0aGF0
IGRvZXNDYWxscygpIGtub3dzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rU3RhdHVzLmNwcAppbmRleCBmMzRjMjc0MjA1M2NiMjkzZGFhNWMxNjM4NjZiZmFj
NGEwMjI1Njk4Li41M2I4NGQ5YzAzN2UxN2Y2YWU5M2RjODU1MTkyNzg4YjYzZTY3YWVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAK
QEAgLTM4LDcgKzM4LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK25hbWVzcGFjZSBDYWxsTGlu
a1N0YXR1c0ludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30K
IAogQ2FsbExpbmtTdGF0dXM6OkNhbGxMaW5rU3RhdHVzKEpTVmFsdWUgdmFsdWUpCiAgICAgOiBt
X2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQpAQCAtMjg5LDcgKzI5MSw3IEBAIHZvaWQgQ2FsbExp
bmtTdGF0dXM6OmNvbXB1dGVERkdTdGF0dXNlcygKICAgICBVTlVTRURfUEFSQU0oZGZnQ29kZUJs
b2NrKTsKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKICAgICAKLSAgICBpZiAodmVyYm9zZSkg
eworICAgIGlmIChDYWxsTGlua1N0YXR1c0ludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRh
dGFMb2coIkNvbnRleHQgbWFwOlxuIik7CiAgICAgICAgIENvbnRleHRNYXA6Oml0ZXJhdG9yIGl0
ZXIgPSBtYXAuYmVnaW4oKTsKICAgICAgICAgQ29udGV4dE1hcDo6aXRlcmF0b3IgZW5kID0gbWFw
LmVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRl
clNldHRlckFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCmluZGV4IGM0ZGE4MGVjYzE5YzIxNDdlMmZhN2I1ZDk5
Njg0Y2RmZWIyZTQ3ODAuLjYwNjY5MWIzYjIwM2FlZTFhY2JhMjc0ZjQ1NWM0YjRlZWM3N2Y3ZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVy
U2V0dGVyQWNjZXNzQ2FzZS5jcHAKQEAgLTM4LDcgKzM4LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKK25hbWVzcGFjZSBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlSW50ZXJuYWwgewogc3RhdGljIGNv
bnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSBh
Y2Nlc3NUeXBlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBib29sIHZpYVBy
b3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBKU09iamVjdCogY3VzdG9tU2xvdEJh
c2UpCiAgICAgOiBCYXNlKHZtLCBvd25lciwgYWNjZXNzVHlwZSwgb2Zmc2V0LCBzdHJ1Y3R1cmUs
IGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxTZXQpCkBAIC0xODUsNyArMTg3LDcg
QEAgdm9pZCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjplbWl0RE9NSklUR2V0dGVyKEFjY2Vzc0dl
bmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnMKICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6
OlByZXNlcnZlZFN0YXRlIHByZXNlcnZlZFN0YXRlID0KICAgICBhbGxvY2F0b3IucHJlc2VydmVS
ZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4
dHJhU3RhY2tTcGFjZTo6U3BhY2VGb3JDQ2FsbCk7CiAKLSAgICBpZiAodmVyYm9zZSkgeworICAg
IGlmIChHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAg
ZGF0YUxvZygiYmFzZUdQUiA9ICIsIGJhc2VHUFIsICJcbiIpOwogICAgICAgICBkYXRhTG9nKCJ2
YWx1ZVJlZ3MgPSAiLCB2YWx1ZVJlZ3MsICJcbiIpOwogICAgICAgICBkYXRhTG9nKCJzY3JhdGNo
R1BSID0gIiwgc2NyYXRjaEdQUiwgIlxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcAppbmRl
eCA2MTllYTVkOWNiNDdiMWYxOTViMGU4YjQ3ZDU5OTZjYTg1OWMzNGVmLi45Njc5NTIzNzc4OGNj
MTk2NTA3NDFiZGNmNjlhZTQ3Y2QyOGRhNGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAK
QEAgLTE4MiwxMyArMTgyLDE1IEBAIGJvb2wgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6Omlz
VmFsaWRBbmRXYXRjaGFibGUoKSBjb25zdAogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2Ug
PSBmYWxzZTsKK25hbWVzcGFjZSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFsIHsK
K3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogT2JqZWN0UHJvcGVydHlD
b25kaXRpb24gZ2VuZXJhdGVDb25kaXRpb24oCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBK
U09iamVjdCogb2JqZWN0LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBQcm9wZXJ0eUNvbmRpdGlv
bjo6S2luZCBjb25kaXRpb25LaW5kKQogewogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gb2Jq
ZWN0LT5zdHJ1Y3R1cmUoKTsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQ3JlYXRp
bmcgY29uZGl0aW9uICIsIGNvbmRpdGlvbktpbmQsICIgZm9yICIsIHBvaW50ZXJEdW1wKHN0cnVj
dHVyZSksICJcbiIpOwogCiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gcmVzdWx0OwpAQCAt
MjI2LDEyICsyMjgsMTIgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gZ2VuZXJhdGVDb25kaXRp
b24oCiAgICAgfQogCiAgICAgaWYgKCFyZXN1bHQuaXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQ
cm9wZXJ0eVdhdGNocG9pbnQoKSkgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYg
KE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICBkYXRhTG9nKCJGYWlsZWQgdG8gY3JlYXRlIGNvbmRpdGlvbjogIiwgcmVzdWx0LCAiXG4iKTsK
ICAgICAgICAgcmV0dXJuIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uKCk7CiAgICAgfQogCi0gICAg
aWYgKHZlcmJvc2UpCisgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIk5ldyBjb25kaXRpb246ICIsIHJlc3VsdCwgIlxu
Iik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI0OCwxMSArMjUwLDExIEBAIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRlQ29uZGl0aW9ucygKICAgICBWZWN0b3I8T2JqZWN0
UHJvcGVydHlDb25kaXRpb24+IGNvbmRpdGlvbnM7CiAgICAgCiAgICAgZm9yICg7OykgewotICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBzdHJ1
Y3R1cmU6ICIsIHBvaW50ZXJEdW1wKHN0cnVjdHVyZSksICJcbiIpOwogICAgICAgICAKICAgICAg
ICAgaWYgKHN0cnVjdHVyZS0+aXNQcm94eSgpKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgIGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkl0J3MgYSBwcm94eSwgc28gaW52YWxpZC5c
biIpOwogICAgICAgICAgICAgcmV0dXJuIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjppbnZh
bGlkKCk7CiAgICAgICAgIH0KQEAgLTI2MSwxMSArMjYzLDExIEBAIE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0IGdlbmVyYXRlQ29uZGl0aW9ucygKICAgICAgICAgCiAgICAgICAgIGlmICh2YWx1
ZS5pc051bGwoKSkgewogICAgICAgICAgICAgaWYgKCFwcm90b3R5cGUpIHsKLSAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
UmVhY2hlZCBlbmQgb2YgcHJvdG90eXBlIGNoYWluIGFzIGV4cGVjdGVkLCBkb25lLlxuIik7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgICAgIGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIlVuZXhwZWN0ZWRseSByZWFjaGVk
IGVuZCBvZiBwcm90b3R5cGUgY2hhaW4sIHNvIGludmFsaWQuXG4iKTsKICAgICAgICAgICAgIHJl
dHVybiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aW52YWxpZCgpOwogICAgICAgICB9CkBA
IC0yNzYsMzUgKzI3OCwzNSBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5lcmF0ZUNv
bmRpdGlvbnMoCiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7CiAgICAg
ICAgICAgICBpZiAoY29uY3VycmVuY3kgPT0gTWFpblRocmVhZCkgewogICAgICAgICAgICAgICAg
IGlmIChzdHJ1Y3R1cmUtPmhhc0JlZW5GbGF0dGVuZWRCZWZvcmUoKSkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCJEaWN0aW9uYXJ5IGhhcyBiZWVuIGZsYXR0ZW5lZCBiZWZvcmUsIHNvIGludmFs
aWQuXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0OjppbnZhbGlkKCk7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkZsYXR0
ZW5pbmcgIiwgcG9pbnRlckR1bXAoc3RydWN0dXJlKSk7CiAgICAgICAgICAgICAgICAgc3RydWN0
dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2bSwgb2JqZWN0KTsKICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAg
aWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2coIkNhbm5vdCBmbGF0dGVuIGRpY3Rpb25hcnkgd2hlbiBub3Qg
b24gbWFpbiB0aHJlYWQsIHNvIGludmFsaWQuXG4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmludmFsaWQoKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCiAgICAgICAgIGlmICghZnVuY3Rvcihjb25kaXRpb25zLCBvYmplY3QpKSB7Ci0g
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkZ1
bmN0b3IgZmFpbGVkLCBpbnZhbGlkLlxuIik7CiAgICAgICAgICAgICByZXR1cm4gT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQ6OmludmFsaWQoKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgaWYgKG9iamVjdCA9PSBwcm90b3R5cGUpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiUmVhY2hlZCBkZXNpcmVkIHByb3RvdHlwZSwg
ZG9uZS5cbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBp
ZiAodmVyYm9zZSkKKyAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiUmV0dXJuaW5nIGNvbmRpdGlvbnM6ICIsIGxpc3RE
dW1wKGNvbmRpdGlvbnMpLCAiXG4iKTsKICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQ6OmNyZWF0ZShjb25kaXRpb25zKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4IGZiMGI2YTlkOGMyZGRj
OGZjM2Y5YzkxOTFkYmYyMmI5YmQ0MDI5ODguLjQyMjgwYzVhZTZmNzZkYjY3MDNhNjAxNmQ1ODNj
MWIwYTAxZGMzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmNwcApAQCAtNDQsNyArNDQsOSBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAorbmFtZXNwYWNlIFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWwgewogc3RhdGljIGNvbnN0
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiB2b2lkIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6
OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKQEAgLTI0Nyw3ICsyNDksNyBAQCBBY2Nl
c3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcygKICAgICAgICAg
Y2FzZXNUb0FkZC5hcHBlbmQoV1RGTW92ZShteUNhc2UpKTsKICAgICB9CiAKLSAgICBpZiAodmVy
Ym9zZSkKKyAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgZGF0YUxvZygiY2FzZXNUb0FkZDogIiwgbGlzdER1bXAoY2FzZXNUb0FkZCksICJcbiIpOwog
CiAgICAgLy8gSWYgdGhlcmUgYXJlbid0IGFueSBjYXNlcyB0byBhZGQsIHRoZW4gZmFpbCBvbiB0
aGUgZ3JvdW5kcyB0aGF0IHRoZXJlJ3Mgbm8gcG9pbnQgdG8gZ2VuZXJhdGluZyBhCkBAIC0yNjMs
NyArMjY1LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRk
Q2FzZXMoCiAgICAgICAgIG1fbGlzdC5hcHBlbmQoV1RGTW92ZShjYXNlVG9BZGQpKTsKICAgICB9
CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkFmdGVyIGFkZENhc2VzOiBtX2xpc3Q6ICIs
IGxpc3REdW1wKG1fbGlzdCksICJcbiIpOwogCiAgICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25S
ZXN1bHQ6OkJ1ZmZlcmVkOwpAQCAtMzM0LDcgKzMzNiw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1
bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoCiB7CiAgICAgU3VwZXJTYW1wbGVyU2Nv
cGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAotICAgIGlmICh2ZXJib3NlKQorICAg
IGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9n
KCJSZWdlbmVyYXRlIHdpdGggbV9saXN0OiAiLCBsaXN0RHVtcChtX2xpc3QpLCAiXG4iKTsKICAg
ICAKICAgICBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUgc3RhdGUodm0pOwpAQCAtNDAyLDcgKzQwNCw3
IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUo
CiAgICAgfQogICAgIG1fbGlzdC5yZXNpemUoZHN0SW5kZXgpOwogICAgIAotICAgIGlmICh2ZXJi
b3NlKQorICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICBkYXRhTG9nKCJPcHRpbWl6ZWQgY2FzZXM6ICIsIGxpc3REdW1wKGNhc2VzKSwgIlxuIik7CiAg
ICAgCiAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSdyZSBjb252aW5jZWQgdGhhdCAnY2FzZXMnIGNv
bnRhaW5zIHRoZSBjYXNlcyB0aGF0IHdlIHdhbnQgdG8gSklUIG5vdyBhbmQgd2UKQEAgLTUxNyw3
ICs1MTksNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdl
bmVyYXRlKAogCiAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgY29kZUJsb2NrLCBKSVRD
b21waWxhdGlvbkNhbkZhaWwpOwogICAgIGlmIChsaW5rQnVmZmVyLmRpZEZhaWxUb0FsbG9jYXRl
KCkpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vz
c0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiRGlkIGZhaWwgdG8gYWxs
b2NhdGUuXG4iKTsKICAgICAgICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdhdmVV
cDsKICAgICB9CkBAIC01MjgsNyArNTMwLDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5
bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSgKIAogICAgIGxpbmtCdWZmZXIubGluayhmYWlsdXJl
LCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24oKSk7CiAgICAgCi0gICAgaWYgKHZlcmJv
c2UpCisgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
IGRhdGFMb2coRnVsbENvZGVPcmlnaW4oY29kZUJsb2NrLCBzdHViSW5mby5jb2RlT3JpZ2luKSwg
IjogR2VuZXJhdGluZyBwb2x5bW9ycGhpYyBhY2Nlc3Mgc3R1YiBmb3IgIiwgbGlzdER1bXAoY2Fz
ZXMpLCAiXG4iKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlID0gRklOQUxJWkVf
Q09ERV9GT1IoCkBAIC01NDQsNyArNTQ2LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5
bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSgKICAgICBtX3dhdGNocG9pbnRzID0gV1RGTW92ZShz
dGF0ZS53YXRjaHBvaW50cyk7CiAgICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5pc0VtcHR5
KCkpCiAgICAgICAgIG1fd2Vha1JlZmVyZW5jZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxX
cml0ZUJhcnJpZXI8SlNDZWxsPj4+KFdURk1vdmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsKLSAg
ICBpZiAodmVyYm9zZSkKKyAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgZGF0YUxvZygiUmV0dXJuaW5nOiAiLCBjb2RlLmNvZGUoKSwgIlxuIik7CiAg
ICAgCiAgICAgbV9saXN0ID0gV1RGTW92ZShjYXNlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcAppbmRleCA0MjNiYzIxMGVk
NDgzY2ExMTk3ZTM5OWI1OTU1NDY2NmNkZjM5NWM5Li4wNzY0NGEzMDdmOWNmNGU5YzVmMzJhNzFj
MTgxYzJiZjgzOTk1NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJvcGVydHlDb25kaXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHAKQEAgLTMyLDcgKzMyLDkgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKK25hbWVzcGFjZSBQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsIHsKIHN0YXRpYyBi
b29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogdm9pZCBQcm9wZXJ0eUNvbmRpdGlvbjo6ZHVtcElu
Q29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKIHsK
QEAgLTY1LDIwICs2NywyMCBAQCB2b2lkIFByb3BlcnR5Q29uZGl0aW9uOjpkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0CiBib29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1
bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNPYmplY3QqIGJhc2UpIGNvbnN0CiB7Ci0gICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoUHJv
cGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICBkYXRhTG9nKAogICAg
ICAgICAgICAgIkRldGVybWluaW5nIHZhbGlkaXR5IG9mICIsICp0aGlzLCAiIHdpdGggc3RydWN0
dXJlICIsIHBvaW50ZXJEdW1wKHN0cnVjdHVyZSksICIgYW5kIGJhc2UgIiwKICAgICAgICAgICAg
IEpTVmFsdWUoYmFzZSksICIgYXNzdW1pbmcgaW1wdXJlIHByb3BlcnR5IHdhdGNocG9pbnRzIGFy
ZSBzZXQuXG4iKTsKICAgICB9CiAgICAgCiAgICAgaWYgKCEqdGhpcykgewotICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgaWYgKFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICBkYXRhTG9nKCJJbnZhbGlkIGJlY2F1c2UgdW5zZXQuXG4iKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKICAgICBpZiAoIXN0cnVjdHVyZS0+cHJvcGVy
dHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRh
dGFMb2coIkludmFsaWQgYmVjYXVzZSBhY2Nlc3NlcyBhcmUgbm90IGNhY2hlYWJsZS5cbiIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtODgsNyArOTAsNyBAQCBib29sIFByb3Bl
cnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2lu
dCgKICAgICAgICAgdW5zaWduZWQgY3VycmVudEF0dHJpYnV0ZXM7CiAgICAgICAgIFByb3BlcnR5
T2Zmc2V0IGN1cnJlbnRPZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSh1aWQoKSwg
Y3VycmVudEF0dHJpYnV0ZXMpOwogICAgICAgICBpZiAoY3VycmVudE9mZnNldCAhPSBvZmZzZXQo
KSB8fCBjdXJyZW50QXR0cmlidXRlcyAhPSBhdHRyaWJ1dGVzKCkpIHsKLSAgICAgICAgICAgIGlm
ICh2ZXJib3NlKSB7CisgICAgICAgICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6
dmVyYm9zZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAg
ICJJbnZhbGlkIGJlY2F1c2Ugd2UgbmVlZCBvZmZzZXQsIGF0dHJpYnV0ZXMgdG8gYmUgIiwgb2Zm
c2V0KCksICIsICIsIGF0dHJpYnV0ZXMoKSwKICAgICAgICAgICAgICAgICAgICAgIiBidXQgdGhl
eSBhcmUgIiwgY3VycmVudE9mZnNldCwgIiwgIiwgY3VycmVudEF0dHJpYnV0ZXMsICJcbiIpOwpA
QCAtMTAwLDIwICsxMDIsMjAgQEAgYm9vbCBQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlk
QXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoCiAgICAgICAgIAogICAgIGNhc2UgQWJz
ZW5jZTogewogICAgICAgICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgewotICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJJbnZhbGlkIGJlY2F1c2Ug
aXQncyBhIGRpY3Rpb25hcnkuXG4iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQogCiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IGN1cnJlbnRPZmZzZXQgPSBzdHJ1Y3R1cmUt
PmdldENvbmN1cnJlbnRseSh1aWQoKSk7CiAgICAgICAgIGlmIChjdXJyZW50T2Zmc2V0ICE9IGlu
dmFsaWRPZmZzZXQpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYg
KFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0
YUxvZygiSW52YWxpZCBiZWNhdXNlIHRoZSBwcm9wZXJ0eSBleGlzdHMgYXQgb2Zmc2V0OiAiLCBj
dXJyZW50T2Zmc2V0LCAiXG4iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0
KCkgIT0gcHJvdG90eXBlKCkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAg
ICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAg
ICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGJlY2F1c2UgdGhl
IHByb3RvdHlwZSBpcyAiLCBzdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZSgpLCAiIGV2ZW4gdGhv
dWdoICIKICAgICAgICAgICAgICAgICAgICAgIml0IHNob3VsZCBoYXZlIGJlZW4gIiwgSlNWYWx1
ZShwcm90b3R5cGUoKSksICJcbiIpOwpAQCAtMTI2LDcgKzEyOCw3IEBAIGJvb2wgUHJvcGVydHlD
b25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KAog
ICAgIAogICAgIGNhc2UgQWJzZW5jZU9mU2V0RWZmZWN0OiB7CiAgICAgICAgIGlmIChzdHJ1Y3R1
cmUtPmlzRGljdGlvbmFyeSgpKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkludmFsaWQgYmVjYXVzZSBpdCdzIGEgZGljdGlvbmFyeS5cbiIpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0xMzUsNyArMTM3LDcgQEAgYm9v
bCBQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdh
dGNocG9pbnQoCiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IGN1cnJlbnRPZmZzZXQgPSBzdHJ1Y3R1
cmUtPmdldENvbmN1cnJlbnRseSh1aWQoKSwgY3VycmVudEF0dHJpYnV0ZXMpOwogICAgICAgICBp
ZiAoY3VycmVudE9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAoY3Vy
cmVudEF0dHJpYnV0ZXMgJiAoUmVhZE9ubHkgfCBBY2Nlc3NvciB8IEN1c3RvbUFjY2Vzc29yKSkg
ewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgaWYgKFBy
b3BlcnR5Q29uZGl0aW9uSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGJlY2F1c2Ugd2UgZXhw
ZWN0ZWQgbm90IHRvIGhhdmUgYSBzZXR0ZXIsIGJ1dCB3ZSBoYXZlIG9uZSBhdCBvZmZzZXQgIiwK
ICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRPZmZzZXQsICIgd2l0aCBhdHRyaWJ1dGVz
ICIsIGN1cnJlbnRBdHRyaWJ1dGVzLCAiXG4iKTsKQEAgLTE0NSw3ICsxNDcsNyBAQCBib29sIFBy
b3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hw
b2ludCgKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+c3RvcmVk
UHJvdG90eXBlT2JqZWN0KCkgIT0gcHJvdG90eXBlKCkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJi
b3NlKSB7CisgICAgICAgICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9z
ZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICJJbnZh
bGlkIGJlY2F1c2UgdGhlIHByb3RvdHlwZSBpcyAiLCBzdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlw
ZSgpLCAiIGV2ZW4gdGhvdWdoICIKICAgICAgICAgICAgICAgICAgICAgIml0IHNob3VsZCBoYXZl
IGJlZW4gIiwgSlNWYWx1ZShwcm90b3R5cGUoKSksICJcbiIpOwpAQCAtMTYwLDcgKzE2Miw3IEBA
IGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVy
dHlXYXRjaHBvaW50KAogICAgICAgICBpZiAoIWJhc2UgfHwgYmFzZS0+c3RydWN0dXJlKCkgIT0g
c3RydWN0dXJlKSB7CiAgICAgICAgICAgICAvLyBDb25zZXJ2YXRpdmVseSByZXR1cm4gZmFsc2Us
IHNpbmNlIHdlIGNhbm5vdCB2ZXJpZnkgdGhpcyBvbmUgd2l0aG91dCBoYXZpbmcgdGhlCiAgICAg
ICAgICAgICAvLyBvYmplY3QuCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAg
ICAgaWYgKFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAg
ICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBiZWNhdXNlIHdlIGRv
bid0IGhhdmUgYSBiYXNlIG9yIHRoZSBiYXNlIGhhcyB0aGUgd3Jvbmcgc3RydWN0dXJlOiAiLAog
ICAgICAgICAgICAgICAgICAgICBSYXdQb2ludGVyKGJhc2UpLCAiXG4iKTsKQEAgLTE3Myw3ICsx
NzUsNyBAQCBib29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVy
ZVByb3BlcnR5V2F0Y2hwb2ludCgKICAgICAgICAgCiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IGN1
cnJlbnRPZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSh1aWQoKSk7CiAgICAgICAg
IGlmIChjdXJyZW50T2Zmc2V0ID09IGludmFsaWRPZmZzZXQpIHsKLSAgICAgICAgICAgIGlmICh2
ZXJib3NlKSB7CisgICAgICAgICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVy
Ym9zZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICJJ
bnZhbGlkIGJlY2F1c2UgdGhlIGJhc2Ugbm8gbG9uZyBhcHBlYXJzIHRvIGhhdmUgIiwgdWlkKCks
ICIgb24gaXRzIHN0cnVjdHVyZTogIiwKICAgICAgICAgICAgICAgICAgICAgICAgIFJhd1BvaW50
ZXIoYmFzZSksICJcbiIpOwpAQCAtMTgzLDcgKzE4NSw3IEBAIGJvb2wgUHJvcGVydHlDb25kaXRp
b246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KAogCiAgICAg
ICAgIEpTVmFsdWUgY3VycmVudFZhbHVlID0gYmFzZS0+Z2V0RGlyZWN0KGN1cnJlbnRPZmZzZXQp
OwogICAgICAgICBpZiAoY3VycmVudFZhbHVlICE9IHJlcXVpcmVkVmFsdWUoKSkgewotICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbklu
dGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAg
ICAgICAgICAgIkludmFsaWQgYmVjYXVzZSB0aGUgdmFsdWUgaXMgIiwgY3VycmVudFZhbHVlLCAi
IGJ1dCB3ZSByZXF1aXJlICIsIHJlcXVpcmVkVmFsdWUoKSwKICAgICAgICAgICAgICAgICAgICAg
IlxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmNwcAppbmRleCAyMTg3NzUxNzZmMjc3ZTM2NjhkYzEyZGViNjY2NWRhMTRlNDdk
MWI3Li4zZTNiZjI0M2FhOTVhMjkzZWIyNmFkYzI4NWFhOTk2MDYwZTg5ZDVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAK
QEAgLTM1LDcgKzM1LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBFTkFCTEUoSklUKQogCitu
YW1lc3BhY2UgU3RydWN0dXJlU3R1YkluZm9JbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2
ZXJib3NlID0gZmFsc2U7Cit9CiAKIFN0cnVjdHVyZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHViSW5m
byhBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiAgICAgOiBjYWxsU2l0ZUluZGV4KFVJTlRfTUFYKQpA
QCAtMTE1LDcgKzExNyw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1Yklu
Zm86OmFkZEFjY2Vzc0Nhc2UoCiB7CiAgICAgVk0mIHZtID0gKmNvZGVCbG9jay0+dm0oKTsKICAg
ICAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoU3RydWN0dXJlU3R1YkluZm9JbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQWRkaW5nIGFjY2VzcyBjYXNlOiAiLCBhY2Nlc3ND
YXNlLCAiXG4iKTsKICAgICAKICAgICBpZiAoIWFjY2Vzc0Nhc2UpCkBAIC0xMjYsNyArMTI4LDcg
QEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2Fz
ZSgKICAgICBpZiAoY2FjaGVUeXBlID09IENhY2hlVHlwZTo6U3R1YikgewogICAgICAgICByZXN1
bHQgPSB1LnN0dWItPmFkZENhc2UobG9ja2VyLCB2bSwgY29kZUJsb2NrLCAqdGhpcywgaWRlbnQs
IFdURk1vdmUoYWNjZXNzQ2FzZSkpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgZGF0YUxvZygiSGFkIHN0dWIsIHJlc3VsdDogIiwgcmVzdWx0LCAiXG4iKTsKIAogICAgICAg
ICBpZiAoIXJlc3VsdC5idWZmZXJlZCgpKSB7CkBAIC0xNDcsNyArMTQ5LDcgQEAgQWNjZXNzR2Vu
ZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgKICAgICAgICAg
CiAgICAgICAgIHJlc3VsdCA9IGFjY2Vzcy0+YWRkQ2FzZXMobG9ja2VyLCB2bSwgY29kZUJsb2Nr
LCAqdGhpcywgaWRlbnQsIFdURk1vdmUoYWNjZXNzQ2FzZXMpKTsKICAgICAgICAgCi0gICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoU3RydWN0dXJlU3R1YkluZm9JbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkNyZWF0ZWQgc3R1YiwgcmVzdWx0OiAiLCByZXN1
bHQsICJcbiIpOwogCiAgICAgICAgIGlmICghcmVzdWx0LmJ1ZmZlcmVkKCkpIHsKQEAgLTE2NCw3
ICsxNjYsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRB
Y2Nlc3NDYXNlKAogICAgIC8vIElmIHdlIGRpZG4ndCBidWZmZXIgYW55IGNhc2VzIHRoZW4gYmFp
bC4gSWYgdGhpcyBtYWRlIG5vIGNoYW5nZXMgdGhlbiB3ZSdsbCBqdXN0IHRyeSBhZ2FpbgogICAg
IC8vIHN1YmplY3QgdG8gY29vbC1kb3duLgogICAgIGlmICghcmVzdWx0LmJ1ZmZlcmVkKCkpIHsK
LSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiRGlkbid0IGJ1ZmZlciBhbnl0aGlu
ZywgYmFpbGluZy5cbiIpOwogICAgICAgICBidWZmZXJlZFN0cnVjdHVyZXMuY2xlYXIoKTsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE3Miw3ICsxNzQsNyBAQCBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAogICAgIAogICAgIC8vIFRo
ZSBidWZmZXJpbmcgY291bnRkb3duIHRlbGxzIHVzIGlmIHdlIHNob3VsZCBiZSByZXBhdGNoaW5n
IG5vdy4KICAgICBpZiAoYnVmZmVyaW5nQ291bnRkb3duKSB7Ci0gICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICBpZiAoU3RydWN0dXJlU3R1YkluZm9JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgIGRhdGFMb2coIkNvdW50ZG93biBpcyB0b28gaGlnaDogIiwgYnVmZmVyaW5nQ291bnRk
b3duLCAiLlxuIik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMTgzLDcgKzE4
NSw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vz
c0Nhc2UoCiAgICAgCiAgICAgcmVzdWx0ID0gdS5zdHViLT5yZWdlbmVyYXRlKGxvY2tlciwgdm0s
IGNvZGVCbG9jaywgKnRoaXMsIGlkZW50KTsKICAgICAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBp
ZiAoU3RydWN0dXJlU3R1YkluZm9JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygi
UmVnZW5lcmF0aW9uIHJlc3VsdDogIiwgcmVzdWx0LCAiXG4iKTsKICAgICAKICAgICBSRUxFQVNF
X0FTU0VSVCghcmVzdWx0LmJ1ZmZlcmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKaW5kZXggNTE2
NTBmNTg1ZDRlOGVhNmEzMzllN2Y2MzAyOGVhMDhlZDU4ZWE0Zi4uYTQ1N2Y4ZjU3ZDQ5Y2MzZTI3
MzM5NzZiODBiMmZkOTg2M2E0NjBhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC01MCw3ICs1
MCw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAot
Ym9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgREZHQXJndW1lbnRzRWxpbWluYXRpb25Q
aGFzZUludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAog
Y2xhc3MgQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJsaWM6
CkBAIC02NSw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdmVyc2lvbiBvdmVyIExvYWRT
dG9yZS4KICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fZm9y
bSA9PSBTU0EpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYg
KERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAg
ICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIGFyZ3VtZW50cyBlbGltaW5hdGlvbjpcbiIpOwog
ICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KQEAgLTE1Nyw3ICsxNTksNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkNhbmRpZGF0ZXM6ICIsIGxpc3RE
dW1wKG1fY2FuZGlkYXRlcyksICJcbiIpOwogICAgIH0KIApAQCAtMjEwLDcgKzIxMiw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB0cmFuc2l0aXZlbHlSZW1vdmVDYW5kaWRhdGUoTm9kZSogbm9kZSwg
Tm9kZSogc291cmNlID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGJvb2wgcmVtb3ZlZCA9IG1f
Y2FuZGlkYXRlcy5yZW1vdmUobm9kZSk7Ci0gICAgICAgIGlmIChyZW1vdmVkICYmIHZlcmJvc2Ug
JiYgc291cmNlKQorICAgICAgICBpZiAocmVtb3ZlZCAmJiBERkdBcmd1bWVudHNFbGltaW5hdGlv
blBoYXNlSW50ZXJuYWw6OnZlcmJvc2UgJiYgc291cmNlKQogICAgICAgICAgICAgZGF0YUxvZygi
ZWxpbWluYXRpbmcgY2FuZGlkYXRlOiAiLCBub2RlLCAiIGJlY2F1c2UgaXQgZXNjYXBlcyBmcm9t
OiAiLCBzb3VyY2UsICJcbiIpOwogCiAgICAgICAgIGlmIChyZW1vdmVkKQpAQCAtNDE4LDcgKzQy
MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkFmdGVyIGVzY2FwZSBhbmFseXNpczog
IiwgbGlzdER1bXAobV9jYW5kaWRhdGVzKSwgIlxuIik7CiAgICAgfQogCkBAIC01MTksNyArNTIx
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHRoaXMgYXJndW1lbnRz
IGFsbG9jYXRpb24sIGFuZCB3ZSdkIGhhdmUgdG8gZXhhbWluZSBldmVyeSBub2RlIGluIHRoZSBi
bG9jaywKICAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiB3ZSBjYW4ganVzdCBlbGltaW5hdGUg
dGhlIGNhbmRpZGF0ZS4KICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGVJbmRleCA9PSBibG9j
ay0+c2l6ZSgpICYmIGNhbmRpZGF0ZS0+b3duZXIgIT0gYmxvY2spIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR0Fy
Z3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCJlbGltaW5hdGluZyBjYW5kaWRhdGU6ICIsIGNhbmRpZGF0
ZSwgIiBiZWNhdXNlIGl0IGlzIGNsb2JiZXJlZCBieTogIiwgYmxvY2stPmF0KG5vZGVJbmRleCks
ICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGl2ZWx5UmVtb3ZlQ2FuZGlk
YXRlKGNhbmRpZGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01NDYs
NyArNTQ4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb09wQ2xv
YmJlcml6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0
aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiZWxpbWluYXRpbmcgY2FuZGlkYXRlOiAiLCBjYW5kaWRhdGUsICIgYmVjYXVz
ZSBpdCBpcyBjbG9iYmVyZWQgYnkgIiwgYmxvY2stPmF0KG5vZGVJbmRleCksICJcbiIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpdmVseVJlbW92ZUNhbmRpZGF0ZShjYW5k
aWRhdGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTU2OCw3ICs1
NzAsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBzaW5jZSB0aG9zZSBhdmFpbGFiaWxpdGllcyBz
cGVhayBvZiB0aGUgc3RhY2sgYmVmb3JlIHRoZSBvcHRpbWl6aW5nIGNvbXBpbGVyIHN0YWNrIGZy
YW1lIGlzCiAgICAgICAgIC8vIHRvcm4gZG93bi4KIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgICAgIGRhdGFMb2coIkFmdGVyIGludGVyZmVyZW5jZSBhbmFseXNpczogIiwgbGlz
dER1bXAobV9jYW5kaWRhdGVzKSwgIlxuIik7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAxYjVkN2FlZWI4Mjcx
YTFhN2Y3NDIyMjIyNmJkYTdkNWE1NzIwZTA4Li5lMTQ0NzA3YWU5YjY2YWJiZWM5ZjE2Y2UwZWEy
YTdmMDE0ZWRlNzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcApAQCAtNzAsMjIgKzcwLDE4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAotTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBORVZFUl9J
TkxJTkUgdm9pZCBjcmFzaCgpCi17Ci0gICAgQ1JBU0goKTsKLX0KLQotI3VuZGVmIFJFTEVBU0Vf
QVNTRVJUCi0jZGVmaW5lIFJFTEVBU0VfQVNTRVJUKGFzc2VydGlvbikgZG8geyBcCisjZGVmaW5l
IFBBUlNFUl9BU1NFUlQoYXNzZXJ0aW9uLCAuLi4pIGRvIHsgICAgICAgICAgXAogICAgIGlmIChV
TkxJS0VMWSghKGFzc2VydGlvbikpKSB7IFwKICAgICAgICAgV1RGUmVwb3J0QXNzZXJ0aW9uRmFp
bHVyZShfX0ZJTEVfXywgX19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJT04sICNhc3NlcnRpb24p
OyBcCi0gICAgICAgIGNyYXNoKCk7IFwKKyAgICAgICAgQ1JBU0hfV0lUSF9JTkZPKF9fVkFfQVJH
U19fKTsgXAogICAgIH0gXAogfSB3aGlsZSAoMCkKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNl
CiAKK25hbWVzcGFjZSBERkdCeXRlQ29kZVBhcnNlckludGVybmFsIHsKIHN0YXRpYyBjb25zdCBi
b29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogY2xhc3MgQ29uc3RhbnRCdWZmZXJLZXkgewogcHVi
bGljOgpAQCAtMTIwNyw3ICsxMjAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICwgbV92YWx1
ZSh2YWx1ZSkKICAgICAgICAgICAgICwgbV9zZXRNb2RlKHNldE1vZGUpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wZXJhbmQuaXNWYWxpZCgpKTsKKyAgICAgICAgICAg
IFBBUlNFUl9BU1NFUlQob3BlcmFuZC5pc1ZhbGlkKCkpOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBOb2RlKiBleGVjdXRlKEJ5dGVDb2RlUGFyc2VyKiBwYXJzZXIpCkBAIC0xNDMwLDE4
ICsxNDI2LDE4IEBAIHVuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZh
cmlhbnQgY2FsbGVlLCBpbnQsIElubGluZUNhbGxGcmFtZTo6CiB7CiAgICAgQ2FsbE1vZGUgY2Fs
bE1vZGUgPSBJbmxpbmVDYWxsRnJhbWU6OmNhbGxNb2RlRm9yKGtpbmQpOwogICAgIENvZGVTcGVj
aWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gc3BlY2lhbGl6YXRpb25LaW5kRm9y
KGNhbGxNb2RlKTsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQ29uc2lkZXJpbmcgaW5saW5pbmcg
IiwgY2FsbGVlLCAiIGludG8gIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgCiAg
ICAgaWYgKG1faGFzRGVidWdnZXJFbmFibGVkKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlIGRlYnVnZ2VyIGlzIGluIHVzZS5cbiIp
OwogICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQogCiAgICAgRnVuY3Rpb25FeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLmZ1bmN0aW9uRXhlY3V0YWJsZSgpOwogICAgIGlmICgh
ZXhlY3V0YWJsZSkgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVD
b2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFp
bGluZyBiZWNhdXNlIHRoZXJlIGlzIG5vIGZ1bmN0aW9uIGV4ZWN1dGFibGUuXG4iKTsKICAgICAg
ICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KQEAgLTE0NTUsMTQgKzE0NTEsMTQgQEAgdW5zaWdu
ZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCwg
SW5saW5lQ2FsbEZyYW1lOjoKICAgICAvLyBpdCdzIGEgcmFyZSBjYXNlIGJlY2F1c2Ugd2UgZXhw
ZWN0IHRoYXQgYW55IGhvdCBjYWxsZWVzIHdvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNvbXBpbGVk
LgogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxv
Y2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICBpZiAoIWNvZGVCbG9jaykgewotICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIG5vIGNvZGUg
YmxvY2sgYXZhaWxhYmxlLlxuIik7CiAgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAK
ICAgICBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsID0gaW5saW5lRnVuY3Rpb25Gb3JD
YXBhYmlsaXR5TGV2ZWwoCiAgICAgICAgIGNvZGVCbG9jaywgc3BlY2lhbGl6YXRpb25LaW5kLCBj
YWxsZWUuaXNDbG9zdXJlQ2FsbCgpKTsKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChERkdC
eXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2coIiAgICBD
YWxsIG1vZGU6ICIsIGNhbGxNb2RlLCAiXG4iKTsKICAgICAgICAgZGF0YUxvZygiICAgIElzIGNs
b3N1cmUgY2FsbDogIiwgY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSwgIlxuIik7CiAgICAgICAgIGRh
dGFMb2coIiAgICBDYXBhYmlsaXR5IGxldmVsOiAiLCBjYXBhYmlsaXR5TGV2ZWwsICJcbiIpOwpA
QCAtMTQ3Miw3ICsxNDY4LDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29z
dChDYWxsVmFyaWFudCBjYWxsZWUsIGludCwgSW5saW5lQ2FsbEZyYW1lOjoKICAgICAgICAgZGF0
YUxvZygiICAgIElzIGlubGluaW5nIGNhbmRpZGF0ZTogIiwgY29kZUJsb2NrLT5vd25lclNjcmlw
dEV4ZWN1dGFibGUoKS0+aXNJbmxpbmluZ0NhbmRpZGF0ZSgpLCAiXG4iKTsKICAgICB9CiAgICAg
aWYgKCFjYW5JbmxpbmUoY2FwYWJpbGl0eUxldmVsKSkgewotICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyBub3QgaW5s
aW5lYWJsZS5cbiIpOwogICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQpAQCAtMTQ4Miw3
ICsxNDc4LDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFy
aWFudCBjYWxsZWUsIGludCwgSW5saW5lQ2FsbEZyYW1lOjoKICAgICAvLyBwdXJwb3NlIG9mIHVu
c2V0dGluZyBTQUJJLgogICAgIGlmICghaXNTbWFsbEVub3VnaFRvSW5saW5lQ29kZUludG8obV9j
b2RlQmxvY2spKSB7CiAgICAgICAgIGNvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQg
PSBmYWxzZTsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdCeXRlQ29kZVBh
cnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcg
YmVjYXVzZSB0aGUgY2FsbGVyIGlzIHRvbyBsYXJnZS5cbiIpOwogICAgICAgICByZXR1cm4gVUlO
VF9NQVg7CiAgICAgfQpAQCAtMTUwNiw3ICsxNTAyLDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJz
ZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCwgSW5saW5lQ2FsbEZyYW1l
OjoKICAgICBmb3IgKElubGluZVN0YWNrRW50cnkqIGVudHJ5ID0gbV9pbmxpbmVTdGFja1RvcDsg
ZW50cnk7IGVudHJ5ID0gZW50cnktPm1fY2FsbGVyKSB7CiAgICAgICAgICsrZGVwdGg7CiAgICAg
ICAgIGlmIChkZXB0aCA+PSBPcHRpb25zOjptYXhpbXVtSW5saW5pbmdEZXB0aCgpKSB7Ci0gICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlcklu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJl
Y2F1c2UgZGVwdGggZXhjZWVkZWQuXG4iKTsKICAgICAgICAgICAgIHJldHVybiBVSU5UX01BWDsK
ICAgICAgICAgfQpAQCAtMTUxNCwxNCArMTUxMCwxNCBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNl
cjo6aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50LCBJbmxpbmVDYWxsRnJhbWU6
OgogICAgICAgICBpZiAoZW50cnktPmV4ZWN1dGFibGUoKSA9PSBleGVjdXRhYmxlKSB7CiAgICAg
ICAgICAgICArK3JlY3Vyc2lvbjsKICAgICAgICAgICAgIGlmIChyZWN1cnNpb24gPj0gT3B0aW9u
czo6bWF4aW11bUlubGluaW5nUmVjdXJzaW9uKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBy
ZWN1cnNpb24gZGV0ZWN0ZWQuXG4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gVUlOVF9NQVg7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgaWYgKHZlcmJvc2Up
CisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRh
dGFMb2coIiAgICBJbmxpbmluZyBzaG91bGQgYmUgcG9zc2libGUuXG4iKTsKICAgICAKICAgICAv
LyBJdCBtaWdodCBiZSBwb3NzaWJsZSB0byBpbmxpbmUuCkBAIC0xNjE4LDExICsxNjE0LDExIEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGlu
dCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyCiAgICAgaW5saW5lVmFyaWFibGVEYXRhLmFyZ3VtZW50
UG9zaXRpb25TdGFydCA9IGFyZ3VtZW50UG9zaXRpb25TdGFydDsKICAgICBpbmxpbmVWYXJpYWJs
ZURhdGEuY2FsbGVlVmFyaWFibGUgPSAwOwogICAgIAotICAgIFJFTEVBU0VfQVNTRVJUKAorICAg
IFBBUlNFUl9BU1NFUlQoCiAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZy
YW1lLT5pc0Nsb3N1cmVDYWxsCiAgICAgICAgID09IGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpOwog
ICAgIGlmIChjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKSB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KGNhbGxlZVZhcmlhYmxlKTsKKyAgICAgICAgUEFSU0VSX0FTU0VSVChjYWxsZWVWYXJpYWJsZSk7
CiAgICAgICAgIGlubGluZVZhcmlhYmxlRGF0YS5jYWxsZWVWYXJpYWJsZSA9IGNhbGxlZVZhcmlh
YmxlOwogICAgIH0KICAgICAKQEAgLTE2NjksNyArMTY2NSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBD
YWxsVmFyCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBSZXB1cnBvc2luZyBsYXN0
IGJsb2NrIGZyb20gIiwgbGFzdEJsb2NrLT5ieXRlY29kZUJlZ2luLCAiIHRvICIsIG1fY3VycmVu
dEluZGV4LCAiXG4iKTsKICAgICAgICAgICAgIGxhc3RCbG9jay0+Ynl0ZWNvZGVCZWdpbiA9IG1f
Y3VycmVudEluZGV4OwogICAgICAgICAgICAgaWYgKGNhbGxlckxpbmthYmlsaXR5ID09IENhbGxl
ckRvZXNOb3JtYWxMaW5raW5nKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgICAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIkFkZGluZyB1bmxpbmtlZCBibG9jayAiLCBSYXdQb2lu
dGVyKG1fZ3JhcGgubGFzdEJsb2NrKCkpLCAiIChvbmUgcmV0dXJuKVxuIik7CiAgICAgICAgICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5k
KFVubGlua2VkQmxvY2sobV9ncmFwaC5sYXN0QmxvY2soKSkpOwogICAgICAgICAgICAgfQpAQCAt
MTY5OSwxNCArMTY5NSwxNCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUq
IGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcgogICAgICAgICBBU1NF
UlQoIW5vZGUtPnRhcmdldEJsb2NrKCkpOwogICAgICAgICBub2RlLT50YXJnZXRCbG9jaygpID0g
YmxvY2sucHRyKCk7CiAgICAgICAgIGlubGluZVN0YWNrRW50cnkubV91bmxpbmtlZEJsb2Nrc1tp
XS5tX25lZWRzRWFybHlSZXR1cm5MaW5raW5nID0gZmFsc2U7Ci0gICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9pbnRlcihibG9ja1RvTGluayksICIgYXMg
bGlua2VkIChqdW1wcyB0byByZXR1cm4pXG4iKTsKICAgICAgICAgYmxvY2tUb0xpbmstPmRpZExp
bmsoKTsKICAgICB9CiAgICAgCiAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jay5wdHIoKTsKICAg
ICBBU1NFUlQobV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0
cy5pc0VtcHR5KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5n
VGFyZ2V0cy5sYXN0KCktPmJ5dGVjb2RlQmVnaW4gPCBuZXh0T2Zmc2V0KTsKLSAgICBpZiAodmVy
Ym9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgZGF0YUxvZygiQWRkaW5nIHVubGlua2VkIGJsb2NrICIsIFJhd1BvaW50ZXIoYmxvY2sucHRy
KCkpLCAiIChtYW55IHJldHVybnMpXG4iKTsKICAgICBpZiAoY2FsbGVyTGlua2FiaWxpdHkgPT0g
Q2FsbGVyRG9lc05vcm1hbExpbmtpbmcpIHsKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9j
YWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2sucHRyKCkp
KTsKQEAgLTE3NDIsNyArMTczOCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lu
bGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kCiAgICAgaWYg
KCFpbmxpbmluZ0JhbGFuY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAo
dmVyYm9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgZGF0YUxvZygiICAgIENvbnNpZGVyaW5nIGNhbGxlZSAiLCBjYWxsZWUsICJcbiIpOwog
ICAgIAogICAgIC8vIEludHJpbnNpY3MgYW5kIGludGVybmFsIGZ1bmN0aW9ucyBjYW4gb25seSBi
ZSBpbmxpbmVkIGlmIHdlJ3JlIG5vdCBkb2luZyB2YXJhcmdzLiBUaGlzIGlzIGJlY2F1c2UKQEAg
LTE3NjIsNDAgKzE3NTgsNDAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5l
Q2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQKICAgICAKICAgICAg
ICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLmludGVybmFsRnVuY3Rp
b24oKSkgewogICAgICAgICAgICAgaWYgKGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihj
YWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFuZCwgZnVuY3Rpb24sIHJlZ2lzdGVyT2Zmc2V0LCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kLCBwcmVkaWN0aW9u
LCBpbnNlcnRDaGVja3NXaXRoQWNjb3VudGluZykpIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChkaWRJbnNlcnRDaGVja3MpOworICAgICAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQo
ZGlkSW5zZXJ0Q2hlY2tzKTsKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNh
bGxUYXJnZXROb2RlKTsKICAgICAgICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdp
c3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgICAgICAgICAgICAg
IGlubGluaW5nQmFsYW5jZS0tOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7Cisg
ICAgICAgICAgICBQQVJTRVJfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgCiAgICAgICAgIEludHJpbnNpYyBpbnRyaW5z
aWMgPSBjYWxsZWUuaW50cmluc2ljRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAgICAgIGlm
IChpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMpIHsKICAgICAgICAgICAgIGlmIChoYW5kbGVJbnRy
aW5zaWNDYWxsKGNhbGxUYXJnZXROb2RlLCByZXN1bHRPcGVyYW5kLCBpbnRyaW5zaWMsIHJlZ2lz
dGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbiwgaW5zZXJ0
Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
ZGlkSW5zZXJ0Q2hlY2tzKTsKKyAgICAgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKGRpZEluc2Vy
dENoZWNrcyk7CiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0
Tm9kZSk7CiAgICAgICAgICAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZz
ZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKICAgICAgICAgICAgICAgICBpbmxpbmlu
Z0JhbGFuY2UtLTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CisgICAgICAg
ICAgICBQQVJTRVJfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOwogICAgICAgICAgICAgLy8gV2Ug
bWlnaHQgc3RpbGwgdHJ5IHRvIGlubGluZSB0aGUgSW50cmluc2ljIGJlY2F1c2UgaXQgbWlnaHQg
YmUgYSBidWlsdGluIEpTIGZ1bmN0aW9uLgogICAgICAgICB9CiAKICAgICAgICAgaWYgKE9wdGlv
bnM6OnVzZURPTUpJVCgpKSB7CiAgICAgICAgICAgICBpZiAoY29uc3QgRE9NSklUOjpTaWduYXR1
cmUqIHNpZ25hdHVyZSA9IGNhbGxlZS5zaWduYXR1cmVGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKSkg
ewogICAgICAgICAgICAgICAgIGlmIChoYW5kbGVET01KSVRDYWxsKGNhbGxUYXJnZXROb2RlLCBy
ZXN1bHRPcGVyYW5kLCBzaWduYXR1cmUsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgcHJlZGljdGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRpZEluc2VydENoZWNrcyk7CisgICAg
ICAgICAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKICAgICAgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7CiAgICAgICAg
ICAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAgICAgICAgICAgICAgICAgIGlubGluaW5nQmFsYW5j
ZS0tOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CisgICAg
ICAgICAgICAgICAgUEFSU0VSX0FTU0VSVCghZGlkSW5zZXJ0Q2hlY2tzKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KQEAgLTE4MTcsMjEgKzE4MTMsMjEgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50c0Fy
Z3VtZW50LCB1bnNpZ25lZCBhcmd1bWVudHNPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywKICAgICB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBOb2RlVHlwZSBjYWxsT3AsIElubGlu
ZUNhbGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogewotICAg
IGlmICh2ZXJib3NlKSB7CisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJv
c2UpIHsKICAgICAgICAgZGF0YUxvZygiSGFuZGxpbmcgaW5saW5pbmcuLi5cbiIpOwogICAgICAg
ICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgfQog
ICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2Fs
bEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7CiAgICAgCiAgICAgaWYgKCFjYWxs
TGlua1N0YXR1cy5zaXplKCkpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChE
RkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygi
QmFpbGluZyBpbmxpbmluZy5cbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAg
IAogICAgIGlmIChJbmxpbmVDYWxsRnJhbWU6OmlzVmFyYXJncyhraW5kKQogICAgICAgICAmJiBj
YWxsTGlua1N0YXR1cy5tYXhOdW1Bcmd1bWVudHMoKSA+IE9wdGlvbnM6Om1heGltdW1WYXJhcmdz
Rm9ySW5saW5pbmcoKSkgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5
dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJCYWls
aW5nIGlubGluaW5nIGJlY2F1c2Ugb2YgdmFyYXJncy5cbiIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQpAQCAtMTk1MCw3ICsxOTQ2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW5saW5pbmcoCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9KTsKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR0J5
dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkRv
bmUgaW5saW5pbmcgKHNpbXBsZSkuXG4iKTsKICAgICAgICAgICAgIGRhdGFMb2coIlN0YWNrOiAi
LCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICAgICAgICAgIGRhdGFMb2coIlJlc3Vs
dDogIiwgcmVzdWx0LCAiXG4iKTsKQEAgLTE5NjYsNyArMTk2Miw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgIC8vIGFsc28uCiAgICAgaWYgKCFpc0ZUTChtX2dy
YXBoLm1fcGxhbi5tb2RlKSB8fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWNDYWxsSW5saW5pbmco
KQogICAgICAgICB8fCBJbmxpbmVDYWxsRnJhbWU6OmlzVmFyYXJncyhraW5kKSkgewotICAgICAg
ICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6
dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiQmFpbGluZyBpbmxpbmluZyAoaGFyZCku
XG4iKTsKICAgICAgICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigp
LCAiXG4iKTsKICAgICAgICAgfQpAQCAtMTk3OCw3ICsxOTc0LDcgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgLy8gaXQgaGFzIG5vIGlkZWEuCiAgICAgaWYgKCFP
cHRpb25zOjp1c2VQb2x5bW9ycGhpY0NhbGxJbmxpbmluZ0Zvck5vblN0dWJTdGF0dXMoKQogICAg
ICAgICAmJiAhY2FsbExpbmtTdGF0dXMuaXNCYXNlZE9uU3R1YigpKSB7Ci0gICAgICAgIGlmICh2
ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3Nl
KSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJCYWlsaW5nIGlubGluaW5nIChub24tc3R1YiBwb2x5
bW9ycGhpc20pLlxuIik7CiAgICAgICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENv
ZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgICAgIH0KQEAgLTIwMDYsMTQgKzIwMDIsMTQgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgICAgIC8vIHdoZXJlIGl0IHdv
dWxkIGJlIGJlbmVmaWNpYWwuIEl0IG1pZ2h0IGJlIGJlc3QgdG8gaGFuZGxlIHRoZXNlIGNhc2Vz
IGFzIGlmIGFsbCBjYWxscyB3ZXJlCiAgICAgICAgIC8vIGNsb3N1cmUgY2FsbHMuCiAgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYwMjAKLSAgICAg
ICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6
OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkJhaWxpbmcgaW5saW5pbmcgKG1peCku
XG4iKTsKICAgICAgICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigp
LCAiXG4iKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAot
ICAgIGlmICh2ZXJib3NlKSB7CisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZl
cmJvc2UpIHsKICAgICAgICAgZGF0YUxvZygiRG9pbmcgaGFyZCBpbmxpbmluZy4uLlxuIik7CiAg
ICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAg
ICB9CkBAIC0yMDI0LDExICsyMDIwLDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKAogICAgIC8vIHN0b3JlIHRoZSBjYWxsZWUgc28gdGhhdCBpdCB3aWxsIGJlIGFjY2Vz
c2libGUgdG8gYWxsIG9mIHRoZSBibG9ja3Mgd2UncmUgYWJvdXQgdG8gY3JlYXRlLiBXZQogICAg
IC8vIGdldCBhd2F5IHdpdGggZG9pbmcgYW4gaW1tZWRpYXRlLXNldCBoZXJlIGJlY2F1c2Ugd2Ug
d291bGRuJ3QgaGF2ZSBwZXJmb3JtZWQgYW55IHNpZGUgZWZmZWN0cwogICAgIC8vIHlldC4KLSAg
ICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgZGF0YUxvZygiUmVnaXN0ZXIgb2Zmc2V0OiAiLCByZWdpc3Rlck9mZnNldCk7
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZVJlZyhyZWdpc3Rlck9mZnNldCArIENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSk7CiAgICAgY2FsbGVlUmVnID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBP
cGVyYW5kKGNhbGxlZVJlZyk7Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0J5dGVDb2Rl
UGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkNhbGxlZSBpcyBnb2lu
ZyB0byBiZSAiLCBjYWxsZWVSZWcsICJcbiIpOwogICAgIHNldERpcmVjdChjYWxsZWVSZWcsIGNh
bGxUYXJnZXROb2RlLCBJbW1lZGlhdGVTZXRXaXRoRmx1c2gpOwogCkBAIC0yMDQyLDcgKzIwMzgs
NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICBhZGRUb0dyYXBo
KFN3aXRjaCwgT3BJbmZvKCZkYXRhKSwgdGhpbmdUb1N3aXRjaE9uKTsKICAgICAKICAgICBCYXNp
Y0Jsb2NrKiBvcmlnaW5CbG9jayA9IG1fY3VycmVudEJsb2NrOwotICAgIGlmICh2ZXJib3NlKQor
ICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRh
TG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIob3JpZ2luQmxvY2spLCAiIGFzIGxpbmtlZCAob3Jp
Z2luIG9mIHBvbHkgaW5saW5lKVxuIik7CiAgICAgb3JpZ2luQmxvY2stPmRpZExpbmsoKTsKICAg
ICBjYW5jZWxMaW5raW5nRm9yQmxvY2sobV9pbmxpbmVTdGFja1RvcCwgb3JpZ2luQmxvY2spOwpA
QCAtMjA1NCw3ICsyMDUwLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmco
CiAgICAgLy8gV2UgbWF5IGZvcmNlIHRoaXMgdHJ1ZSBpZiB3ZSBnaXZlIHVwIG9uIGlubGluaW5n
IGFueSBvZiB0aGUgZWRnZXMuCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCA9IGNhbGxMaW5r
U3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRoKCk7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAg
aWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2co
IkFib3V0IHRvIGxvb3Agb3ZlciBmdW5jdGlvbnMgYXQgIiwgY3VycmVudENvZGVPcmlnaW4oKSwg
Ii5cbiIpOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsTGlua1N0YXR1
cy5zaXplKCk7ICsraSkgewpAQCAtMjEwMSwxMSArMjA5NywxMSBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbmxpbmluZygKICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCk7CiAgICAg
ICAgICAgICBsYW5kaW5nQmxvY2tzLmFwcGVuZChtX2N1cnJlbnRCbG9jayk7CiAgICAgICAgIH0K
LSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiTWFya2luZyAiLCBSYXdQb2ludGVy
KG1fY3VycmVudEJsb2NrKSwgIiBhcyBsaW5rZWQgKHRhaWwgb2YgcG9seSBpbmxpbmVlKVxuIik7
CiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5kaWRMaW5rKCk7CiAKLSAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICAgICAgZGF0YUxvZygiRmluaXNoZWQgaW5saW5pbmcgIiwgY2FsbExpbmtTdGF0dXNbaV0s
ICIgYXQgIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIi5cbiIpOwogICAgIH0KICAgICAKQEAgLTIx
MTUsNyArMjExMSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAg
IG1fZXhpdE9LID0gdHJ1ZTsKICAgICBkYXRhLmZhbGxUaHJvdWdoID0gQnJhbmNoVGFyZ2V0KHNs
b3dQYXRoQmxvY2sucHRyKCkpOwogICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soc2xvd1BhdGhCbG9j
ay5jb3B5UmVmKCkpOwotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNl
ckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50
ZXIoc2xvd1BhdGhCbG9jay5wdHIoKSksICIgYXMgbGlua2VkIChzbG93IHBhdGggYmxvY2spXG4i
KTsKICAgICBzbG93UGF0aEJsb2NrLT5kaWRMaW5rKCk7CiAgICAgcHJlcGFyZVRvUGFyc2VCbG9j
aygpOwpAQCAtMjE0Niw3ICsyMTQyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5s
aW5pbmcoCiAgICAgUmVmPEJhc2ljQmxvY2s+IGNvbnRpbnVhdGlvbkJsb2NrID0gYWRvcHRSZWYo
CiAgICAgICAgICpuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgbV9udW1Bcmd1bWVudHMsIG1fbnVt
TG9jYWxzLCAxKSk7CiAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhjb250aW51YXRpb25CbG9jay5j
b3B5UmVmKCkpOwotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNlcklu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJBZGRpbmcgdW5saW5rZWQgYmxvY2sg
IiwgUmF3UG9pbnRlcihjb250aW51YXRpb25CbG9jay5wdHIoKSksICIgKGNvbnRpbnVhdGlvbilc
biIpOwogICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlu
a2VkQmxvY2soY29udGludWF0aW9uQmxvY2sucHRyKCkpKTsKICAgICBwcmVwYXJlVG9QYXJzZUJs
b2NrKCk7CkBAIC0yMTU4LDcgKzIxNTQsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bmxpbmluZygKICAgICBtX2N1cnJlbnRJbmRleCA9IG9sZE9mZnNldDsKICAgICBtX2V4aXRPSyA9
IHRydWU7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJz
ZXJJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICBkYXRhTG9nKCJEb25lIGlubGluaW5nICho
YXJkKS5cbiIpOwogICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4o
KSwgIlxuIik7CiAgICAgfQpAQCAtMzQ5OSwxNCArMzQ5NSwxNCBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpuZWVkc0R5bmFtaWNMb29rdXAoUmVzb2x2ZVR5cGUgdHlwZSwgT3Bjb2RlSUQgb3Bjb2Rl
KQogCiBHZXRCeU9mZnNldE1ldGhvZCBCeXRlQ29kZVBhcnNlcjo6cGxhbkxvYWQoY29uc3QgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb24mIGNvbmRpdGlvbikKIHsKLSAgICBpZiAodmVyYm9zZSkKKyAg
ICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxv
ZygiUGxhbm5pbmcgYSBsb2FkOiAiLCBjb25kaXRpb24sICJcbiIpOwogICAgIAogICAgIC8vIFdl
IG1pZ2h0IHByb21vdGUgdGhpcyB0byBFcXVpdmFsZW5jZSwgYW5kIGEgbGF0ZXIgREZHIHBhc3Mg
bWlnaHQgYWxzbyBkbyBzdWNoIHByb21vdGlvbgogICAgIC8vIGV2ZW4gaWYgd2UgZmFpbCwgYnV0
IGZvciBzaW1wbGljaXR5IHRoaXMgY2Fubm90IGJlIGFza2VkIHRvIGxvYWQgYW4gZXF1aXZhbGVu
Y2UgY29uZGl0aW9uLgogICAgIC8vIE5vbmUgb2YgdGhlIGNsaWVudHMgb2YgdGhpcyBtZXRob2Qg
d2lsbCByZXF1ZXN0IGEgbG9hZCBvZiBhbiBFcXVpdmFsZW5jZSBjb25kaXRpb24gYW55d2F5LAog
ICAgIC8vIGFuZCBzdXBwb3J0aW5nIGl0IHdvdWxkIGNvbXBsaWNhdGUgdGhlIGhldXJpc3RpY3Mg
YmVsb3cuCi0gICAgUkVMRUFTRV9BU1NFUlQoY29uZGl0aW9uLmtpbmQoKSA9PSBQcm9wZXJ0eUNv
bmRpdGlvbjo6UHJlc2VuY2UpOworICAgIFBBUlNFUl9BU1NFUlQoY29uZGl0aW9uLmtpbmQoKSA9
PSBQcm9wZXJ0eUNvbmRpdGlvbjo6UHJlc2VuY2UpOwogICAgIAogICAgIC8vIEhlcmUncyB0aGUg
cmFua2luZyBvZiBob3cgdG8gaGFuZGxlIHRoaXMsIGZyb20gbW9zdCBwcmVmZXJyZWQgdG8gbGVh
c3QgcHJlZmVycmVkOgogICAgIC8vCkBAIC0zNjA5LDE0ICszNjA1LDE0IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmNoZWNrKGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRp
b25TZXQpCiAKIEdldEJ5T2Zmc2V0TWV0aG9kIEJ5dGVDb2RlUGFyc2VyOjpwbGFuTG9hZChjb25z
dCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0KQogewotICAgIGlmICh2
ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICBkYXRhTG9nKCJjb25kaXRpb25TZXQgPSAiLCBjb25kaXRpb25TZXQsICJcbiIpOwogICAg
IAogICAgIEdldEJ5T2Zmc2V0TWV0aG9kIHJlc3VsdDsKICAgICBmb3IgKGNvbnN0IE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uJiBjb25kaXRpb24gOiBjb25kaXRpb25TZXQpIHsKICAgICAgICAgc3dp
dGNoIChjb25kaXRpb24ua2luZCgpKSB7CiAgICAgICAgIGNhc2UgUHJvcGVydHlDb25kaXRpb246
OlByZXNlbmNlOgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlc3VsdCk7IC8vIFNob3Vs
ZCBvbmx5IHNlZSBleGFjdGx5IG9uZSBvZiB0aGVzZS4KKyAgICAgICAgICAgIFBBUlNFUl9BU1NF
UlQoIXJlc3VsdCk7IC8vIFNob3VsZCBvbmx5IHNlZSBleGFjdGx5IG9uZSBvZiB0aGVzZS4KICAg
ICAgICAgICAgIHJlc3VsdCA9IHBsYW5Mb2FkKGNvbmRpdGlvbik7CiAgICAgICAgICAgICBpZiAo
IXJlc3VsdCkKICAgICAgICAgICAgICAgICByZXR1cm4gR2V0QnlPZmZzZXRNZXRob2QoKTsKQEAg
LTM3ODYsNyArMzc4Miw3IEBAIE5vZGUqIEJ5dGVDb2RlUGFyc2VyOjpsb2FkKAogCiBOb2RlKiBC
eXRlQ29kZVBhcnNlcjo6c3RvcmUoTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllciwgY29u
c3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5vZGUqIHZhbHVlKQogewotICAgIFJFTEVBU0Vf
QVNTRVJUKHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlKTsKKyAgICBQ
QVJTRVJfQVNTRVJUKHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlKTsK
IAogICAgIGNoZWNrUHJlc2VuY2VMaWtlKGJhc2UsIG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVu
dGlmaWVyXSwgdmFyaWFudC5vZmZzZXQoKSwgdmFyaWFudC5zdHJ1Y3R1cmUoKSk7CiAgICAgcmV0
dXJuIGhhbmRsZVB1dEJ5T2Zmc2V0KGJhc2UsIGlkZW50aWZpZXIsIHZhcmlhbnQub2Zmc2V0KCks
IHZhcmlhbnQucmVxdWlyZWRUeXBlKCksIHZhbHVlKTsKQEAgLTQxODUsNyArNDE4MSw3IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgLy8gb3Bw
b3NlZCB0byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlmIChtX2N1cnJl
bnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUoKSkgewogICAg
ICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgubV9yb290VG9Bcmd1bWVudHMuYWRkKG1fY3Vy
cmVudEJsb2NrLCBBcmd1bWVudHNWZWN0b3IoKSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGFk
ZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgUEFSU0VSX0FTU0VSVChhZGRSZXN1bHQuaXNO
ZXdFbnRyeSk7CiAgICAgICAgIEFyZ3VtZW50c1ZlY3RvciYgZW50cnlwb2ludEFyZ3VtZW50cyA9
IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHMu
cmVzaXplKG1fbnVtQXJndW1lbnRzKTsKIApAQCAtNTI4Miw3ICs1Mjc4LDcgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICBO
RVhUX09QQ09ERShvcF9jYXRjaCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKCFtX2N1cnJlbnRCbG9jay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIFBBUlNFUl9B
U1NFUlQoIW1fY3VycmVudEJsb2NrLT5zaXplKCkpOwogCiAgICAgICAgICAgICBWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRP
cGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzNdLnUucG9pbnRlcik7CiAKQEAgLTUz
MDcsOCArNTMwMyw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQg
bGltaXQpCiAgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvY2FsUHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOwog
ICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJndW1lbnQo
KSkgPCBhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBQQVJTRVJfQVNTRVJUKG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFBBUlNFUl9BU1NFUlQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG9wZXJhbmQudG9Bcmd1
bWVudCgpKSA8IGFyZ3VtZW50UHJlZGljdGlvbnMuc2l6ZSgpKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlZW5Bcmd1bWVudHMuYWRkKG9wZXJhbmQudG9Bcmd1bWVudCgpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGFyZ3VtZW50UHJlZGljdGlvbnNbb3BlcmFuZC50b0FyZ3VtZW50KCldID0g
cHJlZGljdGlvbjsKQEAgLTUzMTcsNyArNTMxMyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAKICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlv
bkVuYWJsZWQoKSkgewogICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50
ID0gMDsgYXJndW1lbnQgPCBtX251bUFyZ3VtZW50czsgKythcmd1bWVudCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNlZW5Bcmd1bWVudHMuY29udGFpbnMoYXJndW1l
bnQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoc2VlbkFyZ3VtZW50
cy5jb250YWlucyhhcmd1bWVudCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
IApAQCAtNTM1OCw3ICs1MzU0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKIAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9ncmFwaC5tX3Jvb3RUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIEFy
Z3VtZW50c1ZlY3RvcigpKTsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChhZGRSZXN1
bHQuaXNOZXdFbnRyeSk7CisgICAgICAgICAgICAgICAgUEFSU0VSX0FTU0VSVChhZGRSZXN1bHQu
aXNOZXdFbnRyeSk7CiAgICAgICAgICAgICAgICAgQXJndW1lbnRzVmVjdG9yJiBlbnRyeXBvaW50
QXJndW1lbnRzID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgICAgICAgICBl
bnRyeXBvaW50QXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CiAKQEAgLTU1MDMsOCAr
NTQ5OSw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQp
CiAgICAgICAgICAgICBjYXNlIEdsb2JhbExleGljYWxWYXI6CiAgICAgICAgICAgICBjYXNlIEds
b2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAgICAgICAgICAgICAgICAg
SlNTY29wZSogY29uc3RhbnRTY29wZSA9IEpTU2NvcGU6OmNvbnN0YW50U2NvcGVGb3JDb2RlQmxv
Y2socmVzb2x2ZVR5cGUsIG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrKTsKLSAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChjb25zdGFudFNjb3BlKTsKLSAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChzdGF0aWNfY2FzdDxKU1Njb3BlKj4oY3VycmVudEluc3RydWN0aW9uWzZd
LnUucG9pbnRlcikgPT0gY29uc3RhbnRTY29wZSk7CisgICAgICAgICAgICAgICAgUEFSU0VSX0FT
U0VSVChjb25zdGFudFNjb3BlKTsKKyAgICAgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKHN0YXRp
Y19jYXN0PEpTU2NvcGUqPihjdXJyZW50SW5zdHJ1Y3Rpb25bNl0udS5wb2ludGVyKSA9PSBjb25z
dGFudFNjb3BlKTsKICAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRzdCksIHdl
YWtKU0NvbnN0YW50KGNvbnN0YW50U2NvcGUpKTsKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KFBoYW50b20sIGdldChWaXJ0dWFsUmVnaXN0ZXIoc2NvcGUpKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CkBAIC01ODQ1LDcgKzU4NDEsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgLy8gQmFzZWxpbmUtPkRGRyBPU1IganVt
cHMgYmV0d2VlbiBsb29wIGhpbnRzLiBUaGUgREZHIGFzc3VtZXMgdGhhdCBCYXNlbGluZS0+REZH
CiAgICAgICAgICAgICAvLyBPU1IgY2FuIG9ubHkgaGFwcGVuIGF0IGJhc2ljIGJsb2NrIGJvdW5k
YXJpZXMuIEFzc2VydCB0aGF0IHRoZXNlIHR3byBzdGF0ZW1lbnRzCiAgICAgICAgICAgICAvLyBh
cmUgY29tcGF0aWJsZS4KLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fY3VycmVudEluZGV4
ID09IGJsb2NrQmVnaW4pOworICAgICAgICAgICAgUEFSU0VSX0FTU0VSVChtX2N1cnJlbnRJbmRl
eCA9PSBibG9ja0JlZ2luKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gV2UgbmV2ZXIg
ZG8gT1NSIGludG8gYW4gaW5saW5lZCBjb2RlIGJsb2NrLiBUaGF0IGNvdWxkIG5vdCBoYXBwZW4s
IHNpbmNlIE9TUgogICAgICAgICAgICAgLy8gbG9va3MgdXAgdGhlIGNvZGUgYmxvY2sgdGhhdCBp
cyB0aGUgcmVwbGFjZW1lbnQgZm9yIHRoZSBiYXNlbGluZSBKSVQgY29kZQpAQCAtNjE5NSw3ICs2
MTkxLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKEJhc2ljQmxvY2sqIGJsb2Nr
LCBWZWN0b3I8QmFzaWNCbG9jayo+JiBwb3NzaWJsZVQKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIoYmxvY2sp
LCAiIGFzIGxpbmtlZCAoYWN0dWFsbHkgZGlkIGxpbmtpbmcpXG4iKTsKICAgICBibG9jay0+ZGlk
TGluaygpOwogfQpAQCAtNjIwMywxMCArNjE5OSwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjps
aW5rQmxvY2soQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxCYXNpY0Jsb2NrKj4mIHBvc3NpYmxl
VAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrcyhWZWN0b3I8VW5saW5rZWRCbG9jaz4m
IHVubGlua2VkQmxvY2tzLCBWZWN0b3I8QmFzaWNCbG9jayo+JiBwb3NzaWJsZVRhcmdldHMpCiB7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB1bmxpbmtlZEJsb2Nrcy5zaXplKCk7ICsraSkg
ewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJBdHRlbXB0aW5nIHRvIGxpbmsg
IiwgUmF3UG9pbnRlcih1bmxpbmtlZEJsb2Nrc1tpXS5tX2Jsb2NrKSwgIlxuIik7CiAgICAgICAg
IGlmICh1bmxpbmtlZEJsb2Nrc1tpXS5tX25lZWRzTm9ybWFsTGlua2luZykgewotICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRG9lcyBuZWVkIG5vcm1h
bCBsaW5raW5nLlxuIik7CiAgICAgICAgICAgICBsaW5rQmxvY2sodW5saW5rZWRCbG9ja3NbaV0u
bV9ibG9jaywgcG9zc2libGVUYXJnZXRzKTsKICAgICAgICAgICAgIHVubGlua2VkQmxvY2tzW2ld
Lm1fbmVlZHNOb3JtYWxMaW5raW5nID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ1NFUGhhc2UuY3BwCmluZGV4IDU3ZWM0YTgwZTRiMjlkMmNiZDQ5NmVlYWMzOGQxYjI5Mzli
ODYxNzMuLmViZDFiOGVmZWY3YzI1MzBlMjhmOTI3MTdjZjcwZGFjMjcwZWQzYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCkBAIC00OCw3ICs0OCw5IEBAIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9v
bCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgREZHQ1NFUGhhc2VJbnRlcm5hbCB7CitzdGF0
aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIEltcHVyZURhdGFTbG90
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbXB1cmVEYXRhU2xvdCk7CkBAIC02MjcsNyAr
NjI5LDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgaXRlcmF0ZSgpCiAgICAgewotICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICBkYXRhTG9nKCJQZXJmb3JtaW5nIGl0ZXJhdGlvbi5cbiIpOwogICAgICAg
ICAKICAgICAgICAgbV9jaGFuZ2VkID0gZmFsc2U7CkBAIC02MzgsMTMgKzY0MCwxMyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBtX2ltcHVyZURhdGEgPSAmbV9pbXB1cmVEYXRhTWFwW21fYmxvY2td
OwogICAgICAgICAgICAgbV93cml0ZXNTb0Zhci5jbGVhcigpOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdDU0VQaGFzZUludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIlByb2Nlc3NpbmcgYmxvY2sgIiwg
Km1fYmxvY2ssICI6XG4iKTsKIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXgg
PSAwOyBub2RlSW5kZXggPCBtX2Jsb2NrLT5zaXplKCk7ICsrbm9kZUluZGV4KSB7CiAgICAgICAg
ICAgICAgICAgbV9ub2RlSW5kZXggPSBub2RlSW5kZXg7CiAgICAgICAgICAgICAgICAgbV9ub2Rl
ID0gbV9ibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiICBMb29raW5nIGF0IG5vZGUgIiwgbV9ub2RlLCAiOlxu
Iik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9ncmFwaC5wZXJmb3JtU3Vi
c3RpdHV0aW9uKG1fbm9kZSk7CkBAIC03MDcsNyArNzA5LDcgQEAgcHVibGljOgogICAgICAgICAv
LyBhIGdsb2JhbCBzZWFyY2guCiAgICAgICAgIExhenlOb2RlIG1hdGNoID0gbV9pbXB1cmVEYXRh
LT5hdmFpbGFibGVBdFRhaWwuZ2V0KGxvY2F0aW9uKTsKICAgICAgICAgaWYgKCEhbWF0Y2gpIHsK
LSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgRm91bmQgbG9j
YWwgbWF0Y2g6ICIsIG1hdGNoLCAiXG4iKTsKICAgICAgICAgICAgIHJldHVybiBtYXRjaDsKICAg
ICAgICAgfQpAQCAtNzE1LDcgKzcxNyw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gSWYgaXQncyBu
b3QgYXZhaWxhYmxlIGF0IHRoaXMgcG9pbnQgaW4gdGhlIGJsb2NrLCBhbmQgYXQgc29tZSBwcmlv
ciBwb2ludCBpbiB0aGUgYmxvY2sKICAgICAgICAgLy8gd2UgaGF2ZSBjbG9iYmVyZWQgdGhpcyBo
ZWFwIGxvY2F0aW9uLCB0aGVuIHRoZXJlIGlzIG5vIHBvaW50IGluIGRvaW5nIGEgZ2xvYmFsIHNl
YXJjaC4KICAgICAgICAgaWYgKG1fd3JpdGVzU29GYXIub3ZlcmxhcHMobG9jYXRpb24uaGVhcCgp
KSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHQ1NFUGhh
c2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBOb3Qg
bG9va2luZyBnbG9iYWxseSBiZWNhdXNlIG9mIGxvY2FsIGNsb2JiZXI6ICIsIG1fd3JpdGVzU29G
YXIsICJcbiIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KQEAgLTc3
Miw3ICs3NzQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHdv
cmtsaXN0LnRha2VMYXN0KCk7CiAgICAgICAgICAgICBzZWVuTGlzdC5hcHBlbmQoYmxvY2spOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChE
RkdDU0VQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICAgIFNlYXJjaGluZyBpbiBibG9jayAiLCAqYmxvY2ssICJcbiIpOwogICAgICAgICAgICAgSW1w
dXJlQmxvY2tEYXRhJiBkYXRhID0gbV9pbXB1cmVEYXRhTWFwW2Jsb2NrXTsKICAgICAgICAgICAg
IApAQCAtNzgwLDEyICs3ODIsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgLy8gdGhleSBjYW1l
ICphZnRlciogb3VyIHBvc2l0aW9uIGluIHRoZSBibG9jay4gQ2xlYXJseSwgd2hpbGUgb3VyIGJs
b2NrIGRvbWluYXRlcwogICAgICAgICAgICAgLy8gaXRzZWxmLCB0aGUgdGhpbmdzIGluIHRoZSBi
bG9jayBhZnRlciB1cyBkb24ndCBkb21pbmF0ZSB1cy4KICAgICAgICAgICAgIGlmIChtX2dyYXBo
Lm1fc3NhRG9taW5hdG9ycy0+c3RyaWN0bHlEb21pbmF0ZXMoYmxvY2ssIG1fYmxvY2spKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR0NTRVBo
YXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAg
ICAgSXQgc3RyaWN0bHkgZG9taW5hdGVzLlxuIik7CiAgICAgICAgICAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBtX25vZGUsIGRhdGEuZGlkVmlzaXQpOwogICAgICAgICAgICAgICAgIERGR19B
U1NFUlQobV9ncmFwaCwgbV9ub2RlLCAhbWF0Y2gpOwogICAgICAgICAgICAgICAgIG1hdGNoID0g
ZGF0YS5hdmFpbGFibGVBdFRhaWwuZ2V0KGxvY2F0aW9uKTsKLSAgICAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBBdmFpbGFiaWxpdHk6ICIs
IG1hdGNoLCAiXG4iKTsKICAgICAgICAgICAgICAgICBpZiAoISFtYXRjaCkgewogICAgICAgICAg
ICAgICAgICAgICAvLyBEb24ndCBleGFtaW5lIHRoZSBwcmVkZWNlc3NvcnMgb2YgYSBtYXRjaC4g
QXQgdGhpcyBwb2ludCB3ZSBqdXN0IHdhbnQgdG8KQEAgLTc5NSwxMCArNzk3LDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBEZWFsaW5nIHdpdGgg
d3JpdGUgc2V0ICIsIGRhdGEud3JpdGVzLCAiXG4iKTsKICAgICAgICAgICAgIGlmIChkYXRhLndy
aXRlcy5vdmVybGFwcyhsb2NhdGlvbi5oZWFwKCkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgQ2xvYmJlcmVkLlxuIik7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICB9CkBAIC04MzAsMTYg
KzgzMiwxNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBkZWYoSGVhcExvY2F0aW9uIGxvY2F0
aW9uLCBMYXp5Tm9kZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2co
IiAgICBHb3QgaGVhcCBsb2NhdGlvbiBkZWY6ICIsIGxvY2F0aW9uLCAiIC0+ICIsIHZhbHVlLCAi
XG4iKTsKICAgICAgICAgCiAgICAgICAgIExhenlOb2RlIG1hdGNoID0gZmluZFJlcGxhY2VtZW50
KGxvY2F0aW9uKTsKICAgICAgICAgCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAo
REZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICAg
IEdvdCBtYXRjaDogIiwgbWF0Y2gsICJcbiIpOwogICAgICAgICAKICAgICAgICAgaWYgKCFtYXRj
aCkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHQ1NFUGhh
c2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBBZGRp
bmcgYXQtdGFpbCBtYXBwaW5nOiAiLCBsb2NhdGlvbiwgIiAtPiAiLCB2YWx1ZSwgIlxuIik7CiAg
ICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1faW1wdXJlRGF0YS0+YXZhaWxhYmxlQXRUYWlsLmFk
ZChsb2NhdGlvbiwgdmFsdWUpOwogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsICFy
ZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VB
YnN0cmFjdFN0YXRlLmNwcAppbmRleCBiMGM1NWJlOTlhMjA1MzE4ODFlMTQ2MmJlODcxZGU4YTBk
YjcxZjIwLi5iNDljYjRjZDk2MjM0YTkyNzFjY2FiODJjNGU2NzhiYTkzZDc4MjQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRl
LmNwcApAQCAtMzcsNyArMzcsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAKK25hbWVzcGFjZSBERkdJblBsYWNlQWJzdHJhY3RTdGF0ZUludGVybmFsIHsKIHN0YXRpYyBj
b25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogSW5QbGFjZUFic3RyYWN0U3RhdGU6Oklu
UGxhY2VBYnN0cmFjdFN0YXRlKEdyYXBoJiBncmFwaCkKICAgICA6IG1fZ3JhcGgoZ3JhcGgpCkBA
IC0yNzYsNyArMjc4LDcgQEAgdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VTdGF0ZUF0
VGFpbChBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiwgQWJzdHJhY3QKIAogYm9vbCBJblBsYWNl
QWJzdHJhY3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pCiB7
Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0luUGxhY2VBYnN0cmFjdFN0YXRlSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgIE1lcmdpbmcgZnJvbSAiLCBwb2ludGVy
RHVtcChmcm9tKSwgIiB0byAiLCBwb2ludGVyRHVtcCh0byksICJcbiIpOwogICAgIEFTU0VSVChm
cm9tLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZBcmd1bWVudHMoKSA9PSB0by0+dmFyaWFibGVz
QXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCkpOwogICAgIEFTU0VSVChmcm9tLT52YXJpYWJsZXNB
dFRhaWwubnVtYmVyT2ZMb2NhbHMoKSA9PSB0by0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9j
YWxzKCkpOwpAQCAtMzA3LDcgKzMwOSw3IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1l
cmdlKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKQogCiAgICAgICAgIGZvciAoTm9k
ZUFic3RyYWN0VmFsdWVQYWlyJiBlbnRyeSA6IHRvLT5zc2EtPnZhbHVlc0F0SGVhZCkgewogICAg
ICAgICAgICAgTm9kZUZsb3dQcm9qZWN0aW9uIG5vZGUgPSBlbnRyeS5ub2RlOwotICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHSW5QbGFjZUFic3RyYWN0U3RhdGVJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBNZXJnaW5n
IGZvciAiLCBub2RlLCAiOiBmcm9tICIsIGZvck5vZGUobm9kZSksICIgdG8gIiwgZW50cnkudmFs
dWUsICJcbiIpOwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlQ291
bnRJbkZyb21CbG9jayA9IDA7CkBAIC0zMjIsNyArMzI0LDcgQEAgYm9vbCBJblBsYWNlQWJzdHJh
Y3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pCiAKICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gZW50cnkudmFsdWUubWVyZ2UoZm9yTm9kZShub2RlKSk7CiAKLSAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR0luUGxhY2VBYnN0cmFj
dFN0YXRlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAg
ICAgUmVzdWx0OiAiLCBlbnRyeS52YWx1ZSwgIlxuIik7CiAgICAgICAgIH0KICAgICAgICAgYnJl
YWs7CkBAIC0zMzYsNyArMzM4LDcgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2Uo
QmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pCiAgICAgaWYgKCF0by0+Y2ZhSGFzVmlz
aXRlZCkKICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisg
ICAgaWYgKERGR0luUGxhY2VBYnN0cmFjdFN0YXRlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
IGRhdGFMb2coIiAgICAgIFdpbGwgcmV2aXNpdDogIiwgY2hhbmdlZCwgIlxuIik7CiAgICAgdG8t
PmNmYVNob3VsZFJldmlzaXQgfD0gY2hhbmdlZDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAK
aW5kZXggNWQxY2JjNzZjNGVlMjUyYTMzNzI5ZmJlMTg1ZDk5MmIyYWZlZWNkYi4uOThlMGY2ZmRm
Mjg4MTQ3YTgxZTljYjdmOWYxYjg5OTY1NmZkOTFlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAK
QEAgLTQxLDcgKzQxLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1l
c3BhY2UgewogCituYW1lc3BhY2UgREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2VJbnRlcm5h
bCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGVudW0gUmFuZ2VL
aW5kIHsKICAgICBJbnZhbGlkUmFuZ2VLaW5kLApAQCAtMjAzLDEzICsyMDUsMTMgQEAgcHJpdmF0
ZToKICAgICAgICAgCiAgICAgICAgIGZvciAoYXV0byogbm9kZSA6ICpibG9jaykgewogICAgICAg
ICAgICAgUmFuZ2VLZXlBbmRBZGRlbmQgZGF0YSA9IHJhbmdlS2V5QW5kQWRkZW5kKG5vZGUpOwot
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHSW50ZWdlckNoZWNr
Q29tYmluaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9n
KCJGb3IgIiwgbm9kZSwgIjogIiwgZGF0YSwgIlxuIik7CiAgICAgICAgICAgICBpZiAoIWRhdGEp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJh
bmdlJiByYW5nZSA9IG1fbWFwW2RhdGEubV9rZXldOwotICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICBpZiAoREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2VJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgUmFuZ2U6ICIsIHJhbmdlLCAi
XG4iKTsKICAgICAgICAgICAgIGlmIChyYW5nZS5tX2NvdW50KSB7CiAgICAgICAgICAgICAgICAg
aWYgKGRhdGEubV9hZGRlbmQgPiByYW5nZS5tX21heEJvdW5kKSB7CkBAIC0yMjYsNyArMjI4LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByYW5nZS5tX21heE9yaWdpbiA9IG5vZGUtPm9y
aWdpbi5zZW1hbnRpYzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJhbmdlLm1fY291bnQr
KzsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR0ludGVnZXJD
aGVja0NvbWJpbmluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0
YUxvZygiICAgIE5ldyByYW5nZTogIiwgcmFuZ2UsICJcbiIpOwogICAgICAgICB9CiAgICAgICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VP
cHRpbWl6YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVn
ZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAppbmRleCAwN2I2YWMzNDgyZmQwZTdmMzJlZjg0
ZWY4MmIzMTE1MTI3N2JkMjEyLi40YTM4MzFlYjE2MGRjNDk3NjRlODczOTBlODhhZjVhYTk1ZTg2
ZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5n
ZU9wdGltaXphdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcApAQCAtNDIsNyArNDIsOSBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKLWNvbnN0IGJvb2wg
dmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBo
YXNlSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogY29u
c3QgdW5zaWduZWQgZ2l2ZVVwVGhyZXNob2xkID0gNTA7CiAKIGludDY0X3QgY2xhbXBlZFN1bUlt
cGwoKSB7IHJldHVybiAwOyB9CkBAIC0xMDE5LDcgKzEwMjEsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKG1fZ3JhcGguYmxvY2soMCkpOwogICAgICAgICB9
CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHSW50ZWdl
clJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAg
ZGF0YUxvZygiR3JhcGggYmVmb3JlIGludGVnZXIgcmFuZ2Ugb3B0aW1pemF0aW9uOlxuIik7CiAg
ICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQpAQCAtMTExMCw3ICsxMTEyLDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgIG1fcmVsYXRpb25zaGlwcyA9IG1fcmVsYXRpb25z
aGlwc0F0SGVhZFtibG9ja107CiAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmb3IgKGF1
dG8qIG5vZGUgOiAqYmxvY2spIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgICAgICAgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZUlu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQW5hbHlz
aXM6IGF0ICIsIG5vZGUsICI6ICIsIGxpc3REdW1wKHNvcnRlZFJlbGF0aW9uc2hpcHMoKSksICJc
biIpOwogICAgICAgICAgICAgICAgICAgICBleGVjdXRlTm9kZShub2RlKTsKICAgICAgICAgICAg
ICAgICB9CkBAIC0xMTk1LDExICsxMTk3LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlbGF0aW9uc2hpcE1hcCBmb3JUcnVlID0gbV9yZWxhdGlvbnNoaXBzOwogICAgICAg
ICAgICAgICAgICAgICAgICAgUmVsYXRpb25zaGlwTWFwIGZvckZhbHNlID0gbV9yZWxhdGlvbnNo
aXBzOwogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VP
cHRpbWl6YXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIkRlYWxpbmcgd2l0aCB0cnVlOlxuIik7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRSZWxhdGlvbnNoaXAoZm9yVHJ1ZSwgcmVsYXRpb25zaGlwRm9yVHJ1ZSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoUmVsYXRpb25zaGlwIHJlbGF0aW9uc2hpcEZvckZh
bHNlID0gcmVsYXRpb25zaGlwRm9yVHJ1ZS5pbnZlcnNlKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
REZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiRGVhbGluZyB3aXRoIGZhbHNlOlxu
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVsYXRpb25zaGlwKGZvckZhbHNl
LCByZWxhdGlvbnNoaXBGb3JGYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0x
MjIzLDcgKzEyMjUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX3JlbGF0aW9uc2hpcHMgPSBt
X3JlbGF0aW9uc2hpcHNBdEhlYWRbYmxvY2tdOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBu
b2RlSW5kZXggPSAwOyBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyArK25vZGVJbmRleCkgewog
ICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJh
bmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiVHJhbnNmb3JtYXRpb246IGF0ICIsIG5vZGUsICI6ICIsIGxpc3REdW1wKHNv
cnRlZFJlbGF0aW9uc2hpcHMoKSksICJcbiIpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIC8vIFRoaXMgZW5kcyB1cCBiZWluZyBwcmV0dHkgYXdrd2FyZCB0byB3cml0ZSBiZWNh
dXNlIHdlIG5lZWQgdG8gZGVjaWRlIGlmIHdlCkBAIC0xMjg3LDE0ICsxMjg5LDE0IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICAgICAgICAgIG1heFZhbHVlID0gc3RkOjptaW4obWF4VmFsdWUs
IHJlbGF0aW9uc2hpcC5tYXhWYWx1ZU9mTGVmdCgpKTsKICAgICAgICAgICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBp
ZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBtaW5WYWx1ZSA9ICIsIG1pblZhbHVl
LCAiLCBtYXhWYWx1ZSA9ICIsIG1heFZhbHVlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgIGlmIChzdW1PdmVyZmxvd3M8aW50PihtaW5WYWx1ZSwgbm9k
ZS0+Y2hpbGQyKCktPmFzSW50MzIoKSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgIHN1bU92
ZXJmbG93czxpbnQ+KG1heFZhbHVlLCBub2RlLT5jaGlsZDIoKS0+YXNJbnQzMigpKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9u
UGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
IiAgICBJdCdzIGluIGJvdW5kcy5cbiIpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgZXhlY3V0ZU5vZGUoYmxvY2stPmF0KG5vZGVJbmRleCkpOwpAQCAtMTU0OCw3
ICsxNTUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCFyZWxhdGlvbnNoaXApCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYg
KERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgU2V0dGluZzogIiwgcmVsYXRpb25zaGlwLCAiICh0dGwgPSAi
LCB0aW1lVG9MaXZlLCAiKVxuIik7CiAKICAgICAgICAgYXV0byByZXN1bHQgPSByZWxhdGlvbnNo
aXBNYXAuYWRkKApAQCAtMTYwMiw3ICsxNjA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAgICAgaWYgKG90aGVyUmVsYXRpb25zaGlwLnZhZ3VlbmVzcygpIDwgcmVsYXRpb25zaGlwLnZh
Z3VlbmVzcygpCiAgICAgICAgICAgICAgICAgICAgICAgICAmJiBvdGhlclJlbGF0aW9uc2hpcC5y
aWdodCgpLT5pc0ludDMyQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgUmVs
YXRpb25zaGlwIG5ld1JlbGF0aW9uc2hpcCA9IHJlbGF0aW9uc2hpcC5maWx0ZXJDb25zdGFudChv
dGhlclJlbGF0aW9uc2hpcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSAm
JiBuZXdSZWxhdGlvbnNoaXAgIT0gcmVsYXRpb25zaGlwKQorICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2Ug
JiYgbmV3UmVsYXRpb25zaGlwICE9IHJlbGF0aW9uc2hpcCkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgICBSZWZpbmVkIHRvOiAiLCBuZXdSZWxhdGlvbnNoaXAsICIg
YmFzZWQgb24gIiwgb3RoZXJSZWxhdGlvbnNoaXAsICJcbiIpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgcmVsYXRpb25zaGlwID0gbmV3UmVsYXRpb25zaGlwOwogICAgICAgICAgICAgICAgICAg
ICB9CkBAIC0xNjE2LDcgKzE2MTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBp
ZiAob3RoZXJSZWxhdGlvbnNoaXAudmFndWVuZXNzKCkgPiByZWxhdGlvbnNoaXAudmFndWVuZXNz
KCkKICAgICAgICAgICAgICAgICAgICAgICAgICYmIG90aGVyUmVsYXRpb25zaGlwLnJpZ2h0KCkt
PmlzSW50MzJDb25zdGFudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGlvbnNo
aXAgbmV3UmVsYXRpb25zaGlwID0gb3RoZXJSZWxhdGlvbnNoaXAuZmlsdGVyQ29uc3RhbnQocmVs
YXRpb25zaGlwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlICYmIG5ld1Jl
bGF0aW9uc2hpcCAhPSBvdGhlclJlbGF0aW9uc2hpcCkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlICYm
IG5ld1JlbGF0aW9uc2hpcCAhPSBvdGhlclJlbGF0aW9uc2hpcCkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgICBSZWZpbmVkICIsIG90aGVyUmVsYXRpb25zaGlwLCAi
IHRvOiAiLCBuZXdSZWxhdGlvbnNoaXAsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
b3RoZXJSZWxhdGlvbnNoaXAgPSBuZXdSZWxhdGlvbnNoaXA7CiAgICAgICAgICAgICAgICAgICAg
IH0KQEAgLTE2MzksNyArMTY0MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBAeCA9PSBA
YyBhbmQgQHggIT0gQGQsIHdoZXJlIEBkID4gQGMsIHRoZW4gd2Ugd2FudCB0byB0dXJuIEB4ICE9
IEBkIGludG8gQHggPCBAZC4KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKHRpbWVUb0xp
dmUgJiYgb3RoZXJSZWxhdGlvbnNoaXAua2luZCgpID09IFJlbGF0aW9uc2hpcDo6RXF1YWwpIHsK
LSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHSW50
ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiICAgICAgQ29uc2lkZXJpbmc6ICIsIG90aGVyUmVsYXRpb25zaGlw
LCAiXG4iKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlOgpA
QCAtMTY3NSw3ICsxNjc3LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBib29sIG1lcmdlVG8oUmVs
YXRpb25zaGlwTWFwJiByZWxhdGlvbnNoaXBNYXAsIEJhc2ljQmxvY2sqIHRhcmdldCkKICAgICB7
Ci0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRp
bWl6YXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJN
ZXJnaW5nIHRvICIsIHBvaW50ZXJEdW1wKHRhcmdldCksICI6XG4iKTsKICAgICAgICAgICAgIGRh
dGFMb2coIiAgICBJbmNvbWluZzogIiwgbGlzdER1bXAoc29ydGVkUmVsYXRpb25zaGlwcyhyZWxh
dGlvbnNoaXBNYXApKSwgIlxuIik7CiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQXQgaGVhZDog
IiwgbGlzdER1bXAoc29ydGVkUmVsYXRpb25zaGlwcyhtX3JlbGF0aW9uc2hpcHNBdEhlYWRbdGFy
Z2V0XSkpLCAiXG4iKTsKQEAgLTE2OTcsNyArMTY5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgZm9yIChSZWxhdGlvbnNoaXAgcmVsYXRpb25zaGlwIDogZW50cnkudmFsdWUpIHsKICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlbGF0aW9uc2hpcC5sZWZ0KCkgPT0gZW50cnkua2V5
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTGl2ZShyZWxhdGlvbnNoaXAucmlnaHQoKSkp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICBQcm9wYWdhdGlu
ZyAiLCByZWxhdGlvbnNoaXAsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVz
LmFwcGVuZChyZWxhdGlvbnNoaXApOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNzM0LDEy
ICsxNzM2LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBWZWN0b3I8UmVsYXRpb25zaGlwPiBt
ZXJnZWRSZWxhdGlvbnNoaXBzOwogICAgICAgICAgICAgZm9yIChSZWxhdGlvbnNoaXAgdGFyZ2V0
UmVsYXRpb25zaGlwIDogZW50cnkudmFsdWUpIHsKICAgICAgICAgICAgICAgICBmb3IgKFJlbGF0
aW9uc2hpcCBzb3VyY2VSZWxhdGlvbnNoaXAgOiBpdGVyLT52YWx1ZSkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR0ludGVnZXJS
YW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgIE1lcmdpbmcgIiwgdGFyZ2V0UmVsYXRpb25zaGlwLCAiIGFuZCAi
LCBzb3VyY2VSZWxhdGlvbnNoaXAsICI6XG4iKTsKICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0
UmVsYXRpb25zaGlwLm1lcmdlKAogICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlUmVsYXRp
b25zaGlwLAogICAgICAgICAgICAgICAgICAgICAgICAgWyZdIChSZWxhdGlvbnNoaXAgbmV3UmVs
YXRpb25zaGlwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlv
blBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBHb3QgIiwgbmV3UmVsYXRpb25zaGlwLCAiXG4iKTsKIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChuZXdSZWxhdGlvbnNoaXAucmlnaHQoKS0+aXNJbnQzMkNv
bnN0YW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTW92
SGludFJlbW92YWxQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01vdkhp
bnRSZW1vdmFsUGhhc2UuY3BwCmluZGV4IDlmMzQ0YjM3ZGNkODdmYzE0YzBhMTJkZTRmMTA3MDhi
NmQ3NDhmODYuLjFhZWQyYzE4NTZlMmJmNjJjZWY3YTNjNDZkYTI0MjE5MzJmNWY3MDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTW92SGludFJlbW92YWxQaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNb3ZIaW50UmVtb3ZhbFBoYXNl
LmNwcApAQCAtNDIsNyArNDIsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
IG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIERGR01vdkhp
bnRSZW1vdmFsUGhhc2VJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFs
c2U7Cit9CiAKIGNsYXNzIE1vdkhpbnRSZW1vdmFsUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogcHVi
bGljOgpAQCAtNTUsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBydW4oKQogICAg
IHsKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR01vdkhpbnRSZW1vdmFs
UGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVm
b3JlIE1vdkhpbnQgcmVtb3ZhbDpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAg
ICAgICAgIH0KQEAgLTY5LDcgKzcxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGhh
bmRsZUJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgIGlmIChERkdNb3ZIaW50UmVtb3ZhbFBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICBkYXRhTG9nKCJIYW5kaW5nIGJsb2NrICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwg
IlxuIik7CiAgICAgICAgIAogICAgICAgICAvLyBBIE1vdkhpbnQgaXMgdW5uZWNlc3NhcnkgaWYg
dGhlIGxvY2FsIGRpZXMgYmVmb3JlIGl0IGlzIHVzZWQuIFdlIGFuc3dlciB0aGlzIHF1ZXN0aW9u
IGJ5CkBAIC04Nyw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9zdGF0ZS5v
cGVyYW5kKHJlZykgPSBjdXJyZW50RXBvY2g7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgCi0g
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHTW92SGludFJlbW92YWxQaGFzZUlu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIExvY2FsczogIiwgbV9z
dGF0ZSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICAvLyBBc3N1bWUgdGhhdCBibG9ja3MgYWZ0
ZXIgdXMgZXhpdC4KQEAgLTk4LDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IE1vdkhpbnQpIHsKICAgICAgICAgICAgICAgICBF
cG9jaCBsb2NhbEVwb2NoID0gbV9zdGF0ZS5vcGVyYW5kKG5vZGUtPnVubGlua2VkTG9jYWwoKSk7
Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR01v
dkhpbnRSZW1vdmFsUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiICAgIEF0ICIsIG5vZGUsICI6IGN1cnJlbnQgPSAiLCBjdXJyZW50RXBvY2gsICIs
IGxvY2FsID0gIiwgbG9jYWxFcG9jaCwgIlxuIik7CiAgICAgICAgICAgICAgICAgaWYgKCFsb2Nh
bEVwb2NoIHx8IGxvY2FsRXBvY2ggPT0gY3VycmVudEVwb2NoKSB7CiAgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKFpvbWJpZUhpbnQpOwpAQCAtMTIwLDcgKzEy
Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFtX3N0YXRlLm9w
ZXJhbmQocmVnKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR01vdkhpbnRSZW1vdmFsUGhhc2VJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgS2ls
bGVkIG9wZXJhbmQgYXQgIiwgbm9kZSwgIjogIiwgcmVnLCAiXG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fc3RhdGUub3BlcmFuZChyZWcpID0gY3VycmVudEVwb2NoOwogICAgICAgICAg
ICAgICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCmluZGV4IDdhOWM1MTU2N2Iz
NDdmZGQzYzhjM2NkOTFiZjA0Yjg5ZGY4MjI1MjguLjNmZGE3ZDQwYjA4NmJkMTljM2MyOGIwYTYw
ZGFkMTU3NWVmNjBjMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcApAQCAtNDgsNyArNDgs
OSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKLWJv
b2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIERGR09iamVjdEFsbG9jYXRpb25TaW5raW5n
UGhhc2VJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAK
IC8vIEluIG9yZGVyIHRvIHNpbmsgb2JqZWN0IGN5Y2xlcywgd2UgdXNlIGEgcG9pbnRzLXRvIGFu
YWx5c2lzIGNvdXBsZWQKIC8vIHdpdGggYW4gZXNjYXBlIGFuYWx5c2lzLiBUaGlzIGFuYWx5c2lz
IGlzIGFjdHVhbGx5IHNpbWlsYXIgdG8gYW4KQEAgLTcxNyw3ICs3MTksNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmICghcGVyZm9ybVNpbmtpbmcoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlv
blNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJH
cmFwaCBhZnRlciBlbGltaW5hdGlvbjpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7
CiAgICAgICAgIH0KQEAgLTc0Miw3ICs3NDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgZ3Jh
cGhCZWZvcmVTaW5raW5nID0gb3V0LnRvQ1N0cmluZygpOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhh
c2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3Jl
IGVsaW1pbmF0aW9uOlxuIik7CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAg
fQpAQCAtNzUyLDcgKzc1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghZGV0ZXJtaW5lU2lu
a0NhbmRpZGF0ZXMoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAo
dmVyYm9zZSkgeworICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUlu
dGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDog
bV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiSGVhcCBhdCBoZWFkIG9mICIsICpibG9jaywgIjogXG4iLCBtX2hlYXBBdEhlYWRbYmxvY2td
KTsKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJIZWFwIGF0IHRhaWwgb2YgIiwgKmJsb2NrLCAi
OiBcbiIsIG1faGVhcEF0VGFpbFtibG9ja10pOwpAQCAtNzczLDcgKzc3NSw3IEBAIHByaXZhdGU6
CiAKICAgICAgICAgYm9vbCBjaGFuZ2VkOwogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNl
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiRG9pbmcgaXRlcmF0
aW9uIG9mIGVzY2FwZSBhbmFseXNpcy5cbiIpOwogICAgICAgICAgICAgY2hhbmdlZCA9IGZhbHNl
OwogCkBAIC0xMTk4LDcgKzEyMDAsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAobV9zaW5rQ2Fu
ZGlkYXRlcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gaGFzVW5lc2NhcGVkUmVhZHM7
CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9u
U2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJDYW5k
aWRhdGVzOiAiLCBsaXN0RHVtcChtX3NpbmtDYW5kaWRhdGVzKSwgIlxuIik7CiAKICAgICAgICAg
Ly8gQ3JlYXRlIHRoZSBtYXRlcmlhbGl6YXRpb24gbm9kZXMKQEAgLTE3NjUsNyArMTc2Nyw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgaWYgKERGR09iamVjdEFsbG9jYXRpb25TaW5r
aW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coIkxv
Y2FsIG1hcHBpbmcgYXQgIiwgcG9pbnRlckR1bXAoYmxvY2spLCAiOiAiLCBtYXBEdW1wKG1fbG9j
YWxNYXBwaW5nKSwgIlxuIik7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygiTG9jYWwgbWF0ZXJp
YWxpemF0aW9ucyBhdCAiLCBwb2ludGVyRHVtcChibG9jayksICI6ICIsIG1hcER1bXAobV9lc2Nh
cGVlVG9NYXRlcmlhbGl6YXRpb24pLCAiXG4iKTsKICAgICAgICAgICAgIH0KQEAgLTE3ODEsNyAr
MTc4Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIG1fbG9jYWxNYXBwaW5nLnNl
dChsb2NhdGlvbiwgbV9ib3R0b20pOwogCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3NpbmtD
YW5kaWRhdGVzLmNvbnRhaW5zKG5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9u
U2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiRm9yIHNpbmsgY2FuZGlkYXRlICIsIG5vZGUsICIgZm91bmQgbG9jYXRpb24g
IiwgbG9jYXRpb24sICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsCkBA
IC0xNzk2LDcgKzE3OTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBwb3B1bGF0
ZU1hdGVyaWFsaXphdGlvbihibG9jaywgbWF0ZXJpYWxpemF0aW9uLCBlc2NhcGVlKTsKICAgICAg
ICAgICAgICAgICAgICAgbV9lc2NhcGVlVG9NYXRlcmlhbGl6YXRpb24uc2V0KGVzY2FwZWUsIG1h
dGVyaWFsaXphdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dChub2RlSW5kZXgsIG1hdGVyaWFsaXphdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtp
bmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiTWF0ZXJpYWxpemluZyAiLCBlc2NhcGVlLCAiID0+ICIsIG1hdGVyaWFsaXphdGlvbiwgIiBh
dCAiLCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTE4NTEsNyArMTg1Myw3
IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGRvTG93ZXIgPSB0cnVlOwog
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ3JlYXRpbmcgaGludCB3
aXRoIHZhbHVlICIsIG5vZGVWYWx1ZSwgIiBiZWZvcmUgIiwgbm9kZSwgIlxuIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQoCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZUluZGV4ICsgMSwKQEAgLTE5OTQsNyArMTk5Niw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGluc2VydE9TUkhpbnRzRm9yVXBkYXRlKHVuc2lnbmVkIG5vZGVJbmRleCwg
Tm9kZU9yaWdpbiBvcmlnaW4sIGJvb2wmIGNhbkV4aXQsIEF2YWlsYWJpbGl0eU1hcCYgYXZhaWxh
YmlsaXR5LCBOb2RlKiBlc2NhcGVlLCBOb2RlKiBtYXRlcmlhbGl6YXRpb24pCiAgICAgewotICAg
ICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtp
bmdQaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJJbnNlcnRp
bmcgT1NSIGhpbnRzIGF0ICIsIG9yaWdpbiwgIjpcbiIpOwogICAgICAgICAgICAgZGF0YUxvZygi
ICAgIEVzY2FwZWU6ICIsIGVzY2FwZWUsICJcbiIpOwogICAgICAgICAgICAgZGF0YUxvZygiICAg
IE1hdGVyaWFsaXphdGlvbjogIiwgbWF0ZXJpYWxpemF0aW9uLCAiXG4iKTsKQEAgLTIxNjcsNyAr
MjE2OSw3IEBAIHByaXZhdGU6CiAKICAgICBOb2RlKiBjcmVhdGVSZWNvdmVyeShCYXNpY0Jsb2Nr
KiBibG9jaywgUHJvbW90ZWRIZWFwTG9jYXRpb24gbG9jYXRpb24sIE5vZGUqIHdoZXJlLCBib29s
JiBjYW5FeGl0KQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdP
YmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICBkYXRhTG9nKCJSZWNvdmVyaW5nICIsIGxvY2F0aW9uLCAiIGF0ICIsIHdoZXJlLCAiXG4iKTsK
ICAgICAgICAgQVNTRVJUKGxvY2F0aW9uLmJhc2UoKS0+aXNQaGFudG9tQWxsb2NhdGlvbigpKTsK
ICAgICAgICAgTm9kZSogYmFzZSA9IGdldE1hdGVyaWFsaXphdGlvbihibG9jaywgbG9jYXRpb24u
YmFzZSgpKTsKQEAgLTIxNzUsNyArMjE3Nyw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgTm9kZU9y
aWdpbiBvcmlnaW4gPSB3aGVyZS0+b3JpZ2luLndpdGhTZW1hbnRpYyhiYXNlLT5vcmlnaW4uc2Vt
YW50aWMpOwogCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHT2JqZWN0QWxs
b2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxv
ZygiQmFzZSBpcyAiLCBiYXNlLCAiIGFuZCB2YWx1ZSBpcyAiLCB2YWx1ZSwgIlxuIik7CiAKICAg
ICAgICAgaWYgKGJhc2UtPmlzUGhhbnRvbUFsbG9jYXRpb24oKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwCmluZGV4
IGRjYzFjOTc2OTg2ZmVkNmUzZTlkY2VkY2FmNWU5NDA1YjlkM2I4ZGEuLjNjMDg4YTZhNGE1ZWU2
NTA5MDYyMmQ2NjAzMmQ0ZjE3MTAyOTM3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUGhhbnRvbUluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BoYW50b21JbnNlcnRpb25QaGFzZS5jcHAKQEAgLTQzLDcgKzQzLDkg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3BhY2UgewogCi1ib29s
IHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2VJbnRl
cm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIFBo
YW50b21JbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJsaWM6CkBAIC02MCw3ICs2
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gU2V0TG9jYWxzIGV4ZWN1dGUsIHdoaWNoIGlzIGlu
YWNjdXJhdGUuIFRoYXQgY2F1c2VzIHVzIHRvIGluc2VydCB0b28gZmV3IFBoYW50b21zLgogICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9yZWZDb3VudFN0YXRl
ID09IEV4YWN0UmVmQ291bnQpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAg
ICAgICAgaWYgKERGR1BoYW50b21JbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAg
ICAgICAgICAgICBkYXRhTG9nKCJHcmFwaCBiZWZvcmUgUGhhbnRvbSBpbnNlcnRpb246XG4iKTsK
ICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwogICAgICAgICB9CkBAIC03MCw3ICs3Miw3IEBA
IHB1YmxpYzoKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tz
SW5OYXR1cmFsT3JkZXIoKSkKICAgICAgICAgICAgIGhhbmRsZUJsb2NrKGJsb2NrKTsKICAgICAg
ICAgCi0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdQaGFudG9tSW5zZXJ0
aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGgg
YWZ0ZXIgUGhhbnRvbSBpbnNlcnRpb246XG4iKTsKICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgp
OwogICAgICAgICB9CkBAIC0xMDEsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdW5zaWdu
ZWQgbGFzdEV4aXRpbmdJbmRleCA9IDA7CiAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4
ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAgICAgICAg
ICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR1BoYW50b21JbnNlcnRpb25QaGFzZUludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nICIsIG5vZGUs
ICJcbiIpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsK
QEAgLTEzOSw3ICsxNDEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IGFscmVhZHlLaWxsZWQ7CiAKICAgICAgICAgICAgIGF1dG8gcHJvY2Vzc0tpbGxlZE9wZXJhbmQg
PSBbJl0gKFZpcnR1YWxSZWdpc3RlciByZWcpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9z
ZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHUGhhbnRvbUluc2VydGlvblBoYXNlSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBLaWxsZWQgb3BlcmFu
ZDogIiwgcmVnLCAiXG4iKTsKIAogICAgICAgICAgICAgICAgIC8vIEFscmVhZHkgaGFuZGxlZCBm
cm9tIFNldExvY2FsLgpAQCAtMTU1LDcgKzE1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgaWYgKGtpbGxlZE5vZGUtPmVwb2NoKCkgPT0gY3VycmVudEVwb2NoKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2UpIHsKKyAgICAgICAgICAgICAgICBpZiAoREZHUGhhbnRvbUluc2VydGlvblBoYXNlSW50
ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAg
ICAgICAgICAgICAgICAgICIgICAgSW5zZXJ0aW5nIFBoYW50b20gb24gIiwga2lsbGVkTm9kZSwg
IiBhZnRlciAiLAogICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2stPmF0KGxhc3RFeGl0aW5n
SW5kZXgpLCAiXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKaW5kZXggZDNkYTU1MjdkNjNiYzA3Njk4MGVkNDA0ZDU3
MzA2NWQ0YTg1MTZiYS4uMTRjZWQyYWE4ZDgyYzZlYmNiMzVlOTRjYTZmYTJlMmEzZTMzODRmYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQ
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1Npbmtp
bmdQaGFzZS5jcHAKQEAgLTQyLDcgKzQyLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBE
RkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJv
c2UgPSBmYWxzZTsKK30KIAogY2xhc3MgUHV0U3RhY2tTaW5raW5nUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogcHVibGljOgpAQCAtNzEsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIHRoZSBz
dGFjay4gSXQncyBub3QgY2xlYXIgdG8gbWUgaWYgdGhpcyBpcyBpbXBvcnRhbnQgb3Igbm90Lgog
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1Mjk2
CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHUHV0U3Rh
Y2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygi
R3JhcGggYmVmb3JlIFB1dFN0YWNrIHNpbmtpbmc6XG4iKTsKICAgICAgICAgICAgIG1fZ3JhcGgu
ZHVtcCgpOwogICAgICAgICB9CkBAIC0xMDUsNyArMTA3LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgIE9wZXJhbmRzPGJvb2w+IGxpdmUgPSBsaXZlQXRUYWlsW2Jsb2NrXTsKICAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRleCA9IGJsb2NrLT5zaXplKCk7IG5vZGVJbmRl
eC0tOykgewogICAgICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJ
bmRleCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAg
ICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkxpdmUgYXQgIiwgbm9kZSwgIjogIiwgbGl2ZSwg
IlxuIik7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBWZWN0b3I8
VmlydHVhbFJlZ2lzdGVyLCA0PiByZWFkczsKQEAgLTExMyw3ICsxMTUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgICAgIGF1dG8gZXNjYXBlSGFuZGxlciA9IFsmXSAoVmlydHVhbFJlZ2lz
dGVyIG9wZXJhbmQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzSGVh
ZGVyKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREZH
UHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgIiwgb3BlcmFuZCwgIiBpcyBsaXZlIGF0ICIsIG5vZGUs
ICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVhZHMuYXBwZW5kKG9wZXJhbmQpOwog
ICAgICAgICAgICAgICAgICAgICB9OwpAQCAtMjMwLDcgKzIzMiw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBPcGVyYW5kczxGbHVzaEZvcm1hdD4gZGVmZXJyZWQgPSBkZWZlcnJlZEF0SGVh
ZFtibG9ja107CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZm9yIChOb2RlKiBu
b2RlIDogKmJsb2NrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkRlZmVycmVkIGF0ICIsIG5vZGUs
ICI6IiwgZGVmZXJyZWQsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gR2V0U3RhY2spIHsKQEAgLTI3Nyw3ICsyNzksNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgIGF1dG8gZXNjYXBlSGFuZGxlciA9IFsmXSAoVmlydHVhbFJlZ2lz
dGVyIG9wZXJhbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2luZ1BoYXNlSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiRm9yICIsIG5v
ZGUsICIgZXNjYXBpbmcgIiwgb3BlcmFuZCwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAob3BlcmFuZC5pc0hlYWRlcigpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTMwMywxMyArMzA1LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNz
b3JzKCkpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IGRlZmVycmVkLnNp
emUoKTsgaS0tOykgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmlu
ZyAiLCBWaXJ0dWFsUmVnaXN0ZXIoZGVmZXJyZWQub3BlcmFuZEZvckluZGV4KGkpKSwgIiBhdCAi
LCBwb2ludGVyRHVtcChibG9jayksICItPiIsIHBvaW50ZXJEdW1wKHN1Y2Nlc3NvciksICI6ICIs
IGRlZmVycmVkW2ldLCAiIGFuZCAiLCBkZWZlcnJlZEF0SGVhZFtzdWNjZXNzb3JdW2ldLCAiIG1l
cmdlcyB0byAiKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWRBdEhlYWRbc3Vj
Y2Vzc29yXVtpXSA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2UoZGVmZXJyZWRB
dEhlYWRbc3VjY2Vzc29yXVtpXSwgZGVmZXJyZWRbaV0pOwogICAgICAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coZGVmZXJyZWRBdEhlYWRbc3VjY2Vz
c29yXVtpXSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9
CkBAIC0zODcsNyArMzg5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGlmICghaXNDb25j
cmV0ZShmb3JtYXQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChERkdQdXRTdGFj
a1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKCJBZGRpbmcgUGhpIGZvciAiLCBvcGVyYW5kLCAiIGF0ICIsIHBvaW50ZXJEdW1wKGJsb2Nr
KSwgIlxuIik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTm9kZSogcGhpTm9k
ZSA9IG1fZ3JhcGguYWRkTm9kZShTcGVjSGVhcFRvcCwgUGhpLCBibG9jay0+YXQoMCktPm9yaWdp
bi53aXRoSW52YWxpZEV4aXQoKSk7CkBAIC00MTEsNyArNDEzLDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgIG1hcHBpbmcub3BlcmFuZChvcGVyYW5kKSA9IGRlZi0+dmFsdWUoKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJNYXBwaW5nIGF0IHRvcCBvZiAiLCBwb2ludGVyRHVtcChibG9j
ayksICI6ICIsIG1hcHBpbmcsICJcbiIpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3Ig
KFNTQUNhbGN1bGF0b3I6OkRlZiogcGhpRGVmIDogc3NhQ2FsY3VsYXRvci5waGlzRm9yQmxvY2so
YmxvY2spKSB7CkBAIC00MTksNyArNDIxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnQoMCwgcGhpRGVmLT52YWx1ZSgpKTsK
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgTWFwcGluZyAiLCBvcGVyYW5kLCAiIHRvICIs
IHBoaURlZi0+dmFsdWUoKSwgIlxuIik7CiAgICAgICAgICAgICAgICAgbWFwcGluZy5vcGVyYW5k
KG9wZXJhbmQpID0gcGhpRGVmLT52YWx1ZSgpOwogICAgICAgICAgICAgfQpAQCAtNDI3LDcgKzQy
OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGRlZmVycmVkID0gZGVmZXJyZWRBdEhlYWRbYmxv
Y2tdOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXggPSAwOyBub2RlSW5kZXgg
PCBibG9jay0+c2l6ZSgpOyArK25vZGVJbmRleCkgewogICAgICAgICAgICAgICAgIE5vZGUqIG5v
ZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiRGVmZXJyZWQgYXQgIiwgbm9kZSwg
IjoiLCBkZWZlcnJlZCwgIlxuIik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
c3dpdGNoIChub2RlLT5vcCgpKSB7CkBAIC00MzUsNyArNDM3LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgICAgICBTdGFja0FjY2Vzc0RhdGEqIGRhdGEgPSBub2RlLT5zdGFja0FjY2Vzc0Rh
dGEoKTsKICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBkYXRh
LT5sb2NhbDsKICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQub3BlcmFuZChvcGVyYW5kKSA9
IGRhdGEtPmZvcm1hdDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICAgICAgICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgTWFwcGluZyAiLCBvcGVyYW5k
LCAiIHRvICIsIG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgIiBhdCAiLCBub2RlLCAiXG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgbWFwcGluZy5vcGVyYW5kKG9wZXJhbmQpID0gbm9kZS0+Y2hpbGQx
KCkubm9kZSgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTQ3MCw3ICs0NzIsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZGVmYXVsdDogewog
ICAgICAgICAgICAgICAgICAgICBhdXRvIGVzY2FwZUhhbmRsZXIgPSBbJl0gKFZpcnR1YWxSZWdp
c3RlciBvcGVyYW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkZvciAiLCBu
b2RlLCAiIGVzY2FwaW5nICIsIG9wZXJhbmQsICJcbiIpOwogCiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAob3BlcmFuZC5pc0hlYWRlcigpKQpAQCAtNDg0LDcgKzQ4Niw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBHb3R0YSBpbnNlcnQgYSBQdXRTdGFjay4KLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERG
R1B1dFN0YWNrU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiSW5zZXJ0aW5nIGEgUHV0U3RhY2sgZm9yICIsIG9wZXJhbmQs
ICIgYXQgIiwgbm9kZSwgIlxuIik7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGlu
Y29taW5nID0gbWFwcGluZy5vcGVyYW5kKG9wZXJhbmQpOwpAQCAtNTIzLDcgKzUyNSw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICAgICAgTm9kZSogcGhpTm9kZSA9IHBoaURlZi0+dmFsdWUo
KTsKICAgICAgICAgICAgICAgICAgICAgU1NBQ2FsY3VsYXRvcjo6VmFyaWFibGUqIHZhcmlhYmxl
ID0gcGhpRGVmLT52YXJpYWJsZSgpOwogICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgb3BlcmFuZCA9IGluZGV4VG9PcGVyYW5kW3ZhcmlhYmxlLT5pbmRleCgpXTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdQdXRT
dGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiQ3JlYXRpbmcgVXBzaWxvbiBmb3IgIiwgb3BlcmFuZCwgIiBhdCAiLCBwb2lu
dGVyRHVtcChibG9jayksICItPiIsIHBvaW50ZXJEdW1wKHN1Y2Nlc3NvckJsb2NrKSwgIlxuIik7
CiAgICAgICAgICAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdCA9IGRlZmVycmVkQXRIZWFk
W3N1Y2Nlc3NvckJsb2NrXS5vcGVyYW5kKG9wZXJhbmQpOwogICAgICAgICAgICAgICAgICAgICBE
RkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIGlzQ29uY3JldGUoZm9ybWF0KSk7CkBAIC01Njgs
NyArNTcwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhh
c2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYWZ0ZXIg
UHV0U3RhY2sgc2lua2luZzpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJy
aWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggM2EyYTcxNzJhZDczZDZhM2UwMTA3Mjky
ZTViOTcwNTQ5NDdmOGYxYS4uYjVlMmMzNTBiMTgxZjliMDYzOTMyMTVhNDJhYWFkNzZiNjVlZDg0
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTQzLDcgKzQzLDkgQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxz
ZTsKK25hbWVzcGFjZSBERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsIHsKK3N0
YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogZW51bSBjbGFzcyBQaGFzZU1v
ZGUgewogICAgIC8vIERvZXMgb25seSBhIGxvY2FsIGFuYWx5c2lzIGZvciBzdG9yZSBiYXJyaWVy
IGluc2VydGlvbiBhbmQgYXNzdW1lcyB0aGF0IHBvaW50ZXJzIGxpdmUKQEAgLTc1LDcgKzc3LDcg
QEAgcHVibGljOgogICAgIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJi
b3NlKSB7CisgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFs
Ojp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJTdGFydGluZyBzdG9yZSBiYXJyaWVy
IGluc2VydGlvbjpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0K
QEAgLTE2Nyw3ICsxNjksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGJvb2wgaGFuZGxlQmxv
Y2soQmFzaWNCbG9jayogYmxvY2spCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkgeworICAg
ICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkg
ewogICAgICAgICAgICAgZGF0YUxvZygiRGVhbGluZyB3aXRoIGJsb2NrICIsIHBvaW50ZXJEdW1w
KGJsb2NrKSwgIlxuIik7CiAgICAgICAgICAgICBpZiAocmVhbGx5SW5zZXJ0QmFycmllcnMoKSkK
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgUmVhbGx5IGluc2VydGluZyBiYXJyaWVycy5c
biIpOwpAQCAtMjA2LDcgKzIwOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGZvciAobV9ub2RlSW5k
ZXggPSAwOyBtX25vZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbV9ub2RlSW5kZXgpIHsKICAg
ICAgICAgICAgIG1fbm9kZSA9IGJsb2NrLT5hdChtX25vZGVJbmRleCk7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICBpZiAoREZHU3RvcmVCYXJy
aWVySW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgIGRh
dGFMb2coCiAgICAgICAgICAgICAgICAgICAgICIgICAgIiwgbV9jdXJyZW50RXBvY2gsICI6IExv
b2tpbmcgYXQgbm9kZSAiLCBtX25vZGUsICIgd2l0aCBjaGlsZHJlbjogIik7CiAgICAgICAgICAg
ICAgICAgQ29tbWFQcmludGVyIGNvbW1hOwpAQCAtMzQ4LDcgKzM1MCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5z
ZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2co
CiAgICAgICAgICAgICAgICAgICAgICIgICAgIiwgbV9jdXJyZW50RXBvY2gsICI6IERvbmUgd2l0
aCBub2RlICIsIG1fbm9kZSwgIiAoIiwgbV9ub2RlLT5lcG9jaCgpLAogICAgICAgICAgICAgICAg
ICAgICAiKSB3aXRoIGNoaWxkcmVuOiAiKTsKQEAgLTM4MCw3ICszODIsNyBAQCBwcml2YXRlOgog
ICAgIAogICAgIHZvaWQgY29uc2lkZXJCYXJyaWVyKEVkZ2UgYmFzZSwgRWRnZSBjaGlsZCkKICAg
ICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5z
ZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICAg
ICAgQ29uc2lkZXJpbmcgYWRkaW5nIGJhcnJpZXIgIiwgYmFzZSwgIiA9PiAiLCBjaGlsZCwgIlxu
Iik7CiAgICAgICAgIAogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIGEgc3RvcmUgYmFycmllciBp
ZiB0aGUgY2hpbGQgaXMgZ3VhcmFudGVlZCB0byBub3QgYmUgYSBjZWxsLgpAQCAtMzg5LDcgKzM5
MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBEb24ndCB0cnkgdG9vIGhhcmQgYmVjYXVz
ZSBpdCdzIHRvbyBleHBlbnNpdmUgdG8gcnVuIEFJLgogICAgICAgICAgICAgaWYgKGNoaWxkLT5o
YXNDb25zdGFudCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFjaGlsZC0+YXNKU1ZhbHVlKCku
aXNDZWxsKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAg
ICAgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICAgICAgUmVqZWN0
aW5nIGJlY2F1c2Ugb2YgY29uc3RhbnQgdHlwZS5cbiIpOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtNDAwLDcgKzQwMiw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50MzI6CiAgICAgICAgICAgICAgICAgY2Fz
ZSBOb2RlUmVzdWx0SW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0Qm9vbGVh
bjoKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAg
IGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICAgICAgUmVqZWN0aW5nIGJlY2F1
c2Ugb2YgcmVzdWx0IHR5cGUuXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CkBAIC00MTQsNyArNDE2LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIC8vIEdvIGludG8gcmFnZSBtb2RlIHRvIGVsaW1pbmF0ZSBhbnkgY2hhbmNlIG9mIGEg
YmFycmllciB3aXRoIGEgbm9uLWNlbGwgY2hpbGQuIFdlCiAgICAgICAgICAgICAvLyBjYW4gYWZm
b3JkIHRvIGtlZXAgYXJvdW5kIEFJIGluIEdsb2JhbCBtb2RlLgogICAgICAgICAgICAgaWYgKCFt
X2ludGVycHJldGVyLT5uZWVkc1R5cGVDaGVjayhjaGlsZCwgflNwZWNDZWxsKSkgewotICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgICAgICAgICBSZWplY3RpbmcgYmVjYXVzZSBvZiBBSSB0eXBlLlxuIik7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtNDI2LDcgKzQyOCw3IEBA
IHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBjb25zaWRlckJhcnJpZXIoRWRnZSBiYXNlKQogICAg
IHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNl
cnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgICAg
ICBDb25zaWRlcmluZyBhZGRpbmcgYmFycmllciBvbiAiLCBiYXNlLCAiXG4iKTsKICAgICAgICAg
CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgYSBzdG9yZSBiYXJyaWVyIGlmIHRoZSBlcG9jaCBv
ZiB0aGUgYmFzZSBpcyBpZGVudGljYWwgdG8gdGhlIGN1cnJlbnQKQEAgLTQzNCwxMiArNDM2LDEy
IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGJlIGluIG5ld2dlbiwgb3Igd2UganVzdCByYW4gYSBi
YXJyaWVyIG9uIGl0IHNvIGl0J3MgZ3VhcmFudGVlZCB0byBiZSByZW1lbWJlcmVkCiAgICAgICAg
IC8vIGFscmVhZHkuCiAgICAgICAgIGlmIChiYXNlLT5lcG9jaCgpID09IG1fY3VycmVudEVwb2No
KSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdTdG9yZUJh
cnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRh
dGFMb2coIiAgICAgICAgICAgIFJlamVjdGluZyBiZWNhdXNlIGl0J3MgaW4gdGhlIGN1cnJlbnQg
ZXBvY2guXG4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICAgICAg
SW5zZXJ0aW5nIGJhcnJpZXIuXG4iKTsKICAgICAgICAgaW5zZXJ0QmFycmllcihtX25vZGVJbmRl
eCArIDEsIGJhc2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCmluZGV4IGUzYzUyYWNhOWRhMTNmY2Q4
M2MxOGUwMWI4NTZmOGE0ODA5ODllOTcuLmU5NzM5NTc3N2ZhOWUwZDgyNjUzZGM4Nzc4ZDJhMDIw
MGIwOTU5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJn
c0ZvcndhcmRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdW
YXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcApAQCAtNDAsNyArNDAsOSBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNl
OworbmFtZXNwYWNlIERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbCB7CitzdGF0aWMg
Y29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIFZhcmFyZ3NGb3J3YXJkaW5n
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogcHVibGljOgpAQCAtNTMsNyArNTUsNyBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9m
b3JtICE9IFNTQSk7CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBp
ZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAg
ICAgICBkYXRhTG9nKCJHcmFwaCBiZWZvcmUgdmFyYXJncyBmb3J3YXJkaW5nOlxuIik7CiAgICAg
ICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQpAQCAtODUsNyArODcsNyBAQCBwcml2
YXRlOgogICAgICAgICAvLyBXZSBleHBlY3QgY2FsbHMgaW50byB0aGlzIGZ1bmN0aW9uIHRvIGJl
IHJhcmUuIFNvLCB0aGlzIGlzIHdyaXR0ZW4gaW4gYSBzaW1wbGUgTyhuKSBtYW5uZXIuCiAgICAg
ICAgIAogICAgICAgICBOb2RlKiBjYW5kaWRhdGUgPSBibG9jay0+YXQoY2FuZGlkYXRlTm9kZUlu
ZGV4KTsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2Fy
ZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJIYW5kbGlu
ZyBjYW5kaWRhdGUgIiwgY2FuZGlkYXRlLCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZp
bmQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG5vZGUgaW4gdGhpcyBibG9jayB0byB1c2UgdGhlIGNh
bmRpZGF0ZSwgYW5kIGxvb2sgZm9yIGVzY2FwaW5nCkBAIC0xMjEsNyArMTIzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgICAgIHNhd0VzY2FwZSA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIGlmIChzYXdFc2NhcGUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdWYXJh
cmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgRXNjYXBlIGF0ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtMTM4LDcgKzE0MCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKICAgICAgICAgICAgIGNh
c2UgVGFpbENhbGxWYXJhcmdzSW5saW5lZENhbGxlcjoKICAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQxKCkgPT0gY2FuZGlkYXRlIHx8IG5vZGUtPmNoaWxkMigpID09IGNhbmRpZGF0ZSkg
ewotICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAg
aWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBFc2NhcGUgYXQgIiwgbm9kZSwgIlxuIik7CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBAIC0xNDgsNyAr
MTUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgU2V0
TG9jYWw6CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpID09IGNhbmRpZGF0ZSAm
JiBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+aXNMb2FkZWRGcm9tKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdWYXJh
cmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgRXNjYXBlIGF0ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtMTU2LDcgKzE1OCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgICAgIGlmIChtX2dyYXBoLnVzZXMobm9kZSwgY2FuZGlkYXRlKSkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR1ZhcmFyZ3NG
b3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBFc2NhcGUgYXQgIiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBAIC0xNjUsNyArMTY3LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGZvckFsbEtpbGxlZE9wZXJhbmRzKAogICAgICAgICAgICAgICAgIG1f
Z3JhcGgsIG5vZGUsIGJsb2NrLT50cnlBdChub2RlSW5kZXggKyAxKSwKICAgICAgICAgICAgICAg
ICBbJl0gKFZpcnR1YWxSZWdpc3RlciByZWcpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNl
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
S2lsbGluZyAiLCByZWcsICIgd2hpbGUgd2UgYXJlIGludGVyZXN0ZWQgaW4gIiwgbGlzdER1bXAo
cmVsZXZhbnRMb2NhbHMpLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHJlbGV2YW50TG9jYWxzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAocmVsZXZhbnRMb2NhbHNbaV0gPT0gcmVnKSB7CkBAIC0xNzYsNyArMTc4
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0p
OwogICAgICAgICB9Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHVmFyYXJn
c0ZvcndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygi
U2VsZWN0ZWQgbGFzdFVzZXJJbmRleCA9ICIsIGxhc3RVc2VySW5kZXgsICIsICIsIGJsb2NrLT5h
dChsYXN0VXNlckluZGV4KSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICAvLyBXZSdyZSBzdGls
bCBpbiBidXNpbmVzcy4gRGV0ZXJtaW5lIGlmIGJldHdlZW4gdGhlIGNhbmRpZGF0ZSBhbmQgdGhl
IGxhc3QgdXNlciB0aGVyZSBpcyBhbnkKQEAgLTE5Myw3ICsxOTUsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgY2FzZSBab21iaWVIaW50OgogICAgICAgICAgICAgY2FzZSBLaWxsU3RhY2s6CiAg
ICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50c0ludm9sdmVTdGFja1Nsb3QoY2FuZGlkYXRlLCBu
b2RlLT51bmxpbmtlZExvY2FsKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZUludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEludGVy
ZmVyZW5jZSBhdCAiLCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgICAgIH0KQEAgLTIwMSw3ICsyMDMsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgY2FzZSBQdXRTdGFjazoKICAgICAgICAgICAgICAgICBpZiAo
YXJndW1lbnRzSW52b2x2ZVN0YWNrU2xvdChjYW5kaWRhdGUsIG5vZGUtPnN0YWNrQWNjZXNzRGF0
YSgpLT5sb2NhbCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICAgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgSW50ZXJmZXJlbmNlIGF0
ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICAgICAgfQpAQCAtMjEwLDcgKzIxMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIFNl
dExvY2FsOgogICAgICAgICAgICAgY2FzZSBGbHVzaDoKICAgICAgICAgICAgICAgICBpZiAoYXJn
dW1lbnRzSW52b2x2ZVN0YWNrU2xvdChjYW5kaWRhdGUsIG5vZGUtPmxvY2FsKCkpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZH
VmFyYXJnc0ZvcndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiICAgIEludGVyZmVyZW5jZSBhdCAiLCBub2RlLCAiXG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAgLTIzMiw3ICsy
MzQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAg
ICAgICBOb09wQ2xvYmJlcml6ZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoZG9lc0ludGVyZmVy
ZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBJbnRlcmZlcmVuY2UgYXQgIiwgbm9kZSwg
IlxuIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBA
IC0yNDAsNyArMjQyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
Ly8gV2UgY2FuIG1ha2UgdGhpcyB3b3JrLgotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
aWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgIGRhdGFMb2coIiAgICBXaWxsIGRvIGZvcndhcmRpbmchXG4iKTsKICAgICAgICAgbV9jaGFu
Z2VkID0gdHJ1ZTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcC5jcHAKaW5kZXggOTAyMTFmZDk0YWM2MTVjNjVjNTFkMzRjN2Q1ODhmNGQ5M2Ix
MjljNy4uOWI5OTE0YWU4Yjg1NGQwMzUyOGE2Yjg4N2JhMjg4OGU3OWVkZGRhNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwLmNwcApAQCAtMzgsOCArMzgs
NiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKLXVzaW5nIG5hbWVzcGFj
ZSBCMzsKLQogQWJzdHJhY3RIZWFwOjpBYnN0cmFjdEhlYXAoQWJzdHJhY3RIZWFwKiBwYXJlbnQs
IGNvbnN0IGNoYXIqIGhlYXBOYW1lLCBwdHJkaWZmX3Qgb2Zmc2V0KQogICAgIDogbV9vZmZzZXQo
b2Zmc2V0KQogICAgICwgbV9oZWFwTmFtZShoZWFwTmFtZSkKQEAgLTc3LDcgKzc1LDcgQEAgdm9p
ZCBBYnN0cmFjdEhlYXA6OmNvbXB1dGUodW5zaWduZWQgYmVnaW4pCiAKICAgICBpZiAobV9jaGls
ZHJlbi5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gTXVzdCBzcGVjaWFsLWNhc2UgbGVhdmVzIHNv
IHRoYXQgdGhleSB1c2UganVzdCBvbmUgc2xvdCBvbiB0aGUgbnVtYmVyIGxpbmUuCi0gICAgICAg
IG1fcmFuZ2UgPSBIZWFwUmFuZ2UoYmVnaW4pOworICAgICAgICBtX3JhbmdlID0gQjM6OkhlYXBS
YW5nZShiZWdpbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg3LDcgKzg1LDcgQEAg
dm9pZCBBYnN0cmFjdEhlYXA6OmNvbXB1dGUodW5zaWduZWQgYmVnaW4pCiAgICAgICAgIGN1cnJl
bnQgPSBjaGlsZC0+cmFuZ2UoKS5lbmQoKTsKICAgICB9CiAKLSAgICBtX3JhbmdlID0gSGVhcFJh
bmdlKGJlZ2luLCBjdXJyZW50KTsKKyAgICBtX3JhbmdlID0gQjM6OkhlYXBSYW5nZShiZWdpbiwg
Y3VycmVudCk7CiB9CiAKIHZvaWQgQWJzdHJhY3RIZWFwOjpzaGFsbG93RHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKaW5kZXggNTkwM2E4ZTUzZWQzZDU3NTBlMWM1Y2Rm
MDExOGQyOTIyYzVjY2Y5Mi4uNDBjYzhiODE0YzMwZTQxYzUyY2JjNWM5N2JiMTg4ZTQ2MjBjM2E0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuY3BwCkBAIC00Nyw4ICs0Nyw2IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgRlRMIHsKIAotdXNpbmcgbmFtZXNwYWNlIEIzOwotCiBBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KCkKICAgICA6IHJvb3QobnVsbHB0ciwgImpz
Y1Jvb3QiKQogCkBAIC05Miw0OCArOTAsNDkgQEAgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6fkFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkoKQogewogfQogCi12b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRv
cnk6OmRlY29yYXRlTWVtb3J5KGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwgVmFsdWUqIHZhbHVl
KQordm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZU1lbW9yeShjb25zdCBBYnN0
cmFjdEhlYXAqIGhlYXAsIEIzOjpWYWx1ZSogdmFsdWUpCiB7CiAgICAgbV9oZWFwRm9yTWVtb3J5
LmFwcGVuZChIZWFwRm9yVmFsdWUoaGVhcCwgdmFsdWUpKTsKIH0KIAotdm9pZCBBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUNDYWxsUmVhZChjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAs
IFZhbHVlKiB2YWx1ZSkKK3ZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVDQ2Fs
bFJlYWQoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQogewogICAg
IG1faGVhcEZvckNDYWxsUmVhZC5hcHBlbmQoSGVhcEZvclZhbHVlKGhlYXAsIHZhbHVlKSk7CiB9
CiAKLXZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVDQ2FsbFdyaXRlKGNvbnN0
IEFic3RyYWN0SGVhcCogaGVhcCwgVmFsdWUqIHZhbHVlKQordm9pZCBBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5OjpkZWNvcmF0ZUNDYWxsV3JpdGUoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBCMzo6
VmFsdWUqIHZhbHVlKQogewogICAgIG1faGVhcEZvckNDYWxsV3JpdGUuYXBwZW5kKEhlYXBGb3JW
YWx1ZShoZWFwLCB2YWx1ZSkpOwogfQogCi12b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRl
Y29yYXRlUGF0Y2hwb2ludFJlYWQoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBWYWx1ZSogdmFs
dWUpCit2b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlUGF0Y2hwb2ludFJlYWQo
Y29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQogewogICAgIG1faGVh
cEZvclBhdGNocG9pbnRSZWFkLmFwcGVuZChIZWFwRm9yVmFsdWUoaGVhcCwgdmFsdWUpKTsKIH0K
IAotdm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZVBhdGNocG9pbnRXcml0ZShj
b25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIFZhbHVlKiB2YWx1ZSkKK3ZvaWQgQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeTo6ZGVjb3JhdGVQYXRjaHBvaW50V3JpdGUoY29uc3QgQWJzdHJhY3RIZWFwKiBo
ZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQogewogICAgIG1faGVhcEZvclBhdGNocG9pbnRXcml0ZS5h
cHBlbmQoSGVhcEZvclZhbHVlKGhlYXAsIHZhbHVlKSk7CiB9CiAKLXZvaWQgQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5jZVJlYWQoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBW
YWx1ZSogdmFsdWUpCit2b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlRmVuY2VS
ZWFkKGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwgQjM6OlZhbHVlKiB2YWx1ZSkKIHsKICAgICBt
X2hlYXBGb3JGZW5jZVJlYWQuYXBwZW5kKEhlYXBGb3JWYWx1ZShoZWFwLCB2YWx1ZSkpOwogfQog
Ci12b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlRmVuY2VXcml0ZShjb25zdCBB
YnN0cmFjdEhlYXAqIGhlYXAsIFZhbHVlKiB2YWx1ZSkKK3ZvaWQgQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeTo6ZGVjb3JhdGVGZW5jZVdyaXRlKGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwgQjM6OlZh
bHVlKiB2YWx1ZSkKIHsKICAgICBtX2hlYXBGb3JGZW5jZVdyaXRlLmFwcGVuZChIZWFwRm9yVmFs
dWUoaGVhcCwgdmFsdWUpKTsKIH0KIAotdm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNv
cmF0ZUZlbmNlZEFjY2Vzcyhjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIFZhbHVlKiB2YWx1ZSkK
K3ZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5jZWRBY2Nlc3MoY29uc3Qg
QWJzdHJhY3RIZWFwKiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQogewogICAgIG1faGVhcEZvckZl
bmNlZEFjY2Vzcy5hcHBlbmQoSGVhcEZvclZhbHVlKGhlYXAsIHZhbHVlKSk7CiB9CiAKIHZvaWQg
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6Y29tcHV0ZVJhbmdlc0FuZERlY29yYXRlSW5zdHJ1Y3Rp
b25zKCkKIHsKKyAgICB1c2luZyBuYW1lc3BhY2UgQjM7CiAgICAgcm9vdC5jb21wdXRlKCk7CiAK
ICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMaW5rLmNwcAppbmRleCA2NzZiMzkwOWM4N2QwZGE5MGM1ZDhkYjY2MDhhZDIxNGM1
OTg5NjY5Li43YzAxODFkOGQxZTRiOTM4ZGVlNzBhYjkxZDY2MmUwODRjMDI5MmE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKQEAgLTQxLDEwICs0MSw5IEBACiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAotdXNpbmcgbmFtZXNwYWNlIERGRzsKLQogdm9p
ZCBsaW5rKFN0YXRlJiBzdGF0ZSkKIHsKKyAgICB1c2luZyBuYW1lc3BhY2UgREZHOwogICAgIEdy
YXBoJiBncmFwaCA9IHN0YXRlLmdyYXBoOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZ3Jh
cGgubV9jb2RlQmxvY2s7CiAgICAgVk0mIHZtID0gZ3JhcGgubV92bTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcAppbmRleCAwMWMw
NmU3NWM1YjAwZWQxMDY4ZTdiNGNmMWE3MjhjNTk0Y2Y5MWUyLi5jNWE2YzY2OTc1OTJmNzk0MGVm
ZmE1NTYxOWVmMzNhMGQ1MDFkNmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiTWFya2luZ0NvbnN0cmFpbnRTZXQuaCIKIAogI2luY2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvVGltZVdpdGhEeW5hbWljQ2xvY2tU
eXBlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTA2LDE1ICsxMDcsMTUgQEAgdm9pZCBNYXJr
aW5nQ29uc3RyYWludFNldDo6ZGlkU3RhcnRNYXJraW5nKCkKICAgICBtX2l0ZXJhdGlvbiA9IDE7
CiB9CiAKLXZvaWQgTWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZChDU3RyaW5nIGFiYnJldmlhdGVk
TmFtZSwgQ1N0cmluZyBuYW1lLCBGdW5jdGlvbjx2b2lkKFNsb3RWaXNpdG9yJiwgY29uc3QgVmlz
aXRpbmdUaW1lb3V0Jik+IGZ1bmN0aW9uLCBDb25zdHJhaW50Vm9sYXRpbGl0eSB2b2xhdGlsaXR5
KQordm9pZCBNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKENTdHJpbmcgYWJicmV2aWF0ZWROYW1l
LCBDU3RyaW5nIG5hbWUsIDo6RnVuY3Rpb248dm9pZChTbG90VmlzaXRvciYsIGNvbnN0IFZpc2l0
aW5nVGltZW91dCYpPiBmdW5jdGlvbiwgQ29uc3RyYWludFZvbGF0aWxpdHkgdm9sYXRpbGl0eSkK
IHsKICAgICBhZGQoc3RkOjptYWtlX3VuaXF1ZTxNYXJraW5nQ29uc3RyYWludD4oV1RGTW92ZShh
YmJyZXZpYXRlZE5hbWUpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgdm9sYXRp
bGl0eSkpOwogfQogCiB2b2lkIE1hcmtpbmdDb25zdHJhaW50U2V0OjphZGQoCiAgICAgQ1N0cmlu
ZyBhYmJyZXZpYXRlZE5hbWUsIENTdHJpbmcgbmFtZSwKLSAgICBGdW5jdGlvbjx2b2lkKFNsb3RW
aXNpdG9yJiwgY29uc3QgVmlzaXRpbmdUaW1lb3V0Jik+IGV4ZWN1dGVGdW5jdGlvbiwKLSAgICBG
dW5jdGlvbjxkb3VibGUoU2xvdFZpc2l0b3ImKT4gcXVpY2tXb3JrRXN0aW1hdGVGdW5jdGlvbiwK
KyAgICA6OkZ1bmN0aW9uPHZvaWQoU2xvdFZpc2l0b3ImLCBjb25zdCBWaXNpdGluZ1RpbWVvdXQm
KT4gZXhlY3V0ZUZ1bmN0aW9uLAorICAgIDo6RnVuY3Rpb248ZG91YmxlKFNsb3RWaXNpdG9yJik+
IHF1aWNrV29ya0VzdGltYXRlRnVuY3Rpb24sCiAgICAgQ29uc3RyYWludFZvbGF0aWxpdHkgdm9s
YXRpbGl0eSkKIHsKICAgICBhZGQoc3RkOjptYWtlX3VuaXF1ZTxNYXJraW5nQ29uc3RyYWludD4o
V1RGTW92ZShhYmJyZXZpYXRlZE5hbWUpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGV4ZWN1dGVG
dW5jdGlvbiksIFdURk1vdmUocXVpY2tXb3JrRXN0aW1hdGVGdW5jdGlvbiksIHZvbGF0aWxpdHkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dD
aGlja2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlj
a2VuLmNwcAppbmRleCBhZTZlMTgzNWUyZTJlN2E0MzAwZjdkZmEwYTExYjI4NmQzZjFmYzMxLi5m
NzA2NjZkODk3MGY2YzczMzE1OTA3ODE3N2QzZWEzYzU1ODBhYjcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwCkBAIC0zMyw3
ICszMyw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCituYW1lc3BhY2UgU2hhZG93Q2hpY2tlbklu
dGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogdm9pZCBT
aGFkb3dDaGlja2VuOjpQYWNrZXQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKQEAg
LTg2LDcgKzg4LDcgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjpsb2coVk0mIHZtLCBFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFBhY2tldCYgcGFja2V0KQogCiB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0
ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlm
IChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZGF0YUxvZygiUnVu
bmluZyB1cGRhdGUgb246ICIsICp0aGlzLCAiXG4iKTsKICAgICAgICAgV1RGUmVwb3J0QmFja3Ry
YWNlKCk7CiAgICAgfQpAQCAtMTEyLDEzICsxMTQsMTMgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1
cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0g
ICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgZGF0YUxvZygiSGlnaGVzdCBwb2ludCBzaW5jZSBsYXN0IHRpbWU6ICIsIFJhd1Bv
aW50ZXIoaGlnaGVzdFBvaW50U2luY2VMYXN0VGltZSksICJcbiIpOwogICAgIAogICAgIHdoaWxl
ICghbV9zdGFjay5pc0VtcHR5KCkgJiYgKG1fc3RhY2subGFzdCgpLmZyYW1lIDwgaGlnaGVzdFBv
aW50U2luY2VMYXN0VGltZSB8fCBtX3N0YWNrLmxhc3QoKS5pc1RhaWxEZWxldGVkKSkKICAgICAg
ICAgbV9zdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYg
KFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiICAgIFJl
dmlzZWQgc3RhY2s6ICIsIGxpc3REdW1wKG1fc3RhY2spLCAiXG4iKTsKICAgICAKICAgICAvLyBJ
dCdzIHBvc3NpYmxlIHRoYXQgdGhlIHRvcCBvZiBzdGFjayBpcyBub3cgdGFpbC1kZWxldGVkLiBU
aGUgc3RhY2sgbm8gbG9uZ2VyIGNvbnRhaW5zIGFueQpAQCAtMTQxLDcgKzE0Myw3IEBAIHZvaWQg
U2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgIH0KIAog
ICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgICBSZXZpc2VkIHN0YWNrOiAiLCBsaXN0RHVtcCht
X3N0YWNrKSwgIlxuIik7CiAgICAgCiAgICAgLy8gVGhlIGxvZy1iYXNlZCBhbmQgZXhlYy1iYXNl
ZCBydWxlcyByZXF1aXJlIHRoYXQgU2hhZG93Q2hpY2tlbiB3YXMgZW5hYmxlZC4gVGhlIHBvaW50
IG9mCkBAIC0xNjksNyArMTcxLDcgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZt
LCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICB9KTsKICAgICAgICAgc3RhY2tSaWdodE5v
dy5yZXZlcnNlKCk7CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYg
KFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICBTdGFjayByaWdodCBub3c6ICIsIGxpc3REdW1wKHN0YWNrUmlnaHROb3cpLCAiXG4iKTsKICAg
ICAgICAgCiAgICAgICAgIHVuc2lnbmVkIHNoYWRvd0luZGV4ID0gMDsKQEAgLTE5NCw3ICsxOTYs
NyBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAgICAgfQogICAgICAgICBtX3N0YWNrLnJlc2l6ZShzaGFkb3dJbmRleCk7CiAgICAgICAg
IAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBSZXZpc2VkIHN0YWNrOiAiLCBs
aXN0RHVtcChtX3N0YWNrKSwgIlxuIik7CiAgICAgfQogICAgIApAQCAtMjA4LDE3ICsyMTAsMTcg
QEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKFNoYWRvd0No
aWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiICAgIEhpZ2hlc3QgcG9p
bnQgc2luY2UgbGFzdCB0aW1lOiAiLCBSYXdQb2ludGVyKGhpZ2hlc3RQb2ludFNpbmNlTGFzdFRp
bWUpLCAiXG4iKTsKICAgICAKICAgICAvLyBTZXQgZXZlcnl0aGluZyB1cCBzbyB0aGF0IHdlIGtu
b3cgd2hlcmUgdGhlIHRvcCBmcmFtZSBpcyBpbiB0aGUgbG9nLgogICAgIHVuc2lnbmVkIGluZGV4
SW5Mb2cgPSBsb2dDdXJzb3JJbmRleDsKICAgICAKICAgICBhdXRvIGFkdmFuY2VJbmRleEluTG9n
VG8gPSBbJl0gKENhbGxGcmFtZSogZnJhbWUsIEpTT2JqZWN0KiBjYWxsZWUsIENhbGxGcmFtZSog
Y2FsbGVyRnJhbWUpIC0+IGJvb2wgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYg
KFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICBBZHZhbmNpbmcgdG8gZnJhbWUgPSAiLCBSYXdQb2ludGVyKGZyYW1lKSwgIiBmcm9tIGluZGV4
SW5Mb2cgPSAiLCBpbmRleEluTG9nLCAiXG4iKTsKICAgICAgICAgaWYgKGluZGV4SW5Mb2cgPiBs
b2dDdXJzb3JJbmRleCkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBp
ZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFM
b2coIiAgICBCYWlsaW5nLlxuIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KQEAgLTI0NCw3ICsyNDYsNyBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0s
IEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGlmIChwYWNrZXQuaXNQcm9sb2d1ZSgpICYm
IHBhY2tldC5mcmFtZSA9PSBmcmFtZQogICAgICAgICAgICAgICAgICYmICghY2FsbGVlIHx8IHBh
Y2tldC5jYWxsZWUgPT0gY2FsbGVlKQogICAgICAgICAgICAgICAgICYmICghY2FsbGVyRnJhbWUg
fHwgcGFja2V0LmNhbGxlckZyYW1lID09IGNhbGxlckZyYW1lKSkgewotICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGb3VuZCBhdCBpbmRl
eEluTG9nID0gIiwgaW5kZXhJbkxvZywgIlxuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgICAgICB9CkBAIC0yNjYsNyArMjY4LDcgQEAgdm9pZCBTaGFkb3dDaGlja2Vu
Ojp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIC8vIEl0IHNlZW1zIGxp
a2UgdGhlIGxhdHRlciBvcHRpb24gaXMgbGVzcyBoYXJtZnVsLCBzbyB0aGF0J3Mgd2hhdCB3ZSBk
by4KICAgICAgICAgaW5kZXhJbkxvZyA9IG9sZEluZGV4SW5Mb2c7CiAgICAgICAgIAotICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBEaWRuJ3QgZmluZCBpdC5cbiIpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfTsKQEAgLTI4NiwxMCArMjg4LDEwIEBAIHZvaWQgU2hhZG93
Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHZpc2l0b3ItPmNhbGxGcmFtZSgp
OwotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoU2hhZG93Q2hpY2tl
bkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBFeGFtaW5p
bmcgIiwgUmF3UG9pbnRlcihjYWxsRnJhbWUpLCAiXG4iKTsKICAgICAgICAgICAgIGlmIChjYWxs
RnJhbWUgPT0gaGlnaGVzdFBvaW50U2luY2VMYXN0VGltZSkgewotICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBCYWlsaW5nIGF0ICIsIFJh
d1BvaW50ZXIoY2FsbEZyYW1lKSwgIiBiZWNhdXNlIGl0J3MgdGhlIGhpZ2hlc3QgcG9pbnQgc2lu
Y2UgbGFzdCB0aW1lLlxuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6
RG9uZTsKICAgICAgICAgICAgIH0KQEAgLTMxMiw3ICszMTQsNyBAQCB2b2lkIFNoYWRvd0NoaWNr
ZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgICAgICAvLyBU
aGlzIGNvbmRpdGlvbiBwcm90ZWN0cyB1cyBmcm9tIHRoZSBjYXNlIHdoZXJlIGFkdmFuY2VJbmRl
eEluTG9nVG8gZGlkbid0IGZpbmQKICAgICAgICAgICAgICAgICAvLyBhbnl0aGluZy4KICAgICAg
ICAgICAgICAgICAmJiBtX2xvZ1tpbmRleEluTG9nXS5mcmFtZSA9PSB0b1B1c2gubGFzdCgpLmZy
YW1lKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYg
KFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZygiICAgIEdvaW5nIHRvIGxvb3AgdGhyb3VnaCB0byBmaW5kIHRhaWwgZGVsZXRlZCBmcmFt
ZXMgd2l0aCBpbmRleEluTG9nID0gIiwgaW5kZXhJbkxvZywgIiBhbmQgcHVzaC1zdGFjayB0b3Ag
PSAiLCB0b1B1c2gubGFzdCgpLCAiXG4iKTsKICAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CiAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2xvZ1tpbmRleEluTG9nXS5mcmFtZSA9PSB0b1B1
c2gubGFzdCgpLmZyYW1lKTsKQEAgLTMzNyw3ICszMzksNyBAQCB2b2lkIFNoYWRvd0NoaWNrZW46
OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgICAgICAgICAgaW5k
ZXhJbkxvZy0tOyAvLyBTa2lwIG92ZXIgdGhlIHRhaWwgcGFja2V0LgogICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKCFhZHZhbmNlSW5kZXhJbkxvZ1RvKHRhaWxQ
YWNrZXQuZnJhbWUsIG51bGxwdHIsIG51bGxwdHIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTaGFkb3dDaGlja2Vu
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
Q2FuJ3QgZmluZCBwcm9sb2d1ZSBwYWNrZXQgZm9yIHRhaWw6ICIsIFJhd1BvaW50ZXIodGFpbFBh
Y2tldC5mcmFtZSksICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugd2VyZSB1
bmFibGUgdG8gbG9jYXRlIHRoZSBwcm9sb2d1ZSBwYWNrZXQgZm9yIHRoaXMgdGFpbCBwYWNrZXQu
CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHJhcmUgYnV0IGNhbiBoYXBwZW4g
aW4gYSBzaXR1YXRpb24gbGlrZToKQEAgLTM1Nyw3ICszNTksNyBAQCB2b2lkIFNoYWRvd0NoaWNr
ZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIHJldHVybiBT
dGFja1Zpc2l0b3I6OkNvbnRpbnVlOwogICAgICAgICB9KTsKIAotICAgIGlmICh2ZXJib3NlKQor
ICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2co
IiAgICBQdXNoaW5nOiAiLCBsaXN0RHVtcCh0b1B1c2gpLCAiXG4iKTsKICAgICAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSB0b1B1c2guc2l6ZSgpOyBpLS07KQpAQCAtMzczLDcgKzM3NSw3IEBAIHZv
aWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgIH0g
ZWxzZQogICAgICAgICBtX2xvZ0N1cnNvciA9IG1fbG9nOwogCi0gICAgaWYgKHZlcmJvc2UpCisg
ICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygi
ICAgIEFmdGVyIHB1c2hpbmc6ICIsICp0aGlzLCAiXG4iKTsKIAogICAgIC8vIFJlbW92ZSB0YWls
IGZyYW1lcyB1bnRpbCB0aGUgbnVtYmVyIG9mIHRhaWwgZGVsZXRlZCBmcmFtZXMgaXMgc21hbGwg
ZW5vdWdoLgpAQCAtMzk5LDcgKzQwMSw3IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZN
JiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHZlcmJv
c2UpCisgICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0
YUxvZygiICAgIEFmdGVyIGNsZWFuLXVwOiAiLCAqdGhpcywgIlxuIik7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQmluYXJ5U3dpdGNoLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQmluYXJ5U3dpdGNoLmNwcAppbmRleCBmM2RkY2ZjYTkyMWM5ODFl
ZjI4YzBiN2Q2ZDdhNTFmNWVmZDUzODhiLi4wZWFiNTY1MTkyNTMyOWUxN2IzZjVjYTI1ZGIxMzRh
YjRkZDlhNjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0JpbmFyeVN3
aXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9CaW5hcnlTd2l0Y2guY3Bw
CkBAIC0zMyw3ICszMyw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCituYW1lc3BhY2UgQmluYXJ5
U3dpdGNoSW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQog
CiBzdGF0aWMgdW5zaWduZWQgZ2xvYmFsQ291bnRlcjsgLy8gV2UgdXNlIGEgZGlmZmVyZW50IHNl
ZWQgZXZlcnkgdGltZSB3ZSBhcmUgaW52b2tlZC4KIApAQCAtNDcsNyArNDksNyBAQCBCaW5hcnlT
d2l0Y2g6OkJpbmFyeVN3aXRjaChHUFJSZWcgdmFsdWUsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYg
Y2FzZXMsIFR5cGUgdHlwZQogICAgIGlmIChjYXNlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChCaW5hcnlTd2l0Y2hJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgZGF0YUxvZygiT3JpZ2luYWwgY2FzZXM6ICIsIGxpc3REdW1wKGNhc2Vz
KSwgIlxuIik7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhc2VzLnNpemUo
KTsgKytpKQpAQCAtNTUsNyArNTcsNyBAQCBCaW5hcnlTd2l0Y2g6OkJpbmFyeVN3aXRjaChHUFJS
ZWcgdmFsdWUsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgY2FzZXMsIFR5cGUgdHlwZQogICAgIAog
ICAgIHN0ZDo6c29ydChtX2Nhc2VzLmJlZ2luKCksIG1fY2FzZXMuZW5kKCkpOwogCi0gICAgaWYg
KHZlcmJvc2UpCisgICAgaWYgKEJpbmFyeVN3aXRjaEludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICBkYXRhTG9nKCJTb3J0ZWQgY2FzZXM6ICIsIGxpc3REdW1wKG1fY2FzZXMpLCAiXG4iKTsKICAg
ICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgbV9jYXNlcy5zaXplKCk7ICsraSkKQEAg
LTEzNywxMSArMTM5LDExIEBAIGJvb2wgQmluYXJ5U3dpdGNoOjphZHZhbmNlKE1hY3JvQXNzZW1i
bGVyJiBqaXQpCiAKIHZvaWQgQmluYXJ5U3dpdGNoOjpidWlsZCh1bnNpZ25lZCBzdGFydCwgYm9v
bCBoYXJkU3RhcnQsIHVuc2lnbmVkIGVuZCkKIHsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAo
QmluYXJ5U3dpdGNoSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkJ1aWxkaW5n
IHdpdGggc3RhcnQgPSAiLCBzdGFydCwgIiwgaGFyZFN0YXJ0ID0gIiwgaGFyZFN0YXJ0LCAiLCBl
bmQgPSAiLCBlbmQsICJcbiIpOwogCiAgICAgYXV0byBhcHBlbmQgPSBbJl0gKGNvbnN0IEJyYW5j
aENvZGUmIGNvZGUpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCaW5hcnlT
d2l0Y2hJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIj09PiAiLCBjb2Rl
LCAiXG4iKTsKICAgICAgICAgbV9icmFuY2hlcy5hcHBlbmQoY29kZSk7CiAgICAgfTsKQEAgLTE1
OSw3ICsxNjEsNyBAQCB2b2lkIEJpbmFyeVN3aXRjaDo6YnVpbGQodW5zaWduZWQgc3RhcnQsIGJv
b2wgaGFyZFN0YXJ0LCB1bnNpZ25lZCBlbmQpCiAgICAgY29uc3QgdW5zaWduZWQgbGVhZlRocmVz
aG9sZCA9IDM7CiAgICAgCiAgICAgaWYgKHNpemUgPD0gbGVhZlRocmVzaG9sZCkgewotICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEJpbmFyeVN3aXRjaEludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgZGF0YUxvZygiSXQncyBhIGxlYWYuXG4iKTsKICAgICAgICAgCiAgICAg
ICAgIC8vIEl0IHR1cm5zIG91dCB0aGF0IGZvciBleGFjdGx5IHRocmVlIGNhc2VzIG9yIGxlc3Ms
IGl0J3MgYmV0dGVyIHRvIGp1c3QgY29tcGFyZSBlYWNoCkBAIC0xODYsNyArMTg4LDcgQEAgdm9p
ZCBCaW5hcnlTd2l0Y2g6OmJ1aWxkKHVuc2lnbmVkIHN0YXJ0LCBib29sIGhhcmRTdGFydCwgdW5z
aWduZWQgZW5kKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgIGlmIChCaW5hcnlTd2l0Y2hJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgIGRhdGFMb2coImFsbENvbnNlY3V0aXZlID0gIiwgYWxsQ29uc2VjdXRpdmUsICJcbiIpOwog
ICAgICAgICAKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkLCAzPiBsb2NhbENhc2VJbmRpY2VzOwpA
QCAtMjE0LDcgKzIxNiw3IEBAIHZvaWQgQmluYXJ5U3dpdGNoOjpidWlsZCh1bnNpZ25lZCBzdGFy
dCwgYm9vbCBoYXJkU3RhcnQsIHVuc2lnbmVkIGVuZCkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChCaW5hcnlTd2l0Y2hJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgZGF0YUxvZygiSXQncyBub3QgYSBsZWFmLlxuIik7CiAgICAgICAgIAogICAg
IC8vIFRoZXJlIGFyZSB0d28gZGlmZmVyZW50IHN0cmF0ZWdpZXMgd2UgY291bGQgY29uc2lkZXIg
aGVyZToKQEAgLTMxNCw3ICszMTYsNyBAQCB2b2lkIEJpbmFyeVN3aXRjaDo6YnVpbGQodW5zaWdu
ZWQgc3RhcnQsIGJvb2wgaGFyZFN0YXJ0LCB1bnNpZ25lZCBlbmQpCiAgICAgICAgIAogICAgIHVu
c2lnbmVkIG1lZGlhbkluZGV4ID0gKHN0YXJ0ICsgZW5kKSAvIDI7CiAKLSAgICBpZiAodmVyYm9z
ZSkKKyAgICBpZiAoQmluYXJ5U3dpdGNoSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFM
b2coIm1lZGlhbkluZGV4ID0gIiwgbWVkaWFuSW5kZXgsICJcbiIpOwogCiAgICAgLy8gV2Ugd2Fu
dCBtZWRpYW5JbmRleCB0byBwb2ludCB0byB0aGUgdGhpbmcgd2Ugd2lsbCBkbyBhIGxlc3MtdGhh
biBjb21wYXJlIGFnYWluc3QuIFdlIHdhbnQKQEAgLTM0Nyw3ICszNDksNyBAQCB2b2lkIEJpbmFy
eVN3aXRjaDo6YnVpbGQodW5zaWduZWQgc3RhcnQsIGJvb2wgaGFyZFN0YXJ0LCB1bnNpZ25lZCBl
bmQpCiAgICAgUkVMRUFTRV9BU1NFUlQobWVkaWFuSW5kZXggPiBzdGFydCk7CiAgICAgUkVMRUFT
RV9BU1NFUlQobWVkaWFuSW5kZXggKyAxIDwgZW5kKTsKICAgICAgICAgCi0gICAgaWYgKHZlcmJv
c2UpCisgICAgaWYgKEJpbmFyeVN3aXRjaEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRh
TG9nKCJmaXhlZCBtZWRpYW5JbmRleCA9ICIsIG1lZGlhbkluZGV4LCAiXG4iKTsKIAogICAgIGFw
cGVuZChCcmFuY2hDb2RlKExlc3NUaGFuVG9QdXNoLCBtZWRpYW5JbmRleCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAppbmRleCAxZTQ5ZjJmODUzMjU4ZTM5NDE2
MWM3YzQ0MDAzOTkzM2ZhYWE5MjFjLi5hZDg2OWYyMGUyZTRkMWI5YWUwZGE3ODc0ODJmYjZmZTdk
MjhhZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRh
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAt
MjI1LDcgKzIyNSw5IEBAIHZvaWQgRGF0YTo6ZmluYWxpemVTdGF0cygpCiB9CiAKICNpZiBFTkFC
TEUoTExJTlRfU1RBVFMpCituYW1lc3BhY2UgTExJbnREYXRhSW50ZXJuYWwgewogc3RhdGljIGNv
bnN0IGJvb2wgdmVyYm9zZVN0YXRzID0gZmFsc2U7Cit9CiAKIHN0YXRpYyBib29sIGNvbXBhcmVT
dGF0cyhjb25zdCBPcGNvZGVTdGF0cyYgYSwgY29uc3QgT3Bjb2RlU3RhdHMmIGIpCiB7CkBAIC0y
ODMsNyArMjg1LDcgQEAgdm9pZCBEYXRhOjpsb2FkU3RhdHMoKQogICAgIHVuc2lnbmVkIGluZGV4
OwogICAgIGNoYXIgb3Bjb2RlTmFtZVsxMDBdOwogICAgIHdoaWxlIChmc2NhbmYoZmlsZSwgIlsl
dV06IGZhc3Q6JXp1IHNsb3c6JXp1IGlkOiV1ICVzXG4iLCAmaW5kZXgsICZsb2FkZWQuY291bnQs
ICZsb2FkZWQuc2xvd1BhdGhDb3VudCwgJmxvYWRlZC5pZCwgb3Bjb2RlTmFtZSkgIT0gRU9GKSB7
Ci0gICAgICAgIGlmICh2ZXJib3NlU3RhdHMpCisgICAgICAgIGlmIChMTEludERhdGFJbnRlcm5h
bDo6dmVyYm9zZVN0YXRzKQogICAgICAgICAgICAgZGF0YUxvZ0YoImxvYWRlZCBbJXVdOiBmYXN0
ICV6dSBzbG93ICV6dSBpZDoldSAlc1xuIiwgaW5kZXgsIGxvYWRlZC5jb3VudCwgbG9hZGVkLnNs
b3dQYXRoQ291bnQsIGxvYWRlZC5pZCwgb3Bjb2RlTmFtZSk7CiAKICAgICAgICAgT3Bjb2RlU3Rh
dHMmIHN0YXRzID0gb3Bjb2RlU3RhdHMobG9hZGVkLmlkKTsKQEAgLTI5MSw3ICsyOTMsNyBAQCB2
b2lkIERhdGE6OmxvYWRTdGF0cygpCiAgICAgICAgIHN0YXRzLnNsb3dQYXRoQ291bnQgPSBsb2Fk
ZWQuc2xvd1BhdGhDb3VudDsKICAgICB9CiAKLSAgICBpZiAodmVyYm9zZVN0YXRzKSB7CisgICAg
aWYgKExMSW50RGF0YUludGVybmFsOjp2ZXJib3NlU3RhdHMpIHsKICAgICAgICAgZGF0YUxvZ0Yo
IkFmdGVyIGxvYWRpbmcgZnJvbSAlcywgIiwgZmlsZW5hbWUpOwogICAgICAgICBkdW1wU3RhdHMo
KTsKICAgICB9CkBAIC0zMzAsNyArMzMyLDcgQEAgdm9pZCBEYXRhOjpzYXZlU3RhdHMoKQogICAg
ICAgICBpZiAoIXN0YXRzLmNvdW50ICYmICFzdGF0cy5zbG93UGF0aENvdW50KQogICAgICAgICAg
ICAgYnJlYWs7IC8vIHN0YXRzIGFyZSBzb3J0ZWQuIElmIHdlIGVuY291bnRlcmVkIDAgY291bnRz
LCB0aGVuIHRoZXJlIGFyZSBubyBtb3JlIG5vbi16ZXJvIGNvdW50cy4KIAotICAgICAgICBpZiAo
dmVyYm9zZVN0YXRzKQorICAgICAgICBpZiAoTExJbnREYXRhSW50ZXJuYWw6OnZlcmJvc2VTdGF0
cykKICAgICAgICAgICAgIGRhdGFMb2dGKCJzYXZlZCBbJXVdOiBmYXN0OiV6dSBzbG93OiV6dSBp
ZDoldSAlc1xuIiwgaW5kZXgsIHN0YXRzLmNvdW50LCBzdGF0cy5zbG93UGF0aENvdW50LCBzdGF0
cy5pZCwgb3Bjb2RlTmFtZXNbc3RhdHMuaWRdKTsKIAogICAgICAgICBmcHJpbnRmKGZpbGUsICJb
JXVdOiBmYXN0OiV6dSBzbG93OiV6dSBpZDoldSAlc1xuIiwgaW5kZXgsIHN0YXRzLmNvdW50LCBz
dGF0cy5zbG93UGF0aENvdW50LCBzdGF0cy5pZCwgb3Bjb2RlTmFtZXNbc3RhdHMuaWRdKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRl
eCA4ZjcxMTdiN2Y2MTQyYmEwNmFlNzFjZTdjZTZkZGYzYTE2N2U3NzE3Li4zYjcxYTMwOTY3ZWEz
OThkNTkyOTJiMzk5Y2IzZWRiNTYwNWE0YjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0xMzY2LDcgKzEzNjYsOSBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9Qcml2YXRlRnVuY0FwcGVuZE1lbWNw
eShFeGVjU3RhdGUqIGV4ZWMpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIEFycmF5UHJvdG90
eXBlLmNvbnN0cnVjdG9yIFdhdGNocG9pbnQgLS0tLS0tLS0tLS0tLS0tLS0tCiAKK25hbWVzcGFj
ZSBBcnJheVByb3RvdHlwZUludGVybmFsIHsKIHN0YXRpYyBib29sIHZlcmJvc2UgPSBmYWxzZTsK
K30KIAogY2xhc3MgQXJyYXlQcm90b3R5cGVBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlXYXRjaHBv
aW50IDogcHVibGljIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2Ug
ewogcHVibGljOgpAQCAtMTM4OCw3ICsxMzkwLDcgQEAgdm9pZCBBcnJheVByb3RvdHlwZTo6dHJ5
SW5pdGlhbGl6ZVNwZWNpZXNXYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmICh2ZXJib3NlKQorICAg
IGlmIChBcnJheVByb3RvdHlwZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJJ
bml0aWFsaXppbmcgQXJyYXkgc3BlY2llcyB3YXRjaHBvaW50cyBmb3IgQXJyYXkucHJvdG90eXBl
OiAiLCBwb2ludGVyRHVtcCh0aGlzKSwgIiB3aXRoIHN0cnVjdHVyZTogIiwgcG9pbnRlckR1bXAo
dGhpcy0+c3RydWN0dXJlKCkpLCAiXG5hbmQgQXJyYXk6ICIsIHBvaW50ZXJEdW1wKHRoaXMtPmds
b2JhbE9iamVjdCgpLT5hcnJheUNvbnN0cnVjdG9yKCkpLCAiIHdpdGggc3RydWN0dXJlOiAiLCBw
b2ludGVyRHVtcCh0aGlzLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlDb25zdHJ1Y3RvcigpLT5zdHJ1
Y3R1cmUoKSksICJcbiIpOwogICAgIC8vIEZpcnN0IHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQg
dGhlIEFycmF5LnByb3RvdHlwZS5jb25zdHJ1Y3RvciBwcm9wZXJ0eSBwb2ludHMgdG8gQXJyYXkK
ICAgICAvLyBhbmQgdGhhdCBBcnJheVtTeW1ib2wuc3BlY2llc10gaXMgdGhlIHByaW1vcmRpYWwg
R2V0dGVyU2V0dGVyLgpAQCAtMTQ2Niw3ICsxNDY4LDcgQEAgdm9pZCBBcnJheVByb3RvdHlwZUFk
YXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ6OmhhbmRsZUZpcmUoY29uc3QgRmlyZURl
dGEKIAogICAgIFN0cmluZ0ZpcmVEZXRhaWwgc3RyaW5nRGV0YWlsKG91dC50b0NTdHJpbmcoKS5k
YXRhKCkpOwogCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEFycmF5UHJvdG90eXBlSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgIFdURjo6ZGF0YUxvZyhzdHJpbmdEZXRhaWwsICJcbiIpOwog
CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fYXJyYXlQcm90b3R5cGUtPmds
b2JhbE9iamVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvcklu
c3RhbmNlLmNwcAppbmRleCA1NDkzZjhmNzBhMzU3MzIxZjE2N2RlMWM1MmI0ZjM1Mjk5ODgwNDhj
Li5mYzhiODQ4MmJlZmQ2YjBjMDc0YjRlZThmZDI3YmFhMjIyNThiMDg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcApAQCAtMTA4LDQxICsx
MDgsNiBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vycm9yKENhbGxGcmFtZSogY2FsbEZy
YW1lLCBFcnJvckluc3RhbmNlKiBleGNlcHRpb24sCiAKIH0KIAotY2xhc3MgRmluZEZpcnN0Q2Fs
bGVyRnJhbWVXaXRoQ29kZWJsb2NrRnVuY3RvciB7Ci1wdWJsaWM6Ci0gICAgRmluZEZpcnN0Q2Fs
bGVyRnJhbWVXaXRoQ29kZWJsb2NrRnVuY3RvcihDYWxsRnJhbWUqIHN0YXJ0Q2FsbEZyYW1lKQot
ICAgICAgICA6IG1fc3RhcnRDYWxsRnJhbWUoc3RhcnRDYWxsRnJhbWUpCi0gICAgICAgICwgbV9m
b3VuZENhbGxGcmFtZShudWxscHRyKQotICAgICAgICAsIG1fZm91bmRTdGFydENhbGxGcmFtZShm
YWxzZSkKLSAgICAgICAgLCBtX2luZGV4KDApCi0gICAgeyB9Ci0KLSAgICBTdGFja1Zpc2l0b3I6
OlN0YXR1cyBvcGVyYXRvcigpKFN0YWNrVmlzaXRvciYgdmlzaXRvcikKLSAgICB7Ci0gICAgICAg
IGlmICghbV9mb3VuZFN0YXJ0Q2FsbEZyYW1lICYmICh2aXNpdG9yLT5jYWxsRnJhbWUoKSA9PSBt
X3N0YXJ0Q2FsbEZyYW1lKSkKLSAgICAgICAgICAgIG1fZm91bmRTdGFydENhbGxGcmFtZSA9IHRy
dWU7Ci0KLSAgICAgICAgaWYgKG1fZm91bmRTdGFydENhbGxGcmFtZSkgewotICAgICAgICAgICAg
aWYgKHZpc2l0b3ItPmNhbGxGcmFtZSgpLT5jb2RlQmxvY2soKSkgewotICAgICAgICAgICAgICAg
IG1fZm91bmRDYWxsRnJhbWUgPSB2aXNpdG9yLT5jYWxsRnJhbWUoKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
bV9pbmRleCsrOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29u
dGludWU7Ci0gICAgfQotCi0gICAgQ2FsbEZyYW1lKiBmb3VuZENhbGxGcmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZm91bmRDYWxsRnJhbWU7IH0KLSAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0IHsg
cmV0dXJuIG1faW5kZXg7IH0KLQotcHJpdmF0ZToKLSAgICBDYWxsRnJhbWUqIG1fc3RhcnRDYWxs
RnJhbWU7Ci0gICAgQ2FsbEZyYW1lKiBtX2ZvdW5kQ2FsbEZyYW1lOwotICAgIGJvb2wgbV9mb3Vu
ZFN0YXJ0Q2FsbEZyYW1lOwotICAgIHVuc2lnbmVkIG1faW5kZXg7Ci19OwotCiB2b2lkIEVycm9y
SW5zdGFuY2U6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIGJvb2wgdXNlQ3VycmVudEZyYW1lKQogewogICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXQuY3BwCmluZGV4IDdlZjAwMDhkODM3Y2NmOTEzNzE0ZjNhMzVjMzk1
NTE5OThiNmY5N2YuLmFjNzY5NzdhOTU1ZjZiYzlkNmVjMDIwN2IyMjQyNWMxYTliYjk1MTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0LmNwcApAQCAtNDksNyArNDksMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNz
SW5mbyBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bERhdGVUaW1lRm9y
bWF0KSB9OwogCituYW1lc3BhY2UgSW50bERURkludGVybmFsIHsKIHN0YXRpYyBjb25zdCBjaGFy
KiBjb25zdCByZWxldmFudEV4dGVuc2lvbktleXNbMl0gPSB7ICJjYSIsICJudSIgfTsKK30KKwog
c3RhdGljIGNvbnN0IHNpemVfdCBpbmRleE9mRXh0ZW5zaW9uS2V5Q2EgPSAwOwogc3RhdGljIGNv
bnN0IHNpemVfdCBpbmRleE9mRXh0ZW5zaW9uS2V5TnUgPSAxOwogCkBAIC00NTAsNyArNDUzLDcg
QEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChFeGVj
U3RhdGUmIGV4ZWMsIEpTVmFsdWUgbG9jYWwKICAgICAvLyAxMS4gTGV0IGxvY2FsZURhdGEgYmUg
dGhlIHZhbHVlIG9mICVEYXRlVGltZUZvcm1hdCUuW1tsb2NhbGVEYXRhXV0uCiAgICAgLy8gMTIu
IExldCByIGJlIFJlc29sdmVMb2NhbGUoICVEYXRlVGltZUZvcm1hdCUuW1thdmFpbGFibGVMb2Nh
bGVzXV0sIHJlcXVlc3RlZExvY2FsZXMsIG9wdCwgJURhdGVUaW1lRm9ybWF0JS5bW3JlbGV2YW50
RXh0ZW5zaW9uS2V5c11dLCBsb2NhbGVEYXRhKS4KICAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4g
YXZhaWxhYmxlTG9jYWxlcyA9IGV4ZWMuanNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPmludGxE
YXRlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKTsKLSAgICBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiByZXNvbHZlZCA9IHJlc29sdmVMb2NhbGUoZXhlYywgYXZhaWxhYmxlTG9jYWxlcywgcmVx
dWVzdGVkTG9jYWxlcywgbG9jYWxlT3B0LCByZWxldmFudEV4dGVuc2lvbktleXMsIFdURl9BUlJB
WV9MRU5HVEgocmVsZXZhbnRFeHRlbnNpb25LZXlzKSwgbG9jYWxlRGF0YSk7CisgICAgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4gcmVzb2x2ZWQgPSByZXNvbHZlTG9jYWxlKGV4ZWMsIGF2YWlsYWJs
ZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGxvY2FsZU9wdCwgSW50bERURkludGVybmFsOjpy
ZWxldmFudEV4dGVuc2lvbktleXMsIFdURl9BUlJBWV9MRU5HVEgoSW50bERURkludGVybmFsOjpy
ZWxldmFudEV4dGVuc2lvbktleXMpLCBsb2NhbGVEYXRhKTsKIAogICAgIC8vIDEzLiBTZXQgZGF0
ZVRpbWVGb3JtYXQuW1tsb2NhbGVdXSB0byB0aGUgdmFsdWUgb2Ygci5bW2xvY2FsZV1dLgogICAg
IG1fbG9jYWxlID0gcmVzb2x2ZWQuZ2V0KHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZS5zdHJpbmco
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlRGVm
ZXJyZWRUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlRGVm
ZXJyZWRUaW1lci5jcHAKaW5kZXggM2RjYWVhYWZlNWIzOGZiYTViYThhZjk3NjYwZjUxYmM2NTlm
ZDI0NS4uMDg3ODA0Njk1Y2RmMzVhNzQ5NGJiZDU4OTQ0MjkwNGViOWNhNzAzOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZURlZmVycmVkVGltZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVy
LmNwcApAQCAtMzQsNyArMzQsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFtZXNwYWNlIFBy
b21pc2VEZWZlcnJlZFRpbWVySW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9
IGZhbHNlOworfQogCiBQcm9taXNlRGVmZXJyZWRUaW1lcjo6UHJvbWlzZURlZmVycmVkVGltZXIo
Vk0mIHZtKQogICAgIDogQmFzZSgmdm0pCkBAIC01NSw3ICs1Nyw3IEBAIHZvaWQgUHJvbWlzZURl
ZmVycmVkVGltZXI6OmRvV29yaygpCiAgICAgICAgIEpTUHJvbWlzZURlZmVycmVkKiB0aWNrZXQ7
CiAgICAgICAgIFRhc2sgdGFzazsKICAgICAgICAgc3RkOjp0aWUodGlja2V0LCB0YXNrKSA9IG1f
dGFza3MudGFrZUxhc3QoKTsKLSAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIkRvaW5nIHdv
cmsgb24gcHJvbWlzZTogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKKyAgICAgICAgZGF0YUxvZ0xu
SWYoUHJvbWlzZURlZmVycmVkVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkRvaW5nIHdvcmsgb24g
cHJvbWlzZTogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKIAogICAgICAgICAvLyBXZSBtYXkgaGF2
ZSBhbHJlYWR5IGNhbmNlbGVkIHRoZXNlIHByb21pc2VzLgogICAgICAgICBpZiAobV9wZW5kaW5n
UHJvbWlzZXMuY29udGFpbnModGlja2V0KSkgewpAQCAtMTA1LDExICsxMDcsMTEgQEAgdm9pZCBQ
cm9taXNlRGVmZXJyZWRUaW1lcjo6YWRkUGVuZGluZ1Byb21pc2UoSlNQcm9taXNlRGVmZXJyZWQq
IHRpY2tldCwgVmVjdG9yPFMKIAogICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nUHJvbWlzZXMu
YWRkKHRpY2tldCwgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PigpKTsKICAgICBpZiAocmVzdWx0Lmlz
TmV3RW50cnkpIHsKLSAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIkFkZGluZyBuZXcgcGVu
ZGluZyBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworICAgICAgICBkYXRhTG9nTG5J
ZihQcm9taXNlRGVmZXJyZWRUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQWRkaW5nIG5ldyBwZW5k
aW5nIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CiAgICAgICAgIGRlcGVuZGVuY2ll
cy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4oKm1fdm0sIHRpY2tldCkpOwogICAgICAgICByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlID0gV1RGTW92ZShkZXBlbmRlbmNpZXMpOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJBZGRpbmcgbmV3IGRlcGVuZGVuY2llcyBmb3Ig
cHJvbWlzZTogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoUHJv
bWlzZURlZmVycmVkVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkFkZGluZyBuZXcgZGVwZW5kZW5j
aWVzIGZvciBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwogICAgICAgICByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlLmFwcGVuZFZlY3RvcihkZXBlbmRlbmNpZXMpOwogICAgIH0KIApAQCAt
MTI0LDcgKzEyNiw3IEBAIGJvb2wgUHJvbWlzZURlZmVycmVkVGltZXI6OmNhbmNlbFBlbmRpbmdQ
cm9taXNlKEpTUHJvbWlzZURlZmVycmVkKiB0aWNrZXQpCiAgICAgYm9vbCByZXN1bHQgPSBtX3Bl
bmRpbmdQcm9taXNlcy5yZW1vdmUodGlja2V0KTsKIAogICAgIGlmIChyZXN1bHQpCi0gICAgICAg
IGRhdGFMb2dMbklmKHZlcmJvc2UsICJDYW5jZWxpbmcgcHJvbWlzZTogIiwgUmF3UG9pbnRlcih0
aWNrZXQpKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoUHJvbWlzZURlZmVycmVkVGltZXJJbnRlcm5h
bDo6dmVyYm9zZSwgIkNhbmNlbGluZyBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwog
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1R5cGVQcm9maWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlUHJvZmlsZXIuY3BwCmluZGV4IGUzMTVjNDEyYjkzMzMwYjA1YWY2NjQwNzBjYTExNmNk
NTNlOTJkYjcuLjBmODVlZjg4Mjg1YzJlOGI4MWQ1ZmYwMGJjYWEyYjk5Y2Y2ZGM4MGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcApAQCAtMzIs
NyArMzIsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFtZXNwYWNlIFR5cGVQcm9maWxlcklu
dGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogVHlwZVBy
b2ZpbGVyOjpUeXBlUHJvZmlsZXIoKQogICAgIDogbV9uZXh0VW5pcXVlVmFyaWFibGVJRCgxKQpA
QCAtNTksNyArNjEsNyBAQCB2b2lkIFR5cGVQcm9maWxlcjo6bG9nVHlwZXNGb3JUeXBlTG9jYXRp
b24oVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiwgVk0mIHZtKQogCiB2b2lkIFR5cGVQcm9maWxlcjo6
aW5zZXJ0TmV3TG9jYXRpb24oVHlwZUxvY2F0aW9uKiBsb2NhdGlvbikKIHsKLSAgICBpZiAodmVy
Ym9zZSkKKyAgICBpZiAoVHlwZVByb2ZpbGVySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRh
dGFMb2dGKCJSZWdpc3RlcmluZyBsb2NhdGlvbjo6IGRpdm90U3RhcnQ6JXUsIGRpdm90RW5kOiV1
XG4iLCBsb2NhdGlvbi0+bV9kaXZvdFN0YXJ0LCBsb2NhdGlvbi0+bV9kaXZvdEVuZCk7CiAKICAg
ICBpZiAoIW1fYnVja2V0TWFwLmNvbnRhaW5zKGxvY2F0aW9uLT5tX3NvdXJjZUlEKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHAKaW5k
ZXggODVjNDlkMDQ2YmFmZWFjN2MyZmRlYTIxNTI1OGQzYzQ0ZWZjZDExNS4uNTNkNzNlODhiMTRl
Mzg2YjczNzhiODgyNDdiNzc2OTY0ZjZiNTdlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwCkBAIC0zNyw3ICszNyw5IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCituYW1lc3BhY2UgVHlwZVByb2ZpbGVyTG9nSW50ZXJuYWwgewogc3Rh
dGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiB2b2lkIFR5cGVQcm9maWxlckxv
Zzo6aW5pdGlhbGl6ZUxvZygpCiB7CkBAIC01Niw3ICs1OCw3IEBAIFR5cGVQcm9maWxlckxvZzo6
flR5cGVQcm9maWxlckxvZygpCiB2b2lkIFR5cGVQcm9maWxlckxvZzo6cHJvY2Vzc0xvZ0VudHJp
ZXMoY29uc3QgU3RyaW5nJiByZWFzb24pCiB7CiAgICAgZG91YmxlIGJlZm9yZSA9IDA7Ci0gICAg
aWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoVHlwZVByb2ZpbGVyTG9nSW50ZXJuYWw6OnZlcmJvc2Up
IHsKICAgICAgICAgZGF0YUxvZygiUHJvY2VzcyBjYWxsZXI6JyIsIHJlYXNvbiwgIiciKTsKICAg
ICAgICAgYmVmb3JlID0gY3VycmVudFRpbWVNUygpOwogICAgIH0KQEAgLTk1LDcgKzk3LDcgQEAg
dm9pZCBUeXBlUHJvZmlsZXJMb2c6OnByb2Nlc3NMb2dFbnRyaWVzKGNvbnN0IFN0cmluZyYgcmVh
c29uKQogICAgIC8vIHBhdXNlcyBhbmQgY2F1c2VzIHRoZSBjb2xsZWN0b3IgdG8gbWFyayB0aGUg
bG9nLgogICAgIG1fY3VycmVudExvZ0VudHJ5UHRyID0gbV9sb2dTdGFydFB0cjsKIAotICAgIGlm
ICh2ZXJib3NlKSB7CisgICAgaWYgKFR5cGVQcm9maWxlckxvZ0ludGVybmFsOjp2ZXJib3NlKSB7
CiAgICAgICAgIGRvdWJsZSBhZnRlciA9IGN1cnJlbnRUaW1lTVMoKTsKICAgICAgICAgZGF0YUxv
Z0YoIiBQcm9jZXNzaW5nIHRoZSBsb2cgdG9vazogJyVmJyBtc1xuIiwgYWZ0ZXIgLSBiZWZvcmUp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lS
R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcAppbmRleCAwMGFjM2MxYWRiZDdhYzgyZDIxNTkwZjYwMTI4Yjk0YTQwMGM2MjhlLi5h
ZDdkNjIxZWM4Nzg4NWFjMDM2ZDgxMzEzZDViMGZhMDkxYTRlZjk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC03Niw3ICs3Niw5
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiB1c2luZyBuYW1lc3BhY2UgQjM7
CiAKIG5hbWVzcGFjZSB7Ci1jb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBX
YXNtQjNJUkdlbmVyYXRvckludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBm
YWxzZTsKK30KIH0KIAogY2xhc3MgQjNJUkdlbmVyYXRvciB7CkBAIC0xNTY2LDkgKzE1NjgsOSBA
QCBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFy
c2VBbmRDb21waWxlKENvbXBpbGF0aW9uQwogICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKQogICAg
ICAgICB2YWxpZGF0ZShwcm9jZWR1cmUsICJBZnRlciBwYXJzaW5nOlxuIik7CiAKLSAgICBkYXRh
TG9nSWYodmVyYm9zZSwgIlByZSBTU0E6ICIsIHByb2NlZHVyZSk7CisgICAgZGF0YUxvZ0lmKFdh
c21CM0lSR2VuZXJhdG9ySW50ZXJuYWw6OnZlcmJvc2UsICJQcmUgU1NBOiAiLCBwcm9jZWR1cmUp
OwogICAgIGZpeFNTQShwcm9jZWR1cmUpOwotICAgIGRhdGFMb2dJZih2ZXJib3NlLCAiUG9zdCBT
U0E6ICIsIHByb2NlZHVyZSk7CisgICAgZGF0YUxvZ0lmKFdhc21CM0lSR2VuZXJhdG9ySW50ZXJu
YWw6OnZlcmJvc2UsICJQb3N0IFNTQTogIiwgcHJvY2VkdXJlKTsKICAgICAKICAgICB7CiAgICAg
ICAgIEIzOjpwcmVwYXJlRm9yR2VuZXJhdGlvbihwcm9jZWR1cmUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCmluZGV4IDUwZmViNzMwYjAwZmRkOWQwZjAxNmUz
NjY5MDgxMDcyMmRiYWRiMTUuLjIyZWRkMTYwMTNlNTE5NmZlNzRhYmRkODQwYzZlNGJjYzk3NTBk
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKQEAgLTQ5
LDcgKzQ5LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAorbmFtZXNw
YWNlIFdhc21CQlFQbGFuSW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZh
bHNlOworfQogCiBCQlFQbGFuOjpCQlFQbGFuKFZNKiB2bSwgUmVmPE1vZHVsZUluZm9ybWF0aW9u
PiBpbmZvLCBBc3luY1dvcmsgd29yaywgQ29tcGxldGlvblRhc2smJiB0YXNrKQogICAgIDogQmFz
ZSh2bSwgV1RGTW92ZShpbmZvKSwgV1RGTW92ZSh0YXNrKSkKQEAgLTg2LDcgKzg4LDcgQEAgY29u
c3QgY2hhciogQkJRUGxhbjo6c3RhdGVTdHJpbmcoU3RhdGUgc3RhdGUpCiB2b2lkIEJCUVBsYW46
Om1vdmVUb1N0YXRlKFN0YXRlIHN0YXRlKQogewogICAgIEFTU0VSVChzdGF0ZSA+PSBtX3N0YXRl
KTsKLSAgICBkYXRhTG9nTG5JZih2ZXJib3NlICYmIHN0YXRlICE9IG1fc3RhdGUsICJtb3Zpbmcg
dG8gc3RhdGU6ICIsIHN0YXRlU3RyaW5nKHN0YXRlKSwgIiBmcm9tIHN0YXRlOiAiLCBzdGF0ZVN0
cmluZyhtX3N0YXRlKSk7CisgICAgZGF0YUxvZ0xuSWYoV2FzbUJCUVBsYW5JbnRlcm5hbDo6dmVy
Ym9zZSAmJiBzdGF0ZSAhPSBtX3N0YXRlLCAibW92aW5nIHRvIHN0YXRlOiAiLCBzdGF0ZVN0cmlu
ZyhzdGF0ZSksICIgZnJvbSBzdGF0ZTogIiwgc3RhdGVTdHJpbmcobV9zdGF0ZSkpOwogICAgIG1f
c3RhdGUgPSBzdGF0ZTsKIH0KIApAQCAtOTUsOSArOTcsOSBAQCBib29sIEJCUVBsYW46OnBhcnNl
QW5kVmFsaWRhdGVNb2R1bGUoKQogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpJbml0aWFsKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJzdGFydGlu
ZyB2YWxpZGF0aW9uIik7CisgICAgZGF0YUxvZ0xuSWYoV2FzbUJCUVBsYW5JbnRlcm5hbDo6dmVy
Ym9zZSwgInN0YXJ0aW5nIHZhbGlkYXRpb24iKTsKICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0VGlt
ZTsKLSAgICBpZiAodmVyYm9zZSB8fCBPcHRpb25zOjpyZXBvcnRDb21waWxlVGltZXMoKSkKKyAg
ICBpZiAoV2FzbUJCUVBsYW5JbnRlcm5hbDo6dmVyYm9zZSB8fCBPcHRpb25zOjpyZXBvcnRDb21w
aWxlVGltZXMoKSkKICAgICAgICAgc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAK
ICAgICB7CkBAIC0xMTEsNyArMTEzLDcgQEAgYm9vbCBCQlFQbGFuOjpwYXJzZUFuZFZhbGlkYXRl
TW9kdWxlKCkKIAogICAgIGNvbnN0IGF1dG8mIGZ1bmN0aW9uTG9jYXRpb25zID0gbV9tb2R1bGVJ
bmZvcm1hdGlvbi0+ZnVuY3Rpb25Mb2NhdGlvbkluQmluYXJ5OwogICAgIGZvciAodW5zaWduZWQg
ZnVuY3Rpb25JbmRleCA9IDA7IGZ1bmN0aW9uSW5kZXggPCBmdW5jdGlvbkxvY2F0aW9ucy5zaXpl
KCk7ICsrZnVuY3Rpb25JbmRleCkgewotICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiUHJv
Y2Vzc2luZyBmdW5jdGlvbiBzdGFydGluZyBhdDogIiwgZnVuY3Rpb25Mb2NhdGlvbnNbZnVuY3Rp
b25JbmRleF0uc3RhcnQsICIgYW5kIGVuZGluZyBhdDogIiwgZnVuY3Rpb25Mb2NhdGlvbnNbZnVu
Y3Rpb25JbmRleF0uZW5kKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbUJCUVBsYW5JbnRlcm5h
bDo6dmVyYm9zZSwgIlByb2Nlc3NpbmcgZnVuY3Rpb24gc3RhcnRpbmcgYXQ6ICIsIGZ1bmN0aW9u
TG9jYXRpb25zW2Z1bmN0aW9uSW5kZXhdLnN0YXJ0LCAiIGFuZCBlbmRpbmcgYXQ6ICIsIGZ1bmN0
aW9uTG9jYXRpb25zW2Z1bmN0aW9uSW5kZXhdLmVuZCk7CiAgICAgICAgIGNvbnN0IHVpbnQ4X3Qq
IGZ1bmN0aW9uU3RhcnQgPSBtX3NvdXJjZSArIGZ1bmN0aW9uTG9jYXRpb25zW2Z1bmN0aW9uSW5k
ZXhdLnN0YXJ0OwogICAgICAgICBzaXplX3QgZnVuY3Rpb25MZW5ndGggPSBmdW5jdGlvbkxvY2F0
aW9uc1tmdW5jdGlvbkluZGV4XS5lbmQgLSBmdW5jdGlvbkxvY2F0aW9uc1tmdW5jdGlvbkluZGV4
XS5zdGFydDsKICAgICAgICAgQVNTRVJUKGZ1bmN0aW9uTGVuZ3RoIDw9IG1fc291cmNlTGVuZ3Ro
KTsKQEAgLTEyMCw3ICsxMjIsNyBAQCBib29sIEJCUVBsYW46OnBhcnNlQW5kVmFsaWRhdGVNb2R1
bGUoKQogCiAgICAgICAgIGF1dG8gdmFsaWRhdGlvblJlc3VsdCA9IHZhbGlkYXRlRnVuY3Rpb24o
ZnVuY3Rpb25TdGFydCwgZnVuY3Rpb25MZW5ndGgsIHNpZ25hdHVyZSwgbV9tb2R1bGVJbmZvcm1h
dGlvbi5nZXQoKSk7CiAgICAgICAgIGlmICghdmFsaWRhdGlvblJlc3VsdCkgewotICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGlmIChXYXNtQkJRUGxhbkludGVybmFsOjp2
ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZ1bmN0
aW9uTGVuZ3RoOyArK2kpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coUmF3UG9pbnRlcihy
ZWludGVycHJldF9jYXN0PHZvaWQqPihmdW5jdGlvblN0YXJ0W2ldKSksICIsICIpOwogICAgICAg
ICAgICAgICAgIGRhdGFMb2dMbigpOwpAQCAtMTMwLDcgKzEzMiw3IEBAIGJvb2wgQkJRUGxhbjo6
cGFyc2VBbmRWYWxpZGF0ZU1vZHVsZSgpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAodmVy
Ym9zZSB8fCBPcHRpb25zOjpyZXBvcnRDb21waWxlVGltZXMoKSkKKyAgICBpZiAoV2FzbUJCUVBs
YW5JbnRlcm5hbDo6dmVyYm9zZSB8fCBPcHRpb25zOjpyZXBvcnRDb21waWxlVGltZXMoKSkKICAg
ICAgICAgZGF0YUxvZ0xuKCJUb29rICIsIChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0VGlt
ZSkubWljcm9zZWNvbmRzKCksICIgdXMgdG8gdmFsaWRhdGUgbW9kdWxlIik7CiAKICAgICBtb3Zl
VG9TdGF0ZShTdGF0ZTo6VmFsaWRhdGVkKTsKQEAgLTE0Miw3ICsxNDQsNyBAQCBib29sIEJCUVBs
YW46OnBhcnNlQW5kVmFsaWRhdGVNb2R1bGUoKQogdm9pZCBCQlFQbGFuOjpwcmVwYXJlKCkKIHsK
ICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6VmFsaWRhdGVkKTsKLSAgICBkYXRhTG9nTG5J
Zih2ZXJib3NlLCAiU3RhcnRpbmcgcHJlcGFyYXRpb24iKTsKKyAgICBkYXRhTG9nTG5JZihXYXNt
QkJRUGxhbkludGVybmFsOjp2ZXJib3NlLCAiU3RhcnRpbmcgcHJlcGFyYXRpb24iKTsKIAogICAg
IGF1dG8gdHJ5UmVzZXJ2ZUNhcGFjaXR5ID0gW3RoaXNdIChhdXRvJiB2ZWN0b3IsIHNpemVfdCBz
aXplLCBjb25zdCBjaGFyKiB3aGF0KSB7CiAgICAgICAgIGlmIChVTkxJS0VMWSghdmVjdG9yLnRy
eVJlc2VydmVDYXBhY2l0eShzaXplKSkpIHsKQEAgLTE3NCw3ICsxNzYsNyBAQCB2b2lkIEJCUVBs
YW46OnByZXBhcmUoKQogICAgICAgICBpZiAoaW1wb3J0LT5raW5kICE9IEV4dGVybmFsS2luZDo6
RnVuY3Rpb24pCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgdW5zaWduZWQgaW1wb3J0
RnVuY3Rpb25JbmRleCA9IG1fd2FzbVRvV2FzbUV4aXRTdHVicy5zaXplKCk7Ci0gICAgICAgIGRh
dGFMb2dMbklmKHZlcmJvc2UsICJQcm9jZXNzaW5nIGltcG9ydCBmdW5jdGlvbiBudW1iZXIgIiwg
aW1wb3J0RnVuY3Rpb25JbmRleCwgIjogIiwgbWFrZVN0cmluZyhpbXBvcnQtPm1vZHVsZSksICI6
ICIsIG1ha2VTdHJpbmcoaW1wb3J0LT5maWVsZCkpOworICAgICAgICBkYXRhTG9nTG5JZihXYXNt
QkJRUGxhbkludGVybmFsOjp2ZXJib3NlLCAiUHJvY2Vzc2luZyBpbXBvcnQgZnVuY3Rpb24gbnVt
YmVyICIsIGltcG9ydEZ1bmN0aW9uSW5kZXgsICI6ICIsIG1ha2VTdHJpbmcoaW1wb3J0LT5tb2R1
bGUpLCAiOiAiLCBtYWtlU3RyaW5nKGltcG9ydC0+ZmllbGQpKTsKICAgICAgICAgYXV0byBiaW5k
aW5nID0gd2FzbVRvV2FzbShpbXBvcnRGdW5jdGlvbkluZGV4KTsKICAgICAgICAgaWYgKFVOTElL
RUxZKCFiaW5kaW5nKSkgewogICAgICAgICAgICAgc3dpdGNoIChiaW5kaW5nLmVycm9yKCkpIHsK
QEAgLTIzMCw3ICsyMzIsNyBAQCBwdWJsaWM6CiB2b2lkIEJCUVBsYW46OmNvbXBpbGVGdW5jdGlv
bnMoQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogewogICAgIEFTU0VSVChtX3N0YXRlID49IFN0
YXRlOjpQcmVwYXJlZCk7Ci0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIlN0YXJ0aW5nIGNvbXBp
bGF0aW9uIik7CisgICAgZGF0YUxvZ0xuSWYoV2FzbUJCUVBsYW5JbnRlcm5hbDo6dmVyYm9zZSwg
IlN0YXJ0aW5nIGNvbXBpbGF0aW9uIik7CiAKICAgICBpZiAoIWhhc1dvcmsoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjk0LDcgKzI5Niw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9u
cyhDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiB2b2lkIEJCUVBsYW46OmNvbXBsZXRlKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6
OkNvbXBpbGVkIHx8IG1fY3VycmVudEluZGV4ID49IG1fbW9kdWxlSW5mb3JtYXRpb24tPmZ1bmN0
aW9uTG9jYXRpb25JbkJpbmFyeS5zaXplKCkpOwotICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJT
dGFydGluZyBDb21wbGV0aW9uIik7CisgICAgZGF0YUxvZ0xuSWYoV2FzbUJCUVBsYW5JbnRlcm5h
bDo6dmVyYm9zZSwgIlN0YXJ0aW5nIENvbXBsZXRpb24iKTsKIAogICAgIGlmICghZmFpbGVkKCkg
JiYgbV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGlsZWQpIHsKICAgICAgICAgZm9yICh1aW50MzJfdCBm
dW5jdGlvbkluZGV4ID0gMDsgZnVuY3Rpb25JbmRleCA8IG1fbW9kdWxlSW5mb3JtYXRpb24tPmZ1
bmN0aW9uTG9jYXRpb25JbkJpbmFyeS5zaXplKCk7IGZ1bmN0aW9uSW5kZXgrKykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNw
cAppbmRleCBlODZmZDQ3OTkwZTg4ODhkMjZmZGRmYTczOTRlNDc2YWJjYzgwMTg0Li4yYjFkODI4
ZTI3Yzc1MzUwZmRkOTRmYzE5NWNlNjRkN2MxZWM1YTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcApAQCAtNDIsOCAr
NDIsMTAgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKIG5hbWVzcGFjZSB7
CituYW1lc3BhY2UgV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsIHsKIHN0YXRpYyBjb25z
dCBib29sIHZlcmJvc2UgPSBmYWxzZTsKIH0KK30KIAogc3RhdGljIFN0YXRpY0xvY2sgY29kZUxv
Y2F0aW9uc0xvY2s7CiBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8c3RkOjp0dXBs
ZTx2b2lkKiwgdm9pZCo+Pj4gY29kZUxvY2F0aW9uczsgLy8gKHN0YXJ0LCBlbmQpCkBAIC01NSwz
MyArNTcsMzMgQEAgc3RhdGljIGJvb2wgZmFzdEhhbmRsZXJJbnN0YWxsZWQgeyBmYWxzZSB9Owog
c3RhdGljIFNpZ25hbEFjdGlvbiB0cmFwSGFuZGxlcihTaWduYWwsIFNpZ0luZm8mIHNpZ0luZm8s
IFBsYXRmb3JtUmVnaXN0ZXJzJiBjb250ZXh0KQogewogICAgIHZvaWQqIGZhdWx0aW5nSW5zdHJ1
Y3Rpb24gPSBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRleHQpOwotICAg
IGRhdGFMb2dMbklmKHZlcmJvc2UsICJzdGFydGluZyBoYW5kbGVyIGZvciBmYXVsdCBhdDogIiwg
UmF3UG9pbnRlcihmYXVsdGluZ0luc3RydWN0aW9uKSk7CisgICAgZGF0YUxvZ0xuSWYoV2FzbUZh
dWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAic3RhcnRpbmcgaGFuZGxlciBmb3Ig
ZmF1bHQgYXQ6ICIsIFJhd1BvaW50ZXIoZmF1bHRpbmdJbnN0cnVjdGlvbikpOwogCi0gICAgZGF0
YUxvZ0xuSWYodmVyYm9zZSwgIkpJVCBtZW1vcnkgc3RhcnQ6ICIsIFJhd1BvaW50ZXIocmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oc3RhcnRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2wpKSwgIiBl
bmQ6ICIsIFJhd1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZW5kT2ZGaXhlZEV4ZWN1
dGFibGVNZW1vcnlQb29sKSkpOworICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRs
ZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkpJVCBtZW1vcnkgc3RhcnQ6ICIsIFJhd1BvaW50ZXIocmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhcnRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2wpKSwg
IiBlbmQ6ICIsIFJhd1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZW5kT2ZGaXhlZEV4
ZWN1dGFibGVNZW1vcnlQb29sKSkpOwogICAgIC8vIEZpcnN0IHdlIG5lZWQgdG8gbWFrZSBzdXJl
IHdlIGFyZSBpbiBKSVQgY29kZSBiZWZvcmUgd2UgY2FuIGFxdWlyZSBhbnkgbG9ja3MuIE90aGVy
d2lzZSwKICAgICAvLyB3ZSBtaWdodCBoYXZlIGNyYXNoZWQgaW4gY29kZSB0aGF0IGlzIGFscmVh
ZHkgaG9sZGluZyBvbmUgb2YgdGhlIGxvY2tzIHdlIHdhbnQgdG8gYXF1aXJlLgogICAgIGlmIChp
c0pJVFBDKGZhdWx0aW5nSW5zdHJ1Y3Rpb24pKSB7CiAgICAgICAgIGJvb2wgZmF1bHRlZEluQWN0
aXZlRmFzdE1lbW9yeSA9IGZhbHNlOwogICAgICAgICB7CiAgICAgICAgICAgICB2b2lkKiBmYXVs
dGluZ0FkZHJlc3MgPSBzaWdJbmZvLmZhdWx0aW5nQWRkcmVzczsKLSAgICAgICAgICAgIGRhdGFM
b2dMbklmKHZlcmJvc2UsICJjaGVja2luZyBmYXVsdGluZyBhZGRyZXNzOiAiLCBSYXdQb2ludGVy
KGZhdWx0aW5nQWRkcmVzcyksICIgaXMgaW4gYW4gYWN0aXZlIGZhc3QgbWVtb3J5Iik7CisgICAg
ICAgICAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJv
c2UsICJjaGVja2luZyBmYXVsdGluZyBhZGRyZXNzOiAiLCBSYXdQb2ludGVyKGZhdWx0aW5nQWRk
cmVzcyksICIgaXMgaW4gYW4gYWN0aXZlIGZhc3QgbWVtb3J5Iik7CiAgICAgICAgICAgICBmYXVs
dGVkSW5BY3RpdmVGYXN0TWVtb3J5ID0gV2FzbTo6TWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUZh
c3RNZW1vcnkoZmF1bHRpbmdBZGRyZXNzKTsKICAgICAgICAgfQogICAgICAgICBpZiAoZmF1bHRl
ZEluQWN0aXZlRmFzdE1lbW9yeSkgewotICAgICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwg
ImZvdW5kIGFjdGl2ZSBmYXN0IG1lbW9yeSBmb3IgZmF1bHRpbmcgYWRkcmVzcyIpOworICAgICAg
ICAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3Nl
LCAiZm91bmQgYWN0aXZlIGZhc3QgbWVtb3J5IGZvciBmYXVsdGluZyBhZGRyZXNzIik7CiAgICAg
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihjb2RlTG9jYXRpb25zTG9jayk7CiAgICAgICAgICAg
ICBmb3IgKGF1dG8gcmFuZ2UgOiBjb2RlTG9jYXRpb25zLmdldCgpKSB7CiAgICAgICAgICAgICAg
ICAgdm9pZCogc3RhcnQ7CiAgICAgICAgICAgICAgICAgdm9pZCogZW5kOwogICAgICAgICAgICAg
ICAgIHN0ZDo6dGllKHN0YXJ0LCBlbmQpID0gcmFuZ2U7Ci0gICAgICAgICAgICAgICAgZGF0YUxv
Z0xuSWYodmVyYm9zZSwgImZ1bmN0aW9uIHN0YXJ0OiAiLCBSYXdQb2ludGVyKHN0YXJ0KSwgIiBl
bmQ6ICIsIFJhd1BvaW50ZXIoZW5kKSk7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2Fz
bUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAiZnVuY3Rpb24gc3RhcnQ6ICIs
IFJhd1BvaW50ZXIoc3RhcnQpLCAiIGVuZDogIiwgUmF3UG9pbnRlcihlbmQpKTsKICAgICAgICAg
ICAgICAgICBpZiAoc3RhcnQgPD0gZmF1bHRpbmdJbnN0cnVjdGlvbiAmJiBmYXVsdGluZ0luc3Ry
dWN0aW9uIDwgZW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2Us
ICJmb3VuZCBtYXRjaCIpOworICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihXYXNtRmF1
bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJmb3VuZCBtYXRjaCIpOwogICAgICAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZXhjZXB0aW9uU3R1YiA9IFRodW5r
czo6c2luZ2xldG9uKCkuZXhpc3RpbmdTdHViKHRocm93RXhjZXB0aW9uRnJvbVdhc21UaHVua0dl
bmVyYXRvcik7CiAgICAgICAgICAgICAgICAgICAgIC8vIElmIGZvciB3aGF0ZXZlciByZWFzb24g
d2UgZG9uJ3QgaGF2ZSBhIHN0dWIgdGhlbiB3ZSBzaG91bGQganVzdCB0cmVhdCB0aGlzIGxpa2Ug
YSByZWd1bGFyIGNyYXNoLgogICAgICAgICAgICAgICAgICAgICBpZiAoIWV4Y2VwdGlvblN0dWIp
CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZ0xuSWYodmVyYm9zZSwgImZvdW5kIHN0dWI6ICIsIFJhd1BvaW50ZXIoZXhjZXB0aW9uU3R1
Yi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJmb3VuZCBz
dHViOiAiLCBSYXdQb2ludGVyKGV4Y2VwdGlvblN0dWIuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNz
KCkpKTsKICAgICAgICAgICAgICAgICAgICAgTWFjaGluZUNvbnRleHQ6OmFyZ3VtZW50UG9pbnRl
cjwxPihjb250ZXh0KSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEV4Y2VwdGlvblR5cGU6Ok91
dE9mQm91bmRzTWVtb3J5QWNjZXNzKTsKICAgICAgICAgICAgICAgICAgICAgTWFjaGluZUNvbnRl
eHQ6Omluc3RydWN0aW9uUG9pbnRlcihjb250ZXh0KSA9IGV4Y2VwdGlvblN0dWIuY29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTaWduYWxBY3Rp
b246OkhhbmRsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
T01HUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAK
aW5kZXggNTkxOGY5MmJiODBiYmRlZTU0MDEwNDcxMzFkODMyYmQxOTZiZjc1Yi4uNzRjZjY1MzQ5
NzUyNWNlMjYxZDQwYzcyYzQ2MjNhY2Q4MGY2NWNlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21PTUdQbGFuLmNwcApAQCAtNDcsNyArNDcsOSBAQAogCiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIFdhc20gewogCituYW1lc3BhY2UgV2FzbU9NR1BsYW5JbnRlcm5hbCB7CiBz
dGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIE9NR1BsYW46Ok9NR1BsYW4o
UmVmPE1vZHVsZT4gbW9kdWxlLCB1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBNZW1vcnlNb2RlIG1v
ZGUsIENvbXBsZXRpb25UYXNrJiYgdGFzaykKICAgICA6IEJhc2UobnVsbHB0ciwgbWFrZVJlZihj
b25zdF9jYXN0PE1vZHVsZUluZm9ybWF0aW9uJj4obW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigp
KSksIFdURk1vdmUodGFzaykpCkBAIC01OCw3ICs2MCw3IEBAIE9NR1BsYW46Ok9NR1BsYW4oUmVm
PE1vZHVsZT4gbW9kdWxlLCB1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBNZW1vcnlNb2RlIG1vZGUs
IENvCiAgICAgc2V0TW9kZShtb2RlKTsKICAgICBBU1NFUlQobV9jb2RlQmxvY2stPnJ1bm5hYmxl
KCkpOwogICAgIEFTU0VSVChtX2NvZGVCbG9jay5wdHIoKSA9PSBtX21vZHVsZS0+Y29kZUJsb2Nr
Rm9yKG1fbW9kZSkpOwotICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJTdGFydGluZyBPTUcgcGxh
biBmb3IgIiwgZnVuY3Rpb25JbmRleCwgIiBvZiBtb2R1bGU6ICIsIFJhd1BvaW50ZXIoJm1fbW9k
dWxlLmdldCgpKSk7CisgICAgZGF0YUxvZ0xuSWYoV2FzbU9NR1BsYW5JbnRlcm5hbDo6dmVyYm9z
ZSwgIlN0YXJ0aW5nIE9NRyBwbGFuIGZvciAiLCBmdW5jdGlvbkluZGV4LCAiIG9mIG1vZHVsZTog
IiwgUmF3UG9pbnRlcigmbV9tb2R1bGUuZ2V0KCkpKTsKIH0KIAogdm9pZCBPTUdQbGFuOjp3b3Jr
KENvbXBpbGF0aW9uRWZmb3J0KQpAQCAtMTM4LDkgKzE0MCw5IEBAIHZvaWQgT01HUGxhbjo6d29y
ayhDb21waWxhdGlvbkVmZm9ydCkKIAogICAgICAgICBhdXRvIHJlcGF0Y2hDYWxscyA9IFsmXSAo
Y29uc3QgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiAgY2FsbHNpdGVzKSB7CiAgICAg
ICAgICAgICBmb3IgKGF1dG8mIGNhbGwgOiBjYWxsc2l0ZXMpIHsKLSAgICAgICAgICAgICAgICBk
YXRhTG9nTG5JZih2ZXJib3NlLCAiQ29uc2lkZXJpbmcgcmVwYXRjaGluZyBjYWxsIGF0OiAiLCBS
YXdQb2ludGVyKGNhbGwuY2FsbExvY2F0aW9uLmRhdGFMb2NhdGlvbigpKSwgIiB0aGF0IHRhcmdl
dHMgIiwgY2FsbC5mdW5jdGlvbkluZGV4U3BhY2UpOworICAgICAgICAgICAgICAgIGRhdGFMb2dM
bklmKFdhc21PTUdQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJDb25zaWRlcmluZyByZXBhdGNoaW5n
IGNhbGwgYXQ6ICIsIFJhd1BvaW50ZXIoY2FsbC5jYWxsTG9jYXRpb24uZGF0YUxvY2F0aW9uKCkp
LCAiIHRoYXQgdGFyZ2V0cyAiLCBjYWxsLmZ1bmN0aW9uSW5kZXhTcGFjZSk7CiAgICAgICAgICAg
ICAgICAgaWYgKGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlID09IGZ1bmN0aW9uSW5kZXhTcGFjZSkg
ewotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiUmVwYXRjaGluZyBj
YWxsIGF0OiAiLCBSYXdQb2ludGVyKGNhbGwuY2FsbExvY2F0aW9uLmRhdGFMb2NhdGlvbigpKSwg
IiB0byAiLCBSYXdQb2ludGVyKGVudHJ5cG9pbnQpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZ0xuSWYoV2FzbU9NR1BsYW5JbnRlcm5hbDo6dmVyYm9zZSwgIlJlcGF0Y2hpbmcgY2FsbCBh
dDogIiwgUmF3UG9pbnRlcihjYWxsLmNhbGxMb2NhdGlvbi5kYXRhTG9jYXRpb24oKSksICIgdG8g
IiwgUmF3UG9pbnRlcihlbnRyeXBvaW50KSk7CiAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwoY2FsbC5jYWxsTG9jYXRpb24sIENvZGVMb2NhdGlvbkxh
YmVsKGVudHJ5cG9pbnQpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0x
NTYsNyArMTU4LDcgQEAgdm9pZCBPTUdQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogICAg
ICAgICByZXBhdGNoQ2FsbHModW5saW5rZWRDYWxscyk7CiAgICAgfQogCi0gICAgZGF0YUxvZ0xu
SWYodmVyYm9zZSwgIkZpbmlzaGVkIHdpdGggdGllciB1cCBjb3VudCBhdDogIiwgbV9jb2RlQmxv
Y2stPnRpZXJVcENvdW50KG1fZnVuY3Rpb25JbmRleCkuY291bnQoKSk7CisgICAgZGF0YUxvZ0xu
SWYoV2FzbU9NR1BsYW5JbnRlcm5hbDo6dmVyYm9zZSwgIkZpbmlzaGVkIHdpdGggdGllciB1cCBj
b3VudCBhdDogIiwgbV9jb2RlQmxvY2stPnRpZXJVcENvdW50KG1fZnVuY3Rpb25JbmRleCkuY291
bnQoKSk7CiAgICAgY29tcGxldGUoaG9sZExvY2sobV9sb2NrKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcAppbmRleCAxNDgzYWM3NDg5MmIyZjE2NDJhNmNiMzYw
YmM2NDk4N2JjZjVmMTFmLi5iYTI3Y2Y5Zjk2ZjU1NTBmMmY0ODEyZTA5MTI0YjViZjgxMDA1YWNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwCkBAIC00Nyw3ICs0Nyw5
IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKK25hbWVzcGFjZSBXYXNt
UGxhbkludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAog
UGxhbjo6UGxhbihWTSogdm0sIFJlZjxNb2R1bGVJbmZvcm1hdGlvbj4gaW5mbywgQ29tcGxldGlv
blRhc2smJiB0YXNrKQogICAgIDogbV9tb2R1bGVJbmZvcm1hdGlvbihXVEZNb3ZlKGluZm8pKQpA
QCAtMTI4LDcgKzEzMCw3IEBAIGJvb2wgUGxhbjo6dHJ5UmVtb3ZlVk1BbmRDYW5jZWxJZkxhc3Qo
Vk0mIHZtKQogCiB2b2lkIFBsYW46OmZhaWwoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwg
U3RyaW5nJiYgZXJyb3JNZXNzYWdlKQogewotICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJmYWls
aW5nIHdpdGggbWVzc2FnZTogIiwgZXJyb3JNZXNzYWdlKTsKKyAgICBkYXRhTG9nTG5JZihXYXNt
UGxhbkludGVybmFsOjp2ZXJib3NlLCAiZmFpbGluZyB3aXRoIG1lc3NhZ2U6ICIsIGVycm9yTWVz
c2FnZSk7CiAgICAgbV9lcnJvck1lc3NhZ2UgPSBXVEZNb3ZlKGVycm9yTWVzc2FnZSk7CiAgICAg
Y29tcGxldGUobG9ja2VyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21TaWduYXR1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNp
Z25hdHVyZS5jcHAKaW5kZXggYjIyOThkNjVjYmFiOGQ1MGJlODdlMDIyZGE0M2JiNjIyYzU4ZmU3
Yi4uOGI2MDBlZDM4NjQ0MzEyODgyZjEzYzVmNDlmYzhmZDllNjc5Mjk3NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5jcHAKQEAgLTM2LDcgKzM2LDkgQEAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKIG5hbWVzcGFjZSB7Ci1jb25zdCBi
b29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBXYXNtU2lnbmF0dXJlSW50ZXJuYWwgewor
c3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogfQogCiBTdHJpbmcgU2lnbmF0
dXJlOjp0b1N0cmluZygpIGNvbnN0CkBAIC0xMDMsNyArMTA1LDcgQEAgc3RkOjpwYWlyPFNpZ25h
dHVyZUluZGV4LCBSZWY8U2lnbmF0dXJlPj4gU2lnbmF0dXJlSW5mb3JtYXRpb246OmFkb3B0KFJl
ZjxTaWduYXQKICAgICAgICAgKytpbmZvLm1fbmV4dEluZGV4OwogICAgICAgICBSRUxFQVNFX0FT
U0VSVChpbmZvLm1fbmV4dEluZGV4ID4gbmV4dFZhbHVlKTsgLy8gY3Jhc2ggb24gb3ZlcmZsb3cu
CiAgICAgICAgIEFTU0VSVChuZXh0VmFsdWUgPT0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7
Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoV2FzbVNpZ25hdHVyZUludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZ0xuKCJBZG9wdCBuZXcgc2lnbmF0dXJlICIs
IHNpZ25hdHVyZS5nZXQoKSwgIiB3aXRoIGluZGV4ICIsIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUsICIgaGFzaDogIiwgc2lnbmF0dXJlLT5oYXNoKCkpOwogCiAgICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gaW5mby5tX2luZGV4TWFwLmFkZChuZXh0VmFsdWUsIHNpZ25hdHVyZS5jb3B5UmVmKCkp
OwpAQCAtMTExLDcgKzExMyw3IEBAIHN0ZDo6cGFpcjxTaWduYXR1cmVJbmRleCwgUmVmPFNpZ25h
dHVyZT4+IFNpZ25hdHVyZUluZm9ybWF0aW9uOjphZG9wdChSZWY8U2lnbmF0CiAgICAgICAgIEFT
U0VSVChpbmZvLm1faW5kZXhNYXAuc2l6ZSgpID09IGluZm8ubV9zaWduYXR1cmVNYXAuc2l6ZSgp
KTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG5leHRWYWx1ZSwgV1RGTW92ZShzaWdu
YXR1cmUpKTsKICAgICB9Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKFdhc21TaWduYXR1cmVJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZ0xuKCJFeGlzdGluZyBzaWduYXR1cmUg
Iiwgc2lnbmF0dXJlLmdldCgpLCAiIHdpdGggaW5kZXggIiwgYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSwgIiBoYXNoOiAiLCBzaWduYXR1cmUtPmhhc2goKSk7CiAgICAgQVNTRVJUKGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgIT0gU2lnbmF0dXJlOjppbnZhbGlkSW5kZXgpOwogICAgIEFTU0VS
VChpbmZvLm1faW5kZXhNYXAuY29udGFpbnMoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKaW5kZXggNzZhODdh
YzFiNDczNmYzY2YzN2MzNTM5ZGJjOTYxZjY3ODZhMDEzNC4uOWM1YjY4NDRjNDZiNzRmMDI2ZTBk
ODU2YjQxOWNlOTc1YzYwMDkyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVdvcmtsaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
V29ya2xpc3QuY3BwCkBAIC0zMyw3ICszMyw5IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgV2FzbSB7CiAKK25hbWVzcGFjZSBXYXNtV29ya2xpc3RJbnRlcm5hbCB7CiBzdGF0aWMgY29u
c3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNvbnN0IGNoYXIqIFdvcmtsaXN0Ojpwcmlv
cml0eVN0cmluZyhQcmlvcml0eSBwcmlvcml0eSkKIHsKQEAgLTE0NCw3ICsxNDYsNyBAQCB2b2lk
IFdvcmtsaXN0OjplbnF1ZXVlKFJlZjxQbGFuPiBwbGFuKQogICAgICAgICAgICAgQVNTRVJUX1VO
VVNFRChlbGVtZW50LCBlbGVtZW50LnBsYW4uZ2V0KCkgIT0gJnBsYW4uZ2V0KCkpOwogICAgIH0K
IAotICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJFbnF1ZXVpbmcgcGxhbiIpOworICAgIGRhdGFM
b2dMbklmKFdhc21Xb3JrbGlzdEludGVybmFsOjp2ZXJib3NlLCAiRW5xdWV1aW5nIHBsYW4iKTsK
ICAgICBtX3F1ZXVlLmVucXVldWUoeyBQcmlvcml0eTo6UHJlcGFyYXRpb24sIG5leHRUaWNrZXQo
KSwgIFdURk1vdmUocGxhbikgfSk7CiAgICAgbV9wbGFuRW5xdWV1ZWQtPm5vdGlmeU9uZShsb2Nr
ZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oIGIvU291cmNl
L1dURi93dGYvQXNzZXJ0aW9ucy5oCmluZGV4IDNiMDQzNzk5YTBhNGU0YmRlMGFmZGY1MGMyYWQw
NjBlMTU5Mjk2M2EuLjE3OWY1MThlZDY0ZThiNTJkMGEzY2Q3ZmRjZWRmZWM3ZTNjMjdmZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9Bc3NlcnRpb25zLmgKQEAgLTUzNSwxOCArNTM1LDIyIEBAIGlubGluZSB2b2lkIGNvbXBpbGVy
RmVuY2VGb3JDcmFzaCgpCiAjZW5kaWYKIH0KIAotI2lmbmRlZiBDUkFTSF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OX0FORF9JTkZPCisjaWZuZGVmIENSQVNIX1dJVEhfSU5GTwogLy8gVGhpcyBp
cyB1c2VmdWwgaWYgeW91IGFyZSBnb2luZyB0byBzdHVmZiBkYXRhIGludG8gcmVnaXN0ZXJzIGJl
Zm9yZSBjcmFzaGluZy4gTGlrZSB0aGUgY3Jhc2hXaXRoSW5mbyBmdW5jdGlvbnMgYmVsb3cuLi4K
IC8vIEdDQyBkb2Vzbid0IGxpa2UgdGhlICMjX19WQV9BUkdTX18gaGVyZSBzaW5jZSB0aGlzIG1h
Y3JvIGlzIGNhbGxlZCBmcm9tIGFub3RoZXIgbWFjcm8gc28gd2UganVzdCBDUkFTSCBpbnN0ZWFk
IHRoZXJlLgogI2lmIENPTVBJTEVSKENMQU5HKSB8fCBDT01QSUxFUihNU1ZDKQotI2RlZmluZSBD
UkFTSF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OX0FORF9JTkZPKC4uLikgZG8geyBcCisjZGVm
aW5lIENSQVNIX1dJVEhfSU5GTyguLi4pIGRvIHsgXAogICAgICAgICBXVEY6OmlzSW50ZWdyYWxU
eXBlKF9fVkFfQVJHU19fKTsgXAogICAgICAgICBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgXAog
ICAgICAgICBXVEZDcmFzaFdpdGhJbmZvKF9fTElORV9fLCBfX0ZJTEVfXywgV1RGX1BSRVRUWV9G
VU5DVElPTiwgX19DT1VOVEVSX18sICMjX19WQV9BUkdTX18pOyBcCiAgICAgfSB3aGlsZSAoZmFs
c2UpCiAjZWxzZQotI2RlZmluZSBDUkFTSF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OX0FORF9J
TkZPKC4uLikgQ1JBU0goKQorI2RlZmluZSBDUkFTSF9XSVRIX0lORk8oLi4uKSBDUkFTSCgpCiAj
ZW5kaWYKKyNlbmRpZiAvLyBDUkFTSF9XSVRIX0lORk8KKworI2lmbmRlZiBDUkFTSF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OX0FORF9JTkZPCisjZGVmaW5lIENSQVNIX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT05fQU5EX0lORk8gQ1JBU0hfV0lUSF9JTkZPCiAjZW5kaWYgLy8gQ1JBU0hfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTl9BTkRfSU5GTwogCiAjZW5kaWYgLy8gX19jcGx1c3BsdXMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320487</attachid>
            <date>2017-09-11 15:26:16 -0700</date>
            <delta_ts>2017-09-12 00:10:28 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-176076-20170911152612.patch</filename>
            <type>text/plain</type>
            <size>199859</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxODU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YmNjZWFjYzVkY2IxNTdmMjAzMDNkYzUzODlmOGMzNzk0YWQwMTlmLi5hN2MwMjBhMTM0ZDk5NzVj
MGYzZjI4MzljMjgwYzJjMmY0MzY0Yzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMjcgQEAKKzIwMTctMDktMTEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgRG8gdW5pZmllZCBzb3VyY2UgYnVpbGRzIGZvciBKU0MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjA3NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEpTQyBidWlsZHMgd2l0
aCBDTWFrZSBsb2NhbGx5LgorCisgICAgICAgIFRoaW5ncyB0byBkbzoKKworICAgICAgICBNb3Zl
IGJ1bmRsZXIgdG8gZ2VuZXJhbCBzY3JpcHQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBiMy9CM0NoZWNrU3BlY2lhbC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpDaGVj
a1NwZWNpYWw6OmZvckVhY2hBcmcpOgorICAgICAgICAoSlNDOjpCMzo6Q2hlY2tTcGVjaWFsOjpn
ZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Om51bUIzQXJncyk6IERlbGV0ZWQuCisg
ICAgICAgICogYjMvQjNEdXBsaWNhdGVUYWlscy5jcHA6CisgICAgICAgICogYjMvQjNFbGltaW5h
dGVDb21tb25TdWJleHByZXNzaW9ucy5jcHA6CisgICAgICAgICogYjMvQjNGaXhTU0EuY3BwOgor
ICAgICAgICAoSlNDOjpCMzo6ZGVtb3RlVmFsdWVzKToKKyAgICAgICAgKiBiMy9CM0ZvbGRQYXRo
Q29uc3RhbnRzLmNwcDoKKyAgICAgICAgKiBiMy9CM0luZmVyU3dpdGNoZXMuY3BwOgorICAgICAg
ICAqIGIzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwOgorICAgICAgICAoKTog
RGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpMb3dlclRvQWlyOjpMb3dlclRvQWlyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6cnVuKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6c2hvdWxkQ29weVByb3BhZ2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OkFyZ1Byb21pc2UpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjpzd2FwKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6
b3BlcmF0b3I9KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
QXJnUHJvbWlzZTo6fkFyZ1Byb21pc2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjpzZXRUcmFwcyk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OnRtcCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6Om9wZXJhdG9yIGJvb2wg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQ
cm9taXNlOjpraW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6cGVlayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OmNvbnN1bWUpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjppbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dG1wKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dG1wUHJvbWlzZSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNhbkJlSW50ZXJuYWwpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpjb21taXRJbnRlcm5hbCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyb3NzZXNJbnRlcmZl
cmVuY2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzY2Fs
ZUZvclNobCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmVm
ZmVjdGl2ZUFkZHIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
OjphZGRyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJh
cHBpbmdJbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
bG9hZFByb21pc2VBbnlPcGNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpsb2FkUHJvbWlzZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okxvd2VyVG9BaXI6OmltbSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6OmJpdEltbSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OmJpdEltbTY0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fp
cjo6aW1tT3JUbXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
Ojp0cnlPcGNvZGVGb3JUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6b3Bjb2RlRm9yVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okxvd2VyVG9BaXI6OmFwcGVuZFVuT3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjpwcmVmZXJSaWdodEZvclJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZEJpbk9wKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kU2hpZnQpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0cnlBcHBlbmRTdG9yZVVuT3ApOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0cnlBcHBlbmRTdG9yZUJpbk9w
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRlU3Rv
cmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzdG9yZU9w
Y29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVu
ZFN0b3JlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bW92
ZUZvclR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpy
ZWxheGVkTW92ZUZvclR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpwcmludCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OmFwcGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OmFwcGVuZFRyYXBwaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJU
b0Fpcjo6ZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bmV3QmxvY2spOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzcGxpdEJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6ZW5zdXJlU3BlY2lhbCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmVuc3VyZUNoZWNrU3BlY2lhbCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmZpbGxTdGFja21hcCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZUdlbmVyaWNDb21w
YXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRl
QnJhbmNoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3Jl
YXRlQ29tcGFyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OmNyZWF0ZVNlbGVjdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OnRyeUFwcGVuZExlYSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6OmFwcGVuZFg4NkRpdik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6OmFwcGVuZFg4NlVEaXYpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjpsb2FkTGlua09wY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OnN0b3JlQ29uZE9wY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZENBUyk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFZvaWRBdG9taWMpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRHZW5lcmFsQXRvbWljKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG93ZXIpOiBEZWxldGVk
LgorICAgICAgICAqIGIzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwOgorICAgICAgICAoSlNDOjpC
Mzo6UGF0Y2hwb2ludFNwZWNpYWw6OmdlbmVyYXRlKToKKyAgICAgICAgKiBiMy9CM1JlZHVjZURv
dWJsZVRvRmxvYXQuY3BwOgorICAgICAgICAoSlNDOjpCMzo6cmVkdWNlRG91YmxlVG9GbG9hdCk6
CisgICAgICAgICogYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHA6CisgICAgICAgICogYjMvQjNTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMuY3BwOgorICAgICAgICAqIGIzL0IzU3RhY2ttYXBTcGVjaWFs
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlN0YWNrbWFwU3BlY2lhbDo6cmVwc0ltcGwpOgorICAg
ICAgICAoSlNDOjpCMzo6U3RhY2ttYXBTcGVjaWFsOjpyZXBGb3JBcmcpOgorICAgICAgICAqIGIz
L2Fpci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6YWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZyk6CisgICAgICAgICogYjMvYWly
L0FpckVtaXRTaHVmZmxlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6ZW1pdFNodWZmbGUp
OgorICAgICAgICAqIGIzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcDoKKyAgICAgICAgKiBi
My9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
bG93ZXJBZnRlclJlZ0FsbG9jKToKKyAgICAgICAgKiBiMy9haXIvQWlyU3RhY2tBbGxvY2F0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6YXR0ZW1wdEFzc2lnbm1lbnQpOgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjphc3NpZ24pOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVERkdTdGF0dXNlcyk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVt
aXRET01KSVRHZXR0ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0LmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6Cisg
ICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcyk6CisgICAgICAgIChKU0M6
OlBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Qcm9w
ZXJ0eUNvbmRpdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjppc1N0
aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCBjb25zdCk6CisgICAgICAg
ICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0Vs
aW1pbmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OkRlbGF5ZWRTZXRMb2NhbDo6RGVs
YXllZFNldExvY2FsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5p
bmdDb3N0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lubGluZUNhbGwp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBsYW5Mb2FkKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6c3RvcmUpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6bGlua0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bGlua0Js
b2Nrcyk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
SW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0
cmFjdFN0YXRlOjptZXJnZSk6CisgICAgICAgICogZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmlu
Z1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFz
ZTo6aGFuZGxlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRp
b25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR01vdkhpbnRSZW1vdmFsUGhhc2UuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHUGhhbnRvbUluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
UHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhh
c2UuY3BwOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXAuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OkFic3RyYWN0SGVhcDo6Y29tcHV0ZSk6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9z
aXRvcnk6OmRlY29yYXRlTWVtb3J5KToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5OjpkZWNvcmF0ZUNDYWxsUmVhZCk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVDQ2FsbFdyaXRlKToKKyAgICAgICAgKEpTQzo6RlRM
OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZVBhdGNocG9pbnRSZWFkKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZVBhdGNocG9pbnRX
cml0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3Jh
dGVGZW5jZVJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6
OmRlY29yYXRlRmVuY2VXcml0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVw
b3NpdG9yeTo6ZGVjb3JhdGVGZW5jZWRBY2Nlc3MpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3Ry
YWN0SGVhcFJlcG9zaXRvcnk6OmNvbXB1dGVSYW5nZXNBbmREZWNvcmF0ZUluc3RydWN0aW9ucyk6
CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgor
ICAgICAgICAqIGhlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwOgorICAgICAgICAoSlNDOjpN
YXJraW5nQ29uc3RyYWludFNldDo6YWRkKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9TaGFkb3dD
aGlja2VuLmNwcDoKKyAgICAgICAgKEpTQzo6U2hhZG93Q2hpY2tlbjo6dXBkYXRlKToKKyAgICAg
ICAgKiBqaXQvQmluYXJ5U3dpdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6QmluYXJ5U3dpdGNoOjpC
aW5hcnlTd2l0Y2gpOgorICAgICAgICAoSlNDOjpCaW5hcnlTd2l0Y2g6OmJ1aWxkKToKKyAgICAg
ICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6bG9h
ZFN0YXRzKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnNhdmVTdGF0cyk6CisgICAgICAg
ICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFycmF5UHJvdG90
eXBlOjp0cnlJbml0aWFsaXplU3BlY2llc1dhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBcnJh
eVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ6OmhhbmRsZUZpcmUp
OgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkZp
bmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3I6OkZpbmRGaXJzdENhbGxlckZy
YW1lV2l0aENvZGVibG9ja0Z1bmN0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGaW5kRmly
c3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjpvcGVyYXRvcigpKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2NrRnVuY3Rvcjo6
Zm91bmRDYWxsRnJhbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGaW5kRmlyc3RD
YWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjppbmRleCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJ
bnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCk6CisgICAgICAgICog
cnVudGltZS9Qcm9taXNlRGVmZXJyZWRUaW1lci5jcHA6CisgICAgICAgIChKU0M6OlByb21pc2VE
ZWZlcnJlZFRpbWVyOjpkb1dvcmspOgorICAgICAgICAoSlNDOjpQcm9taXNlRGVmZXJyZWRUaW1l
cjo6YWRkUGVuZGluZ1Byb21pc2UpOgorICAgICAgICAoSlNDOjpQcm9taXNlRGVmZXJyZWRUaW1l
cjo6Y2FuY2VsUGVuZGluZ1Byb21pc2UpOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVByb2ZpbGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVByb2ZpbGVyOjppbnNlcnROZXdMb2NhdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwOgorICAgICAgICAoSlNDOjpUeXBl
UHJvZmlsZXJMb2c6OnByb2Nlc3NMb2dFbnRyaWVzKToKKyAgICAgICAgKiBydW50aW1lL1dlYWtN
YXBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwRGVsZXRlKToK
KyAgICAgICAgKEpTQzo6cHJvdG9GdW5jV2Vha01hcEdldCk6CisgICAgICAgIChKU0M6OnByb3Rv
RnVuY1dlYWtNYXBIYXMpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwU2V0KToKKyAg
ICAgICAgKEpTQzo6Z2V0V2Vha01hcERhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
V2Vha1NldFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtTZXREZWxl
dGUpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrU2V0SGFzKToKKyAgICAgICAgKEpTQzo6
cHJvdG9GdW5jV2Vha1NldEFkZCk6CisgICAgICAgIChKU0M6OmdldFdlYWtNYXBEYXRhKTogRGVs
ZXRlZC4KKyAgICAgICAgKiB0ZXN0UmVnRXhwLmNwcDoKKyAgICAgICAgKHRlc3RPbmVSZWdFeHAp
OgorICAgICAgICAocnVuRnJvbUZpbGVzKToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlKToKKyAgICAgICAg
KiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6bW92
ZVRvU3RhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpwYXJzZUFuZFZhbGlkYXRl
TW9kdWxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6cHJlcGFyZSk6CisgICAgICAg
IChKU0M6Oldhc206OkJCUVBsYW46OmNvbXBpbGVGdW5jdGlvbnMpOgorICAgICAgICAoSlNDOjpX
YXNtOjpCQlFQbGFuOjpjb21wbGV0ZSk6CisgICAgICAgICogd2FzbS9XYXNtRmF1bHRTaWduYWxI
YW5kbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6dHJhcEhhbmRsZXIpOgorICAgICAgICAq
IHdhc20vV2FzbU9NR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjpPTUdQ
bGFuKToKKyAgICAgICAgKEpTQzo6V2FzbTo6T01HUGxhbjo6d29yayk6CisgICAgICAgICogd2Fz
bS9XYXNtUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlBsYW46OmZhaWwpOgorICAgICAg
ICAqIHdhc20vV2FzbVNpZ25hdHVyZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlNpZ25hdHVy
ZUluZm9ybWF0aW9uOjphZG9wdCk6CisgICAgICAgICogd2FzbS9XYXNtV29ya2xpc3QuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpXb3JrbGlzdDo6ZW5xdWV1ZSk6CisKIDIwMTctMDktMDMgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0RGR10gT3B0
aW1pemUgV2Vha01hcDo6Z2V0IGJ5IGFkZGluZyBpbnRyaW5zaWMgYW5kIGZpeHVwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGFm
ODVmNWYzY2Q0NTdhNDRlOTkyNWE5YWNmMzZmMWMxOWYzOWRhMjcuLmM1NTQ0Mzg5ZjgwNDRhMDU2
ODlhZjM3ODBkMDUwOWI0Y2E3NDQyZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDktMTEg
IEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgRG8gdW5p
ZmllZCBzb3VyY2UgYnVpbGRzIGZvciBKU0MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NjA3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuaDoKKwogMjAxNy0wOS0wMyAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbREZHXSBPcHRp
bWl6ZSBXZWFrTWFwOjpnZXQgYnkgYWRkaW5nIGludHJpbnNpYyBhbmQgZml4dXAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBkYTFiYTFkOWJlMTU3YjU4M2M4MTA3OGJhZGJl
ZmRlYWQ1YmIyMGZhLi4wNTNlOTM3M2RlYWRkZWQzN2JlZDA3NTcxYmNhMWZiN2MwYTNmYzUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMDE3LDYgKzEwMTcsNzEgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICB5YXJyL1lhcnJTeW50YXhDaGVja2VyLmNw
cAogKQogCitzZXQoX3VuaWZpZWRTb3VyY2VDb3VudCAwKQorbGlzdChTT1JUIEphdmFTY3JpcHRD
b3JlX1NPVVJDRVMpCitsaXN0KExFTkdUSCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTIEphdmFTY3Jp
cHRDb3JlX1NPVVJDRV9DT1VOVCkKK21hdGgoRVhQUiBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VfQ09V
TlQgIiR7SmF2YVNjcmlwdENvcmVfU09VUkNFX0NPVU5UfSAtIDEiKQorZm9yZWFjaCAoX2luZGV4
IFJBTkdFICR7SmF2YVNjcmlwdENvcmVfU09VUkNFX0NPVU5UfSkKKyAgICBtYXRoKEVYUFIgX25l
d1VuaWZpZWRTb3VyY2VGaWxlICIke19pbmRleH0gJSA4IikKKyAgICBsaXN0KEdFVCBKYXZhU2Ny
aXB0Q29yZV9TT1VSQ0VTICR7X2luZGV4fSBfc291cmNlRmlsZSkKKyAgICBpZiAoKE5PVCAke19u
ZXdVbmlmaWVkU291cmNlRmlsZX0pKQorICAgICAgICBtYXRoKEVYUFIgX3VuaWZpZWRTb3VyY2VD
b3VudCAiJHtfdW5pZmllZFNvdXJjZUNvdW50fSArIDEiKQorICAgICAgICBzZXQoX3VuaWZpZWRT
b3VyY2VOYW1lICIke0RFUklWRURfU09VUkNFU19ESVJ9L0phdmFTY3JpcHRDb3JlL1VuaWZpZWRT
b3VyY2Uke191bmlmaWVkU291cmNlQ291bnR9LmNwcCIpCisgICAgICAgIGxpc3QoQVBQRU5EIEph
dmFTY3JpcHRDb3JlX1VOSUZJRURfU09VUkNFUyAke191bmlmaWVkU291cmNlTmFtZX0pCisgICAg
ZW5kaWYgKCkKKworICAgIGZpbGUoQVBQRU5EICR7X3VuaWZpZWRTb3VyY2VOYW1lfSAiIikKKyAg
ICBpZiAoJHtfc291cmNlRmlsZX0gTUFUQ0hFUyAiLioobW18YykkIikKKyAgICAgIGxpc3QoQVBQ
RU5EIEphdmFTY3JpcHRDb3JlX1VOSUZJRURfU09VUkNFUyAke19zb3VyY2VGaWxlfSkKKyAgICBl
bHNlICgpCisgICAgICAjICAgICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChfc291cmNlRmlsZSAk
e19zb3VyY2VGaWxlfSBOQU1FKQorICAgICAgc2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzKCR7
X3NvdXJjZUZpbGV9IFBST1BFUlRJRVMgSEVBREVSX0ZJTEVfT05MWSBPTikKKyAgICAgIGxpc3Qo
QVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMgJHtfc291cmNlRmlsZX0pCisgICAgICBmaWxl
KEFQUEVORCAke191bmlmaWVkU291cmNlTmFtZX0gIiNpbmNsdWRlIFwiJHtfc291cmNlRmlsZX1c
IlxuIikKKyAgICBlbmRpZiAoKQorZW5kZm9yZWFjaCAoKQorCitzZXQoSmF2YVNjcmlwdENvcmVf
U09VUkNFUyAke0phdmFTY3JpcHRDb3JlX1VOSUZJRURfU09VUkNFU30pCittZXNzYWdlKCR7SmF2
YVNjcmlwdENvcmVfU09VUkNFU30pCisKKyMgc2V0KF91bmlmaWVkU291cmNlQ291bnQgMCkKKyMg
bGlzdChTT1JUIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMpCisjIGxpc3QoTEVOR1RIIEphdmFTY3Jp
cHRDb3JlX1NPVVJDRVMgSmF2YVNjcmlwdENvcmVfU09VUkNFX0NPVU5UKQorIyBtYXRoKEVYUFIg
SmF2YVNjcmlwdENvcmVfU09VUkNFX0NPVU5UICIke0phdmFTY3JpcHRDb3JlX1NPVVJDRV9DT1VO
VH0gLSAxIikKKyMgbGlzdChHRVQgSmF2YVNjcmlwdENvcmVfU09VUkNFUyAwIF9maXJzdFNvdXJj
ZUZpbGUpCisjIG1lc3NhZ2UoJHtfZmlyc3RTb3VyY2VGaWxlfSkKKyMgZ2V0X2ZpbGVuYW1lX2Nv
bXBvbmVudChfdW5pZmllZFNvdXJjZUN1cnJlbnREaXJlY3RvcnkgJHtfZmlyc3RTb3VyY2VGaWxl
fSBESVJFQ1RPUlkpCisjIGZvcmVhY2ggKF9pbmRleCBSQU5HRSAke0phdmFTY3JpcHRDb3JlX1NP
VVJDRV9DT1VOVH0pCisjICAgICBtYXRoKEVYUFIgX25ld1VuaWZpZWRTb3VyY2VGaWxlICIke19p
bmRleH0gJSA4IikKKyMgICAgIGxpc3QoR0VUIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMgJHtfaW5k
ZXh9IF9zb3VyY2VGaWxlKQorIyAgICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChfdW5pZmllZFNv
dXJjZUZpbGVEaXJlY3RvcnkgJHtfc291cmNlRmlsZX0gRElSRUNUT1JZKQorIyAgICAgbWVzc2Fn
ZSgke191bmlmaWVkU291cmNlQ3VycmVudERpcmVjdG9yeX0pCisjICAgICBtZXNzYWdlKCR7X3Vu
aWZpZWRTb3VyY2VGaWxlRGlyZWN0b3J5fSkKKyMgICAgIGlmKCgke191bmlmaWVkU291cmNlRmls
ZURpcmVjdG9yeX0gU1RSRVFVQUwgJHtfdW5pZmllZFNvdXJjZUN1cnJlbnREaXJlY3Rvcnl9KSkK
KyMgICAgICAgbWVzc2FnZSh0cnVlKQorIyAgICAgZWxzZSAoKQorIyAgICAgICBtZXNzYWdlKGZh
bHNlKQorIyAgICAgZW5kaWYgKCkKKworIyAgICAgaWYgKChOT1QgJHtfbmV3VW5pZmllZFNvdXJj
ZUZpbGV9KSBPUiAoTk9UICgke191bmlmaWVkU291cmNlRmlsZURpcmVjdG9yeX0gU1RSRVFVQUwg
JHtfdW5pZmllZFNvdXJjZUN1cnJlbnREaXJlY3Rvcnl9KSkpCisjICAgICAgICAgc2V0KF91bmlm
aWVkU291cmNlQ3VycmVudERpcmVjdG9yeSAke191bmlmaWVkU291cmNlRmlsZURpcmVjdG9yeX0p
CisjICAgICAgICAgbWF0aChFWFBSIF91bmlmaWVkU291cmNlQ291bnQgIiR7X3VuaWZpZWRTb3Vy
Y2VDb3VudH0gKyAxIikKKyMgICAgICAgICBzZXQoX3VuaWZpZWRTb3VyY2VOYW1lICIke0RFUklW
RURfU09VUkNFU19ESVJ9L0phdmFTY3JpcHRDb3JlL1VuaWZpZWRTb3VyY2Uke191bmlmaWVkU291
cmNlQ291bnR9LmNwcCIpCisjICAgICAgICAgbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfVU5J
RklFRF9TT1VSQ0VTICR7X3VuaWZpZWRTb3VyY2VOYW1lfSkKKyMgICAgIGVuZGlmICgpCisKKyMg
ICAgIGxpc3QoR0VUIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMgJHtfaW5kZXh9IF9zb3VyY2VGaWxl
KQorIyAgICAgaWYgKCR7X3NvdXJjZUZpbGV9IE1BVENIRVMgIi4qKG1tfGN8aCkkIikKKyMgICAg
ICAgbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfVU5JRklFRF9TT1VSQ0VTICR7X3NvdXJjZUZp
bGV9KQorIyAgICAgZWxzZSAoKQorIyAgICAgICBXRUJLSVRfQUREX1NPVVJDRV9ERVBFTkRFTkNJ
RVMoJHtfdW5pZmllZFNvdXJjZU5hbWV9ICR7X3NvdXJjZUZpbGV9KQorIyAgICAgICBmaWxlKEFQ
UEVORCAke191bmlmaWVkU291cmNlTmFtZX0gIiNpbmNsdWRlIFwiJHtfc291cmNlRmlsZX1cIlxu
IikKKyMgICAgIGVuZGlmICgpCisjIGVuZGZvcmVhY2ggKCkKKworIyBzZXQoSmF2YVNjcmlwdENv
cmVfU09VUkNFUyAke0phdmFTY3JpcHRDb3JlX1VOSUZJRURfU09VUkNFU30pCisjIG1lc3NhZ2Uo
JHtKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTfSkKKwogIyBFeHRyYSBmbGFncyBmb3IgY29tcGlsZSBz
b3VyY2VzIGNhbiBnbyBoZXJlLgogaWYgKE5PVCBNU1ZDKQogICAgIHNldF9zb3VyY2VfZmlsZXNf
cHJvcGVydGllcyhydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBQUk9QRVJUSUVTIENPTVBJTEVfRkxB
R1MgLWZuby1vcHRpbWl6ZS1zaWJsaW5nLWNhbGxzKQpAQCAtMTMzNiw2ICsxNDAxLDcgQEAgYWRk
X2N1c3RvbV9jb21tYW5kKAogICAgIE1BSU5fREVQRU5ERU5DWSAke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vY3JlYXRlX3JlZ2V4X3RhYmxlcwogICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VU
QUJMRX0gJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2NyZWF0ZV9yZWdleF90YWJsZXMgPiAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L1JlZ0V4cEppdFRhYmxlcy5oCiAg
ICAgVkVSQkFUSU0pCitsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTICR7REVSSVZF
RF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vUmVnRXhwSml0VGFibGVzLmgpCiBXRUJLSVRf
QUREX1NPVVJDRV9ERVBFTkRFTkNJRVMoJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3lhcnIv
WWFyclBhdHRlcm4uY3BwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vUmVn
RXhwSml0VGFibGVzLmgpCiAKIGFkZF9jdXN0b21fY29tbWFuZCgKQEAgLTEzNTYsNiArMTQyMiw3
IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBERVBFTkRTICR7Q01BS0VfQ1VSUkVOVF9TT1VS
Q0VfRElSfS9wYXJzZXIvS2V5d29yZHMudGFibGUKICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNV
VEFCTEV9ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9LZXl3b3JkTG9va3VwR2VuZXJhdG9y
LnB5ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9wYXJzZXIvS2V5d29yZHMudGFibGUgPiAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0tleXdvcmRMb29rdXAuaAogICAg
IFZFUkJBVElNKQorbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUyAke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0tleXdvcmRMb29rdXAuaCkKIFdFQktJVF9BRERf
U09VUkNFX0RFUEVOREVOQ0lFUygke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vcGFyc2VyL0xl
eGVyLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0tleXdvcmRMb29r
dXAuaCkKIAogCkBAIC0xNTAzLDcgKzE1NzAsNyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAg
V09SS0lOR19ESVJFQ1RPUlkgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfQog
KQogCi1saXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCitsaXN0KEFQUEVORCBKYXZh
U2NyaXB0Q29yZV9IRUFERVJTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVf
RElSfS9BaXJPcGNvZGUuaAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vQWlyT3Bjb2RlR2VuZXJhdGVkLmgKICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjND
aGVja1NwZWNpYWwuY3BwCmluZGV4IGJlYjg3OTI4NTg4ZmQ1YjZkNzMxMGY3ZjM0ODViYzE3NWJh
M2RiZmYuLjdjNTM3MmFjNWUyNzExNDE5OTNmNzhiZTE2ODNlMDkzMTg1M2M4OTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcApAQCAtMzYsMTEgKzM2LDEz
IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi11c2luZyBuYW1lc3BhY2Ug
QWlyOwordXNpbmcgSW5zdCA9IEFpcjo6SW5zdDsKK3VzaW5nIEFyZyA9IEFpcjo6QXJnOwordXNp
bmcgR2VuZXJhdGlvbkNvbnRleHQgPSBBaXI6OkdlbmVyYXRpb25Db250ZXh0OwogCiBuYW1lc3Bh
Y2UgewogCi11bnNpZ25lZCBudW1CM0FyZ3MoQjM6OktpbmQga2luZCkKK3Vuc2lnbmVkIG51bUIz
QXJncyhLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7CiAgICAgY2Fz
ZSBDaGVja0FkZDoKQEAgLTEwOCw2ICsxMTAsNyBAQCBJbnN0IENoZWNrU3BlY2lhbDo6aGlkZGVu
QnJhbmNoKGNvbnN0IEluc3QmIGluc3QpIGNvbnN0CiAKIHZvaWQgQ2hlY2tTcGVjaWFsOjpmb3JF
YWNoQXJnKEluc3QmIGluc3QsIGNvbnN0IFNjb3BlZExhbWJkYTxJbnN0OjpFYWNoQXJnQ2FsbGJh
Y2s+JiBjYWxsYmFjaykKIHsKKyAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAgIHN0ZDo6b3B0
aW9uYWw8V2lkdGg+IG9wdGlvbmFsRGVmQXJnV2lkdGg7CiAgICAgSW5zdCBoaWRkZW4gPSBoaWRk
ZW5CcmFuY2goaW5zdCk7CiAgICAgaGlkZGVuLmZvckVhY2hBcmcoCkBAIC0xNTYsNiArMTU5LDcg
QEAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gQ2hlY2tTcGVjaWFsOjpzaG91bGRUcnlBbGlhc2lu
Z0RlZihJbnN0JiBpbnN0KQogCiBDQ2FsbEhlbHBlcnM6Okp1bXAgQ2hlY2tTcGVjaWFsOjpnZW5l
cmF0ZShJbnN0JiBpbnN0LCBDQ2FsbEhlbHBlcnMmIGppdCwgR2VuZXJhdGlvbkNvbnRleHQmIGNv
bnRleHQpCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICBDQ2FsbEhlbHBlcnM6Okp1
bXAgZmFpbCA9IGhpZGRlbkJyYW5jaChpbnN0KS5nZW5lcmF0ZShqaXQsIGNvbnRleHQpOwogICAg
IEFTU0VSVChmYWlsLmlzU2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNEdXBsaWNhdGVUYWlscy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNE
dXBsaWNhdGVUYWlscy5jcHAKaW5kZXggZmQ2NTc5MGU5OWMyZmVhZDRmNWZiYjllYWY2MGMxYTc1
YzkzMjI1NS4uY2ZmNDRhNGMxZTAwOTFlYmE0YTc4M2IzOGYzNWEzYmRjZWQxYmNmNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRHVwbGljYXRlVGFpbHMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0R1cGxpY2F0ZVRhaWxzLmNwcApAQCAtNDQsNyAr
NDQsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogbmFtZXNwYWNlIHsKIAot
Y29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgQjNEdXBsaWNhdGVUYWlsc0lu
dGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogY2xhc3Mg
RHVwbGljYXRlVGFpbHMgewogcHVibGljOgpAQCAtOTQsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZGVtb3RlVmFsdWVzKG1fcHJvYywgdmFsdWVz
VG9EZW1vdGUpOwotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoQjNEdXBsaWNh
dGVUYWlsc0ludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJQcm9jZWR1
cmUgYWZ0ZXIgdmFsdWUgZGVtb3Rpb246XG4iKTsKICAgICAgICAgICAgIGRhdGFMb2cobV9wcm9j
KTsKICAgICAgICAgfQpAQCAtMTE2LDcgKzExOCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8v
IHBvaW50LgogICAgICAgICAgICAgY2FuZGlkYXRlcy5yZW1vdmUoYmxvY2spOwogCi0gICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0R1cGxpY2F0ZVRhaWxzSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiRHVwbGljYXRpbmcgIiwgKnRh
aWwsICIgaW50byAiLCAqYmxvY2ssICJcbiIpOwogCiAgICAgICAgICAgICBibG9jay0+cmVtb3Zl
TGFzdChtX3Byb2MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWxp
bWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCmluZGV4IDFhZTQzNTU2MTUxN2U5
MWMwOWU2NjhjNjllYWZjMTU0YTc0OGJkZTYuLjlhMmU5OGFhNDM4NTYyODAwOWYxMmE0NDUyNGE0
ZDFhZmY1NWY5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1p
bmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAKQEAgLTUzLDcgKzUzLDkgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5hbWVzcGFjZSB7CiAKLWNvbnN0IGJv
b2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVz
c2lvbnNJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAK
IC8vIEZJWE1FOiBXZSBjb3VsZCB0cmVhdCBQYXRjaHBvaW50cyB3aXRoIGEgbm9uLWVtcHR5IHNl
dCBvZiByZWFkcyBhcyBhICJtZW1vcnkgdmFsdWUiIGFuZCBzb21laG93CiAvLyBlbGltaW5hdGUg
cmVkdW5kYW50IG9uZXMuIFdlIHdvdWxkIG5lZWQgc29tZSB3YXkgb2YgZGV0ZXJtaW5pbmcgaWYg
dHdvIHBhdGNocG9pbnRzIGFyZSByZXBsYWNhYmxlLgpAQCAtMTYwLDcgKzE2Miw3IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgZGF0YUxvZygiQjMgYmVmb3JlIENTRTpcbiIsIG1fcHJvYyk7CiAgICAgICAg
IAogICAgICAgICBtX3Byb2MucmVzZXRWYWx1ZU93bmVycygpOwpAQCAtMTg4LDcgKzE5MCw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZW1vcnlWYWx1ZXNBdFRhaWwuYWRk
KG1lbW9yeSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJCbG9jayAiLCAqYmxvY2ssICI6ICIsIGRh
dGEsICJcbiIpOwogICAgICAgICB9CiAKQEAgLTE5Niw3ICsxOTgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gcG9zdE9yZGVyID0gbV9wcm9jLmJsb2Nrc0luUG9zdE9y
ZGVyKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHBvc3RPcmRlci5zaXplKCk7IGktLTsp
IHsKICAgICAgICAgICAgIG1fYmxvY2sgPSBwb3N0T3JkZXJbaV07Ci0gICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25z
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiTG9va2luZyBhdCAi
LCAqbV9ibG9jaywgIjpcbiIpOwogCiAgICAgICAgICAgICBtX2RhdGEgPSBJbXB1cmVCbG9ja0Rh
dGEoKTsKQEAgLTIyMiw3ICsyMjQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2luc2VydGlv
blNldC5leGVjdXRlKGJsb2NrKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQjMgYWZ0ZXIgQ1NFOlxuIiwgbV9wcm9jKTsKIAog
ICAgICAgICByZXR1cm4gbV9jaGFuZ2VkOwpAQCAtNDg3LDcgKzQ4OSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIC8vIGV4cGVuc2l2ZSwgYnV0IGluIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3JpdHkgb2Yg
Y2FzZXMgaXQgd2lsbCBhbG1vc3QgaW1tZWRpYXRlbHkgaGl0IGFuIAogICAgICAgICAvLyBvcGVy
YXRpb24gdGhhdCBpbnRlcmZlcmVzLgogCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBp
ZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICAgICAgZGF0YUxvZygqbV92YWx1ZSwgIjogbG9va2luZyBmb3J3YXJkIGZvciBzdG9yZXMg
dG8gIiwgKnB0ciwgIi4uLlxuIik7CiAKICAgICAgICAgLy8gRmlyc3Qgc2VhcmNoIGZvcndhcmQg
aW4gdGhpcyBiYXNpYyBibG9jay4KQEAgLTU1Nyw3ICs1NTksNyBAQCBwcml2YXRlOgogICAgICAg
ICBpZiAobWF0Y2hlcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJl
c3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJFbGltaW5hdGlu
ZyAiLCAqbV92YWx1ZSwgIiBkdWUgdG8gIiwgcG9pbnRlckxpc3REdW1wKG1hdGNoZXMpLCAiXG4i
KTsKICAgICAgICAgCiAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CkBAIC01NjYsNyArNTY4LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBkb21pbmF0aW5nTWF0Y2ggPSBt
YXRjaGVzWzBdOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9kb21pbmF0b3JzLmRvbWlu
YXRlcyhkb21pbmF0aW5nTWF0Y2gtPm93bmVyLCBtX2Jsb2NrKSk7CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9u
U3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgRWxpbWluYXRpbmcgdXNpbmcgIiwgKmRvbWluYXRpbmdNYXRjaCwgIlxuIik7CiAgICAg
ICAgICAgICBWZWN0b3I8VmFsdWUqPiBleHRyYVZhbHVlczsKICAgICAgICAgICAgIGlmIChWYWx1
ZSogdmFsdWUgPSByZXBsYWNlKGRvbWluYXRpbmdNYXRjaCwgZXh0cmFWYWx1ZXMpKSB7CkBAIC01
OTAsNyArNTkyLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBWYXJpYWJsZVZhbHVlKiBnZXQgPSBt
X2luc2VydGlvblNldC5pbnNlcnQ8VmFyaWFibGVWYWx1ZT4oCiAgICAgICAgICAgICBtX2luZGV4
LCBHZXQsIG1fdmFsdWUtPm9yaWdpbigpLCB2YXJpYWJsZSk7Ci0gICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEluc2VydGluZyBnZXQgb2YgdmFsdWU6
ICIsICpnZXQsICJcbiIpOwogICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KGdl
dCk7CiAgICAgICAgICAgICAKQEAgLTYxNSwyMyArNjE3LDIzIEBAIHByaXZhdGU6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRmlsdGVyPgogICAgIE1lbW9yeU1hdGNoZXMgZmluZE1lbW9yeVZhbHVl
KFZhbHVlKiBwdHIsIEhlYXBSYW5nZSByYW5nZSwgY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiAgICAg
ewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3Vi
ZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coKm1fdmFs
dWUsICI6IGxvb2tpbmcgYmFja3dhcmQgZm9yICIsICpwdHIsICIuLi5cbiIpOwogICAgICAgICAK
ICAgICAgICAgaWYgKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpKSB7Ci0g
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1v
blN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiICAgIEdpdmluZyB1cCBiZWNhdXNlIGZlbmNlcy5cbiIpOwogICAgICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKE1lbW9yeVZhbHVlKiBtYXRj
aCA9IG1fZGF0YS5tZW1vcnlWYWx1ZXNBdFRhaWwuZmluZChwdHIsIGZpbHRlcikpIHsKLSAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3Vi
ZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgRm91bmQgIiwgKm1hdGNoLCAiIGxvY2FsbHkuXG4iKTsKICAgICAgICAgICAgIHJldHVybiB7
IG1hdGNoIH07CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9kYXRhLndyaXRlcy5vdmVybGFw
cyhyYW5nZSkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIz
RWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1c2Ugb2Ygd3JpdGVzLlxuIik7CiAg
ICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CkBAIC02NDIsMjcgKzY0NCwyNyBAQCBw
cml2YXRlOgogICAgICAgICBNZW1vcnlNYXRjaGVzIG1hdGNoZXM7CiAKICAgICAgICAgd2hpbGUg
KEJhc2ljQmxvY2sqIGJsb2NrID0gd29ya2xpc3QucG9wKCkpIHsKLSAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgTG9va2luZyBh
dCAiLCAqYmxvY2ssICJcbiIpOwogCiAgICAgICAgICAgICBJbXB1cmVCbG9ja0RhdGEmIGRhdGEg
PSBtX2ltcHVyZUJsb2NrRGF0YVtibG9ja107CiAKICAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBt
YXRjaCA9IGRhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmZpbmQocHRyLCBmaWx0ZXIpOwogICAgICAg
ICAgICAgaWYgKG1hdGNoICYmIG1hdGNoICE9IG1fdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHBy
ZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgRm91bmQgbWF0Y2g6ICIsICptYXRjaCwgIlxuIik7CiAgICAgICAgICAgICAgICAgbWF0Y2hl
cy5hcHBlbmQobWF0Y2gpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoZGF0YS53cml0ZXMub3ZlcmxhcHMocmFuZ2UpKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRl
Q29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiICAgIEdpdmluZyB1cCBiZWNhdXNlIG9mIHdyaXRlcy5cbiIpOwogICAgICAg
ICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICgh
YmxvY2stPm51bVByZWRlY2Vzc29ycygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEdpdmluZyB1
cCBiZWNhdXNlIGl0J3MgbGl2ZSBhdCByb290LlxuIik7CiAgICAgICAgICAgICAgICAgLy8gVGhp
cyBlc3NlbnRpYWxseSBwcm92ZXMgdGhhdCB0aGlzIGlzIGxpdmUgYXQgdGhlIHByb2xvZ3VlLiBU
aGF0IG1lYW5zIHRoYXQgd2UKICAgICAgICAgICAgICAgICAvLyBjYW5ub3QgcmVsaWFibHkgb3B0
aW1pemUgdGhpcyBjYXNlLgpAQCAtNjcyLDcgKzY3NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICB3b3JrbGlzdC5wdXNoQWxsKGJsb2NrLT5wcmVkZWNlc3NvcnMoKSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhw
cmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBHb3Qg
bWF0Y2hlczogIiwgcG9pbnRlckxpc3REdW1wKG1hdGNoZXMpLCAiXG4iKTsKICAgICAgICAgcmV0
dXJuIG1hdGNoZXM7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzRml4U1NBLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZpeFNTQS5jcHAKaW5k
ZXggZDIwMzgxZDIwMjJmYTA0ZjI2M2E4N2VmYjFiM2NkOTIwMmU2NzU4YS4uYjI4ZjIxZjExMDdj
ODI2ZmFmNjJiM2Y4MzcwNjI1ODM2ODdlMzdmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzRml4U1NBLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNG
aXhTU0EuY3BwCkBAIC00OCw3ICs0OCw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMg
ewogCiBuYW1lc3BhY2UgewogCi1jb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFj
ZSBCM0ZpeFNTQUludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsK
K30KIAogdm9pZCBraWxsRGVhZFZhcmlhYmxlcyhQcm9jZWR1cmUmIHByb2MpCiB7CkBAIC0xNTcs
NyArMTU5LDcgQEAgdm9pZCBmaXhTU0FHbG9iYWxseShQcm9jZWR1cmUmIHByb2MpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIFZhbHVlKiBwaGkgPSBwcm9jLmFkZDxWYWx1ZT4oUGhpLCB2YXJpYWJsZS0+dHlwZSgp
LCBibG9jay0+YXQoMCktPm9yaWdpbigpKTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkg
eworICAgICAgICAgICAgICAgIGlmIChCM0ZpeFNTQUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAiQWRkaW5n
IFBoaSBmb3IgIiwgcG9pbnRlckR1bXAodmFyaWFibGUpLCAiIGF0ICIsICpibG9jaywgIjogIiwK
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlZXBEdW1wKHByb2MsIHBoaSksICJcbiIpOwpAQCAt
MjMxLDcgKzIzMyw3IEBAIHZvaWQgZml4U1NBR2xvYmFsbHkoUHJvY2VkdXJlJiBwcm9jKQogICAg
ICAgICAgICAgICAgIFZhcmlhYmxlKiB2YXJpYWJsZSA9IGNhbGNWYXJUb1ZhcmlhYmxlW2NhbGNW
YXItPmluZGV4KCldOwogCiAgICAgICAgICAgICAgICAgVmFsdWUqIG1hcHBlZFZhbHVlID0gZW5z
dXJlTWFwcGluZyh2YXJpYWJsZSwgdXBzaWxvbkluc2VydGlvblBvaW50LCB1cHNpbG9uT3JpZ2lu
KTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgICAgIGlmIChC
M0ZpeFNTQUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
CiAgICAgICAgICAgICAgICAgICAgICAgICAiTWFwcGVkIHZhbHVlIGZvciAiLCAqdmFyaWFibGUs
ICIgd2l0aCBzdWNjZXNzb3IgUGhpICIsICpwaGksCiAgICAgICAgICAgICAgICAgICAgICAgICAi
IGF0IGVuZCBvZiAiLCAqYmxvY2ssICI6ICIsIHBvaW50ZXJEdW1wKG1hcHBlZFZhbHVlKSwgIlxu
Iik7CkBAIC0yNDUsNyArMjQ3LDcgQEAgdm9pZCBmaXhTU0FHbG9iYWxseShQcm9jZWR1cmUmIHBy
b2MpCiAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKICAgICB9CiAKLSAgICBp
ZiAodmVyYm9zZSkgeworICAgIGlmIChCM0ZpeFNTQUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAg
ICAgIGRhdGFMb2coIkIzIGFmdGVyIFNTQSBjb252ZXJzaW9uOlxuIik7CiAgICAgICAgIGRhdGFM
b2cocHJvYyk7CiAgICAgfQpAQCAtMjY2LDcgKzI2OCw3IEBAIHZvaWQgZGVtb3RlVmFsdWVzKFBy
b2NlZHVyZSYgcHJvYywgY29uc3QgSW5kZXhTZXQ8VmFsdWUqPiYgdmFsdWVzKQogICAgICAgICAg
ICAgcGhpTWFwLmFkZCh2YWx1ZSwgcHJvYy5hZGRWYXJpYWJsZSh2YWx1ZS0+dHlwZSgpKSk7CiAg
ICAgfQogCi0gICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoQjNGaXhTU0FJbnRlcm5hbDo6dmVy
Ym9zZSkgewogICAgICAgICBkYXRhTG9nKCJEZW1vdGluZyB2YWx1ZXMgYXMgZm9sbG93czpcbiIp
OwogICAgICAgICBkYXRhTG9nKCIgICBtYXAgPSAiKTsKICAgICAgICAgQ29tbWFQcmludGVyIGNv
bW1hOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRm9sZFBhdGhDb25z
dGFudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRm9sZFBhdGhDb25zdGFudHMu
Y3BwCmluZGV4IGI5YmRjOGQ0ZjI4OGI4MmM2MzMxZWYzMTBkMzMzZTNhNTY0N2UwNGQuLjIyMjUw
Y2JjN2YzNWM0Y2ZjZjk5MTZhNWFiMmVlNzI2YWZjNGFkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0ZvbGRQYXRoQ29uc3RhbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNGb2xkUGF0aENvbnN0YW50cy5jcHAKQEAgLTQxLDcgKzQxLDkgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5hbWVzcGFjZSB7CiAKLWNvbnN0IGJv
b2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEIzRm9sZFBhdGhDb25zdGFudHNJbnRlcm5h
bCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIEZvbGRQ
YXRoQ29uc3RhbnRzIHsKIHB1YmxpYzoKQEAgLTU1LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgIGlmIChCM0ZvbGRQYXRoQ29uc3RhbnRzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICBkYXRhTG9nKCJCMyBiZWZvcmUgZm9sZGluZyBwYXRoIGNvbnN0YW50czogXG4iLCBtX3By
b2MsICJcbiIpOwogICAgICAgICAKICAgICAgICAgLy8gRmluZCBhbGwgb2YgdGhlIHZhbHVlcyB0
aGF0IGFyZSB0aGUgc3ViamVjdCBvZiBhIGJyYW5jaCBvciBzd2l0Y2guIEZvciBhbnkgc3VjY2Vz
c29yCkBAIC04MCw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
X1VOVVNFRChvdGhlck92ZXJyaWRlLCBvdGhlck92ZXJyaWRlLmJsb2NrICE9IG92ZXJyaWRlLmJs
b2NrKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICBpZiAoQjNGb2xkUGF0aENvbnN0YW50c0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgICAgIGRhdGFMb2coIk92ZXJyaWRpbmcgIiwgKnZhbHVlLCAiIGZyb20gIiwgKmZyb20sICI6
ICIsIG92ZXJyaWRlLCAiXG4iKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yVmFsdWUu
YXBwZW5kKG92ZXJyaWRlKTsKQEAgLTE0OSw3ICsxNTEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IG92ZXJyaWRlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0ZvbGRQYXRoQ29uc3RhbnRzSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiSW4gYmxvY2sgIiwgKmJsb2Nr
LCAiIGdldHRpbmcgb3ZlcnJpZGUgZm9yICIsICp2YWx1ZSwgIjogIiwgcmVzdWx0LCAiXG4iKTsK
IAogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0luZmVyU3dpdGNoZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzSW5mZXJTd2l0Y2hlcy5jcHAKaW5kZXggZjI5ZjRmMDk1NGIyYWU3MjAwNWExMzAyZWZmY2Nk
NGUzNGRmYjg3OC4uZWU2MTJmZWYyOGM2YTc3YWFjMTVjOThhOTdhYzkzOTJiMTNjNWFkMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5mZXJTd2l0Y2hlcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5mZXJTd2l0Y2hlcy5jcHAKQEAgLTQyLDcg
KzQyLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5hbWVzcGFjZSB7CiAK
LWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEIzSW5mZXJTd2l0Y2hlc0lu
dGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogY2xhc3Mg
SW5mZXJTd2l0Y2hlcyB7CiBwdWJsaWM6CkBAIC01NSw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAK
ICAgICBib29sIHJ1bigpCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYg
KEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygi
QjMgYmVmb3JlIGluZmVyU3dpdGNoZXM6XG4iLCBtX3Byb2MpOwogICAgICAgICAKICAgICAgICAg
Ym9vbCBjaGFuZ2VkID0gdHJ1ZTsKQEAgLTYzLDcgKzY1LDcgQEAgcHVibGljOgogICAgICAgICB3
aGlsZSAoY2hhbmdlZCkgewogICAgICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwogICAgICAgICAg
ICAgCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0luZmVyU3dp
dGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJQZXJmb3Jt
aW5nIGZpeHBvaW50IGl0ZXJhdGlvbjpcbiIpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBm
b3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jKQpAQCAtNzgsNyArODAsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fcHJvYy5kZWxldGVPcnBoYW5zKCk7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzSW5m
ZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkIz
IGFmdGVyIGluZmVyU3dpdGNoZXM6XG4iLCBtX3Byb2MpOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KQEAgLTk2LDEwICs5OCwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAKICAgICAgICAgU3dpdGNoRGVzY3JpcHRpb24gZGVzY3Jp
cHRpb24gPSBkZXNjcmliZShibG9jayk7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBp
ZiAoQjNJbmZlclN3aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9n
KCJEZXNjcmlwdGlvbiBvZiBwcmltYXJ5IGJsb2NrICIsICpibG9jaywgIjogIiwgZGVzY3JpcHRp
b24sICJcbiIpOwogICAgICAgICBpZiAoIWRlc2NyaXB0aW9uKSB7Ci0gICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGluZyBiZWNhdXNlIG5vdCBzd2l0
Y2gtbGlrZS5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0x
MTUsMTcgKzExNywxNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgaWYgKHZhbHVlID09IGRlc2NyaXB0aW9uLmJyYW5jaCkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIz
SW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2co
IiAgICBCYWlsaW5nIGJlY2F1c2Ugb2YgIiwgZGVlcER1bXAobV9wcm9jLCB2YWx1ZSksICJcbiIp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGJsb2NrLT5wcmVkZWNlc3NvcigwKTsKICAgICAg
ICAgU3dpdGNoRGVzY3JpcHRpb24gcHJlZGVjZXNzb3JEZXNjcmlwdGlvbiA9IGRlc2NyaWJlKHBy
ZWRlY2Vzc29yKTsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCM0luZmVyU3dp
dGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBEZXNjcmlw
dGlvbiBvZiBwcmVkZWNlc3NvciBibG9jayAiLCAqcHJlZGVjZXNzb3IsICI6ICIsIHByZWRlY2Vz
c29yRGVzY3JpcHRpb24sICJcbiIpOwogICAgICAgICBpZiAoIXByZWRlY2Vzc29yRGVzY3JpcHRp
b24pIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzSW5mZXJT
d2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBC
YWlsaW5nIGJlY2F1c2Ugbm90IHN3aXRjaC1saWtlLlxuIik7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KQEAgLTEzMyw3ICsxMzUsNyBAQCBwcml2YXRlOgogICAgICAgICAv
LyBCb3RoIHVzIGFuZCB0aGUgcHJlZGVjZXNzb3IgYXJlIHN3aXRjaC1saWtlLCBidXQgdGhhdCBk
b2Vzbid0IG1lYW4gdGhhdCB3ZSdyZSBjb21wYXRpYmxlLgogICAgICAgICAvLyBXZSBtYXkgYmUg
c3dpdGNoaW5nIG9uIGRpZmZlcmVudCB2YWx1ZXMhCiAgICAgICAgIGlmIChkZXNjcmlwdGlvbi5z
b3VyY2UgIT0gcHJlZGVjZXNzb3JEZXNjcmlwdGlvbi5zb3VyY2UpIHsKLSAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBCYWlsaW5nIGJlY2F1c2Ugc291cmNl
cyBkb24ndCBtYXRjaC5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CkBAIC0xNDMsNyArMTQ1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8ganVzdCB0b3RhbGx5IHJl
ZHVuZGFudCBhbmQgd2Ugc2hvdWxkIGJlIGdldHRpbmcgcmlkIG9mIGl0LiBCdXQgd2UgZG9uJ3Qg
aGFuZGxlIHRoYXQgaGVyZSwKICAgICAgICAgLy8geWV0LgogICAgICAgICBpZiAocHJlZGVjZXNz
b3JEZXNjcmlwdGlvbi5mYWxsVGhyb3VnaC5ibG9jaygpICE9IGJsb2NrKSB7Ci0gICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGluZyBiZWNhdXNlIGZh
bGwtdGhyb3VnaCBvZiBwcmVkZWNlc3NvciBpcyBub3QgdGhlIHByaW1hcnkgYmxvY2suXG4iKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMTUxLDE0ICsxNTMsMTQg
QEAgcHJpdmF0ZToKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlcmUgYWluJ3Qgbm8gbG9v
cHMuCiAgICAgICAgIGlmIChkZXNjcmlwdGlvbi5mYWxsVGhyb3VnaC5ibG9jaygpID09IGJsb2Nr
CiAgICAgICAgICAgICB8fCBkZXNjcmlwdGlvbi5mYWxsVGhyb3VnaC5ibG9jaygpID09IHByZWRl
Y2Vzc29yKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0lu
ZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgQmFpbGluZyBiZWNhdXNlIG9mIGZhbGwtdGhyb3VnaCBsb29wLlxuIik7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgZm9yIChTd2l0Y2hDYXNlIHN3aXRj
aENhc2UgOiBkZXNjcmlwdGlvbi5jYXNlcykgewogICAgICAgICAgICAgaWYgKHN3aXRjaENhc2Uu
dGFyZ2V0QmxvY2soKSA9PSBibG9jawogICAgICAgICAgICAgICAgIHx8IHN3aXRjaENhc2UudGFy
Z2V0QmxvY2soKSA9PSBwcmVkZWNlc3NvcikgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICAgICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEJhaWxpbmcgYmVjYXVzZSBvZiBsb29w
IGluIHByaW1hcnkgY2FzZXMuXG4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICB9CkBAIC0xNjYsMTMgKzE2OCwxMyBAQCBwcml2YXRlOgogICAgICAgICBmb3Ig
KFN3aXRjaENhc2Ugc3dpdGNoQ2FzZSA6IHByZWRlY2Vzc29yRGVzY3JpcHRpb24uY2FzZXMpIHsK
ICAgICAgICAgICAgIGlmIChzd2l0Y2hDYXNlLnRhcmdldEJsb2NrKCkgPT0gYmxvY2sKICAgICAg
ICAgICAgICAgICB8fCBzd2l0Y2hDYXNlLnRhcmdldEJsb2NrKCkgPT0gcHJlZGVjZXNzb3IpIHsK
LSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQjNJbmZl
clN3aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
IiAgICBCYWlsaW5nIGJlY2F1c2Ugb2YgbG9vcCBpbiBwcmVkZWNlc3NvciBjYXNlcy5cbiIpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCM0luZmVyU3dpdGNo
ZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBEb2luZyBpdCFc
biIpOwogICAgICAgICAvLyBXZSdyZSBjb21taXR0ZWQgdG8gZG9pbmcgdGhlIHRoaW5nLgogICAg
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9z
QWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2Vy
TWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAppbmRleCA5NjNjMTBlZGM1ZTQ5MzlmNWZiZTJl
ZDQyNTY0ZGQzZDdlMDc2M2RkLi4xNDU2N2ZjYzViZGFjOWUwZjhlNzE4MTY4ZDZmZjI3NzBjNjQ4
ZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0Fm
dGVyT3B0aW1pemF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93
ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBF
TkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQWlyQXJnLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Js
b2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRl
ICJCM0NDYWxsVmFsdWUuaCIKQEAgLTM5LDExICs0MCwxNSBAQAogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEIzIHsKIAordXNpbmcgQXJnID0gQWlyOjpBcmc7Cit1c2luZyBDb2RlID0gQWly
OjpDb2RlOwordXNpbmcgVG1wID0gQWlyOjpUbXA7CisKIG5hbWVzcGFjZSB7CiAKLWNsYXNzIExv
d2VyTWFjcm9zIHsKK2NsYXNzIExvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zIHsKIHB1Ymxp
YzoKLSAgICBMb3dlck1hY3JvcyhQcm9jZWR1cmUmIHByb2MpCisgICAgTG93ZXJNYWNyb3NBZnRl
ck9wdGltaXphdGlvbnMoUHJvY2VkdXJlJiBwcm9jKQogICAgICAgICA6IG1fcHJvYyhwcm9jKQog
ICAgICAgICAsIG1fYmxvY2tJbnNlcnRpb25TZXQocHJvYykKICAgICAgICAgLCBtX2luc2VydGlv
blNldChwcm9jKQpAQCAtMTgzLDcgKzE4OCw3IEBAIHByaXZhdGU6CiAKIGJvb2wgbG93ZXJNYWNy
b3NJbXBsKFByb2NlZHVyZSYgcHJvYykKIHsKLSAgICBMb3dlck1hY3JvcyBsb3dlck1hY3Jvcyhw
cm9jKTsKKyAgICBMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucyBsb3dlck1hY3Jvcyhwcm9j
KTsKICAgICByZXR1cm4gbG93ZXJNYWNyb3MucnVuKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggMTQ4OWMzMTFjNjNlZTAwMmZhOTFhNzYxYjFk
NjA2MGNhZjRlMjkzMS4uNzY0ZGI0Y2JkODY4ZGQ4NTBiZDhhM2FiZDE0ODJhZmE0MjM4NDJkOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTY5LDIxICs2
OSwyNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAotdXNpbmcgbmFtZXNw
YWNlIEFpcjsKLQogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Citu
YW1lc3BhY2UgQjNMb3dlclRvQWlySW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9z
ZSA9IGZhbHNlOworfQorCit1c2luZyBBcmcgPSBBaXI6OkFyZzsKK3VzaW5nIEluc3QgPSBBaXI6
Okluc3Q7Cit1c2luZyBDb2RlID0gQWlyOjpDb2RlOwordXNpbmcgVG1wID0gQWlyOjpUbXA7CiAK
IC8vIEZJWE1FOiBXZSB3b3VsZG4ndCBuZWVkIHRoaXMgaWYgQWlyIHN1cHBvcnRlZCBXaWR0aCBt
b2RpZmllcnMgaW4gQWlyOjpLaW5kLgogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2OTI0NwogI2RlZmluZSBPUENPREVfRk9SX1dJRFRIKG9wY29kZSwgd2lkdGgp
ICggXAotICAgICh3aWR0aCkgPT0gV2lkdGg4ID8gb3Bjb2RlICMjIDggOiBcCi0gICAgKHdpZHRo
KSA9PSBXaWR0aDE2ID8gb3Bjb2RlICMjIDE2IDogXAotICAgICh3aWR0aCkgPT0gV2lkdGgzMiA/
IG9wY29kZSAjIyAzMiA6IFwKLSAgICBvcGNvZGUgIyMgNjQpCisgICAgKHdpZHRoKSA9PSBXaWR0
aDggPyBBaXI6Om9wY29kZSAjIyA4IDogXAorICAgICh3aWR0aCkgPT0gV2lkdGgxNiA/IEFpcjo6
b3Bjb2RlICMjIDE2IDogICAgXAorICAgICh3aWR0aCkgPT0gV2lkdGgzMiA/IEFpcjo6b3Bjb2Rl
ICMjIDMyIDogICAgXAorICAgIEFpcjo6b3Bjb2RlICMjIDY0KQogI2RlZmluZSBPUENPREVfRk9S
X0NBTk9OSUNBTF9XSURUSChvcGNvZGUsIHdpZHRoKSAoIFwKLSAgICAod2lkdGgpID09IFdpZHRo
NjQgPyBvcGNvZGUgIyMgNjQgOiBvcGNvZGUgIyMgMzIpCisgICAgKHdpZHRoKSA9PSBXaWR0aDY0
ID8gQWlyOjpvcGNvZGUgIyMgNjQgOiBBaXI6Om9wY29kZSAjIyAzMikKIAogY2xhc3MgTG93ZXJU
b0FpciB7CiBwdWJsaWM6CkBAIC0xMDcsNiArMTEyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBy
dW4oKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAgZm9yIChC
Mzo6QmFzaWNCbG9jayogYmxvY2sgOiBtX3Byb2NlZHVyZSkKICAgICAgICAgICAgIG1fYmxvY2tU
b0Jsb2NrW2Jsb2NrXSA9IG1fY29kZS5hZGRCbG9jayhibG9jay0+ZnJlcXVlbmN5KCkpOwogICAg
ICAgICAKQEAgLTExNCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzd2l0Y2ggKHZh
bHVlLT5vcGNvZGUoKSkgewogICAgICAgICAgICAgY2FzZSBQaGk6IHsKICAgICAgICAgICAgICAg
ICBtX3BoaVRvVG1wW3ZhbHVlXSA9IG1fY29kZS5uZXdUbXAodmFsdWUtPnJlc3VsdEJhbmsoKSk7
Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEIzTG93
ZXJUb0FpckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJQ
aGkgdG1wIGZvciAiLCAqdmFsdWUsICI6ICIsIG1fcGhpVG9UbXBbdmFsdWVdLCAiXG4iKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTE0Niw3ICsxNTIsNyBAQCBw
dWJsaWM6CiAKICAgICAgICAgICAgIG1faXNSYXJlID0gIW1fZmFzdFdvcmtsaXN0LnNhdyhibG9j
ayk7CiAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzTG93ZXJU
b0FpckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvd2VyaW5n
IEJsb2NrICIsICpibG9jaywgIjpcbiIpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBN
YWtlIHN1cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KQEAgLTE2
MywxMCArMTY5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29u
dGFpbnMobV92YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgICAgIG1faW5zdHMuYXBwZW5kKFZlY3RvcjxJbnN0PigpKTsKLSAgICAgICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQjNMb3dlclRvQWlySW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvd2VyaW5nICIsIGRlZXBEdW1w
KG1fcHJvY2VkdXJlLCBtX3ZhbHVlKSwgIjpcbiIpOwogICAgICAgICAgICAgICAgIGxvd2VyKCk7
Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICBpZiAoQjNM
b3dlclRvQWlySW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yIChJ
bnN0JiBpbnN0IDogbV9pbnN0cy5sYXN0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgIiwgaW5zdCwgIlxuIik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMzc5LDcgKzM4
NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmVhbFRtcCA9IG1fY29kZS5uZXdUbXAo
dmFsdWUtPnJlc3VsdEJhbmsoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fcHJvY2VkdXJlLmlz
RmFzdENvbnN0YW50KHZhbHVlLT5rZXkoKSkpCiAgICAgICAgICAgICAgICAgICAgIG1fY29kZS5h
ZGRGYXN0VG1wKHJlYWxUbXApOwotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgICAgIGlmIChCM0xvd2VyVG9BaXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiVG1wIGZvciAiLCAqdmFsdWUsICI6ICIsIHJlYWxUbXAsICJcbiIp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdG1wID0gcmVhbFRtcDsKQEAgLTkwNiw2ICs5
MTIsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6
Ok9wY29kZSBvcGNvZGU2ND4KICAgICB2b2lkIGFwcGVuZFNoaWZ0KFZhbHVlKiB2YWx1ZSwgVmFs
dWUqIGFtb3VudCkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAg
IEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUob3Bjb2RlMzIsIG9wY29kZTY0LCB2
YWx1ZS0+dHlwZSgpKTsKICAgICAgICAgCiAgICAgICAgIGlmIChpbW0oYW1vdW50KSkgewpAQCAt
MTAxOSw2ICsxMDI2LDcgQEAgcHJpdmF0ZToKIAogICAgIEluc3QgY3JlYXRlU3RvcmUoQWlyOjpL
aW5kIG1vdmUsIFZhbHVlKiB2YWx1ZSwgY29uc3QgQXJnJiBkZXN0KQogICAgIHsKKyAgICAgICAg
dXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAgaWYgKGF1dG8gaW1tX3ZhbHVlID0gaW1tKHZh
bHVlKSkgewogICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSAmJiBpbW1fdmFsdWUudmFsdWUoKSA9
PSAwKSB7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChtb3ZlLm9wY29kZSkgewpAQCAtMTA0Myw2
ICsxMDUxLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBBaXI6Ok9wY29kZSBzdG9yZU9wY29kZShX
aWR0aCB3aWR0aCwgQmFuayBiYW5rKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFp
cjsKICAgICAgICAgc3dpdGNoICh3aWR0aCkgewogICAgICAgICBjYXNlIFdpZHRoODoKICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0gR1ApOwpAQCAtMTA3Myw2ICsxMDgyLDcgQEAg
cHJpdmF0ZToKICAgICAKICAgICB2b2lkIGFwcGVuZFN0b3JlKFZhbHVlKiB2YWx1ZSwgY29uc3Qg
QXJnJiBkZXN0KQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAg
TWVtb3J5VmFsdWUqIG1lbW9yeSA9IHZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKICAgICAgICAg
UkVMRUFTRV9BU1NFUlQobWVtb3J5LT5pc1N0b3JlKCkpOwogCkBAIC0xMTAwLDYgKzExMTAsNyBA
QCBwcml2YXRlOgogCiAgICAgQWlyOjpPcGNvZGUgbW92ZUZvclR5cGUoVHlwZSB0eXBlKQogICAg
IHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7
CiAgICAgICAgIGNhc2UgSW50MzI6CiAgICAgICAgICAgICByZXR1cm4gTW92ZTMyOwpAQCAtMTEx
OSw2ICsxMTMwLDcgQEAgcHJpdmF0ZToKIAogICAgIEFpcjo6T3Bjb2RlIHJlbGF4ZWRNb3ZlRm9y
VHlwZShUeXBlIHR5cGUpCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAg
ICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBJbnQzMjoKICAgICAgICAgY2FzZSBJ
bnQ2NDoKQEAgLTExNjIsOCArMTE3NCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcmludChWYWx1
ZSogb3JpZ2luLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBhdXRv
IHByaW50TGlzdCA9IFByaW50ZXI6Om1ha2VQcmludFJlY29yZExpc3QoYXJndW1lbnRzLi4uKTsK
LSAgICAgICAgYXV0byBwcmludFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxQcmludFNwZWNpYWwqPiht
X2NvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPFByaW50U3BlY2lhbD4ocHJpbnRMaXN0
KSkpOwotICAgICAgICBJbnN0IGluc3QoUGF0Y2gsIG9yaWdpbiwgQXJnOjpzcGVjaWFsKHByaW50
U3BlY2lhbCkpOworICAgICAgICBhdXRvIHByaW50U3BlY2lhbCA9IHN0YXRpY19jYXN0PEFpcjo6
UHJpbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxBaXI6OlBy
aW50U3BlY2lhbD4ocHJpbnRMaXN0KSkpOworICAgICAgICBJbnN0IGluc3QoQWlyOjpQYXRjaCwg
b3JpZ2luLCBBcmc6OnNwZWNpYWwocHJpbnRTcGVjaWFsKSk7CiAgICAgICAgIFByaW50ZXI6OmFw
cGVuZEFpckFyZ3MoaW5zdCwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLik7
CiAgICAgICAgIGFwcGVuZChXVEZNb3ZlKGluc3QpKTsKICAgICB9CkBAIC0xNzYyLDYgKzE3NzQs
NyBAQCBwcml2YXRlOgogCiAgICAgSW5zdCBjcmVhdGVCcmFuY2goVmFsdWUqIHZhbHVlLCBib29s
IGludmVydGVkID0gZmFsc2UpCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwog
ICAgICAgICByZXR1cm4gY3JlYXRlR2VuZXJpY0NvbXBhcmUoCiAgICAgICAgICAgICB2YWx1ZSwK
ICAgICAgICAgICAgIFt0aGlzXSAoCkBAIC0xODQ1LDYgKzE4NTgsNyBAQCBwcml2YXRlOgogCiAg
ICAgSW5zdCBjcmVhdGVDb21wYXJlKFZhbHVlKiB2YWx1ZSwgYm9vbCBpbnZlcnRlZCA9IGZhbHNl
KQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAgcmV0dXJuIGNy
ZWF0ZUdlbmVyaWNDb21wYXJlKAogICAgICAgICAgICAgdmFsdWUsCiAgICAgICAgICAgICBbdGhp
c10gKApAQCAtMTkyNCw2ICsxOTM4LDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIEluc3QgY3Jl
YXRlU2VsZWN0KGNvbnN0IE1vdmVDb25kaXRpb25hbGx5Q29uZmlnJiBjb25maWcpCiAgICAgewor
ICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICBhdXRvIGNyZWF0ZVNlbGVjdElu
c3RydWN0aW9uID0gWyZdIChBaXI6Ok9wY29kZSBvcGNvZGUsIGNvbnN0IEFyZyYgY29uZGl0aW9u
LCBBcmdQcm9taXNlJiBsZWZ0LCBBcmdQcm9taXNlJiByaWdodCkgLT4gSW5zdCB7CiAgICAgICAg
ICAgICBpZiAoaXNWYWxpZEZvcm0ob3Bjb2RlLCBjb25kaXRpb24ua2luZCgpLCBsZWZ0LmtpbmQo
KSwgcmlnaHQua2luZCgpLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkgewogICAgICAg
ICAgICAgICAgIFRtcCByZXN1bHQgPSB0bXAobV92YWx1ZSk7CkBAIC0xOTg3LDYgKzIwMDIsNyBA
QCBwcml2YXRlOgogICAgIAogICAgIGJvb2wgdHJ5QXBwZW5kTGVhKCkKICAgICB7CisgICAgICAg
IHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAgIEFpcjo6T3Bjb2RlIGxlYU9wY29kZSA9IHRy
eU9wY29kZUZvclR5cGUoTGVhMzIsIExlYTY0LCBtX3ZhbHVlLT50eXBlKCkpOwogICAgICAgICBp
ZiAoIWlzVmFsaWRGb3JtKGxlYU9wY29kZSwgQXJnOjpJbmRleCwgQXJnOjpUbXApKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjExNiw2ICsyMTMyLDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgYXBwZW5kWDg2RGl2KEIzOjpPcGNvZGUgb3ApCiAgICAgeworICAgICAgICB1c2luZyBu
YW1lc3BhY2UgQWlyOwogICAgICAgICBBaXI6Ok9wY29kZSBjb252ZXJ0VG9Eb3VibGVXb3JkOwog
ICAgICAgICBBaXI6Ok9wY29kZSBkaXY7CiAgICAgICAgIHN3aXRjaCAobV92YWx1ZS0+dHlwZSgp
KSB7CkBAIC0yMTQzLDYgKzIxNjAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBhcHBlbmRYODZV
RGl2KEIzOjpPcGNvZGUgb3ApCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwog
ICAgICAgICBBaXI6Ok9wY29kZSBkaXYgPSBtX3ZhbHVlLT50eXBlKCkgPT0gSW50MzIgPyBYODZV
RGl2MzIgOiBYODZVRGl2NjQ7CiAKICAgICAgICAgQVNTRVJUKG9wID09IFVEaXYgfHwgb3AgPT0g
VU1vZCk7CkBAIC0yMTc4LDYgKzIxOTYsNyBAQCBwcml2YXRlOgogICAgIC8vIGdlbmVyYXRlZC4g
SXQgYXNzdW1lcyB0aGF0IHlvdSd2ZSBjb25zdW1lZCBldmVyeXRoaW5nIHRoYXQgbmVlZHMgdG8g
YmUgY29uc3VtZWQuCiAgICAgdm9pZCBhcHBlbmRDQVMoVmFsdWUqIGF0b21pY1ZhbHVlLCBib29s
IGludmVydCkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAgIEF0
b21pY1ZhbHVlKiBhdG9taWMgPSBhdG9taWNWYWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGF0b21pYyk7CiAgICAgICAgIApAQCAtMjM0MCw2ICsyMzU5LDcg
QEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGFwcGVuZEdlbmVyYWxBdG9taWMoQWlyOjpPcGNv
ZGUgb3Bjb2RlLCBDb21tdXRhdGl2aXR5IGNvbW11dGF0aXZpdHkgPSBOb3RDb21tdXRhdGl2ZSkK
ICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAgIEF0b21pY1ZhbHVl
KiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKICAgICAgICAgCiAgICAgICAg
IEFyZyBhZGRyZXNzID0gYWRkcihtX3ZhbHVlKTsKQEAgLTI0MjQsNiArMjQ0NCw3IEBAIHByaXZh
dGU6CiAgICAgCiAgICAgdm9pZCBsb3dlcigpCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3Bh
Y2UgQWlyOwogICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPm9wY29kZSgpKSB7CiAgICAgICAgIGNh
c2UgQjM6Ok5vcDogewogICAgICAgICAgICAgLy8gWWVzLCB3ZSB3aWxsIHRvdGFsbHkgc2VlIE5v
cCdzIGJlY2F1c2Ugc29tZSBwaGFzZXMgd2lsbCByZXBsYWNlV2l0aE5vcCgpIGluc3RlYWQgb2YK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRTcGVjaWFs
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRTcGVjaWFsLmNwcApp
bmRleCA0N2YwYWJkMmZmZjNiNTA1NzA4MmQ3MDNhNTE0MjNjOGNiMzhiMGIwLi5iMzc1Y2RkMGUw
ZmIwYmYwODYyMDRkMTI3NjNhYTBkNTJiMTgxMmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwCkBAIC0zNCw3ICszNCw4IEBACiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi11c2luZyBuYW1lc3BhY2UgQWlyOwordXNp
bmcgQXJnID0gQWlyOjpBcmc7Cit1c2luZyBJbnN0ID0gQWlyOjpJbnN0OwogCiBQYXRjaHBvaW50
U3BlY2lhbDo6UGF0Y2hwb2ludFNwZWNpYWwoKQogewpAQCAtMTM1LDggKzEzNiw3IEBAIGJvb2wg
UGF0Y2hwb2ludFNwZWNpYWw6OmFkbWl0c0V4dGVuZGVkT2Zmc2V0QWRkcihJbnN0JiBpbnN0LCB1
bnNpZ25lZCBhcmdJbmRleCkKICAgICByZXR1cm4gYWRtaXRzU3RhY2soaW5zdCwgYXJnSW5kZXgp
OwogfQogCi1DQ2FsbEhlbHBlcnM6Okp1bXAgUGF0Y2hwb2ludFNwZWNpYWw6OmdlbmVyYXRlKAot
ICAgIEluc3QmIGluc3QsIENDYWxsSGVscGVycyYgaml0LCBHZW5lcmF0aW9uQ29udGV4dCYgY29u
dGV4dCkKK0NDYWxsSGVscGVyczo6SnVtcCBQYXRjaHBvaW50U3BlY2lhbDo6Z2VuZXJhdGUoSW5z
dCYgaW5zdCwgQ0NhbGxIZWxwZXJzJiBqaXQsIEFpcjo6R2VuZXJhdGlvbkNvbnRleHQmIGNvbnRl
eHQpCiB7CiAgICAgUGF0Y2hwb2ludFZhbHVlKiB2YWx1ZSA9IGluc3Qub3JpZ2luLT5hczxQYXRj
aHBvaW50VmFsdWU+KCk7CiAgICAgQVNTRVJUKHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAKaW5kZXggMWM3YjBkMDAyYTFi
OTE5ZTIzMGZlNjQ2YjAzMmU0YTRlOTljZDE2MS4uNmQzMWY3Y2JjMDQ2N2NiZGQ2ZjZlM2M1OGM2
MGNjM2U5MTdjY2ViYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVk
dWNlRG91YmxlVG9GbG9hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVk
dWNlRG91YmxlVG9GbG9hdC5jcHAKQEAgLTM5LDcgKzM5LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFt
ZXNwYWNlIEIzUmVkdWNlRG91YmxlVG9GbG9hdEludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29s
IHZlcmJvc2UgPSBmYWxzZTsKK30KIGJvb2wgcHJpbnRSZW1haW5pbmdDb252ZXJzaW9ucyA9IGZh
bHNlOwogCiBjbGFzcyBEb3VibGVUb0Zsb2F0UmVkdWN0aW9uIHsKQEAgLTEyOCw3ICsxMzAsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICB9IHdoaWxlIChjaGFuZ2VkUGhpU3Rh
dGUpOwogCi0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChCM1JlZHVjZURvdWJs
ZVRvRmxvYXRJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiQ29udmVy
c2lvbiBjYW5kaWRhdGVzOlxuIik7CiAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2Nr
IDogbV9wcm9jZWR1cmUpIHsKICAgICAgICAgICAgICAgICBmb3IgKFZhbHVlKiB2YWx1ZSA6ICpi
bG9jaykgewpAQCAtMTkyLDcgKzE5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0gd2hpbGUgKGNoYW5nZWRQaGlTdGF0ZSk7CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsK
KyAgICAgICAgaWYgKEIzUmVkdWNlRG91YmxlVG9GbG9hdEludGVybmFsOjp2ZXJib3NlKSB7CiAg
ICAgICAgICAgICBkYXRhTG9nKCJQaGlzIGNvbnRhaW5pbmcgZmxvYXQgdmFsdWVzOlxuIik7CiAg
ICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jZWR1cmUpIHsKICAgICAg
ICAgICAgICAgICBmb3IgKFZhbHVlKiB2YWx1ZSA6ICpibG9jaykgewpAQCAtNDg5LDEzICs0OTEs
MTMgQEAgdm9pZCByZWR1Y2VEb3VibGVUb0Zsb2F0KFByb2NlZHVyZSYgcHJvY2VkdXJlKQogewog
ICAgIFBoYXNlU2NvcGUgcGhhc2VTY29wZShwcm9jZWR1cmUsICJyZWR1Y2VEb3VibGVUb0Zsb2F0
Iik7CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQjNSZWR1Y2VEb3VibGVUb0Zsb2F0SW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkJlZm9yZSBEb3VibGVUb0Zsb2F0UmVk
dWN0aW9uOlxuIiwgcHJvY2VkdXJlLCAiXG4iKTsKIAogICAgIERvdWJsZVRvRmxvYXRSZWR1Y3Rp
b24gZG91YmxlVG9GbG9hdFJlZHVjdGlvbihwcm9jZWR1cmUpOwogICAgIGRvdWJsZVRvRmxvYXRS
ZWR1Y3Rpb24ucnVuKCk7CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQjNSZWR1Y2VEb3Vi
bGVUb0Zsb2F0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkFmdGVyIERvdWJs
ZVRvRmxvYXRSZWR1Y3Rpb246XG4iLCBwcm9jZWR1cmUsICJcbiIpOwogCiAgICAgcHJpbnRHcmFw
aElmQ29udmVydGluZyhwcm9jZWR1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UmVkdWNlU3RyZW5ndGguY3BwCmluZGV4IGMyMmU5YjQ1M2QwOTUyOTY3ZjIyYTZmZmJhNjQ5MWZm
ZDAwZjljNmMuLjU1MDJkNWU0N2U1ODcwNjEwNjJiMTY4NmQ5YmIzYzI2OTM1OGI5NDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKQEAgLTg4LDcg
Kzg4LDkgQEAgbmFtZXNwYWNlIHsKIC8vIGNvbnN0YW50cyB0aGVuIHRoZSBjYW5vbmljYWwgZm9y
bSBpbnZvbHZlcyB0aGUgbG93ZXItaW5kZXhlZCB2YWx1ZSBmaXJzdC4gR2l2ZW4gQWRkKHgsIHkp
LCBpdCdzCiAvLyBjYW5vbmljYWwgaWYgeC0+aW5kZXgoKSA8PSB5LT5pbmRleCgpLgogCi1ib29s
IHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBCM1JlZHVjZVN0cmVuZ3RoSW50ZXJuYWwgewor
c3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiAvLyBGSVhNRTogVGhpcyBJ
bnRSYW5nZSBzdHVmZiBzaG91bGQgYmUgcmVmYWN0b3JlZCBpbnRvIGEgZ2VuZXJhbCBjb25zdGFu
dCBwcm9wYWdhdG9yLiBJdCdzIHdlaXJkCiAvLyB0aGF0IGl0J3MganVzdCBzaXR0aW5nIGhlcmUg
aW4gdGhpcyBmaWxlLgpAQCAtNDE0LDcgKzQxNiw3IEBAIHB1YmxpYzoKIAogICAgICAgICAgICAg
aWYgKGZpcnN0KQogICAgICAgICAgICAgICAgIGZpcnN0ID0gZmFsc2U7Ci0gICAgICAgICAgICBl
bHNlIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICBlbHNlIGlmIChCM1JlZHVjZVN0cmVuZ3Ro
SW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJCMyBhZnRlciBp
dGVyYXRpb24gIyIsIGluZGV4IC0gMSwgIiBvZiByZWR1Y2VTdHJlbmd0aDpcbiIpOwogICAgICAg
ICAgICAgICAgIGRhdGFMb2cobV9wcm9jKTsKICAgICAgICAgICAgIH0KQEAgLTQ1Miw3ICs0NTQs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbV9ibG9jayA9IGJsb2NrOwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIGZvciAobV9pbmRleCA9IDA7IG1faW5kZXggPCBibG9j
ay0+c2l6ZSgpOyArK21faW5kZXgpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2Up
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEIzUmVkdWNlU3RyZW5ndGhJbnRlcm5hbDo6dmVy
Ym9zZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiTG9va2luZyBhdCAiLCAqYmxvY2ssICIgIyIsIG1faW5kZXgsICI6ICIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVlcER1bXAobV9wcm9jLCBibG9jay0+YXQo
bV9pbmRleCkpLCAiXG4iKTsKQEAgLTIwMzUsNyArMjAzNyw3IEBAIHByaXZhdGU6CiAgICAgLy8g
ZWFybHkuCiAgICAgdm9pZCBzcGVjaWFsaXplU2VsZWN0KFZhbHVlKiBzb3VyY2UpCiAgICAgewot
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEIzUmVkdWNlU3RyZW5ndGhJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIlNwZWNpYWxpemluZyBzZWxlY3Q6ICIs
IGRlZXBEdW1wKG1fcHJvYywgc291cmNlKSwgIlxuIik7CiAKICAgICAgICAgLy8gVGhpcyBtdXRh
dGVzIHN0YXJ0SW5kZXggdG8gYWNjb3VudCBmb3IgdGhlIGZhY3QgdGhhdCBtX2Jsb2NrIGdvdCB0
aGUgZnJvbnQgb2YgaXQKQEAgLTIyNzYsNyArMjI3OCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHNpbXBsaWZ5Q0ZHKCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlm
IChCM1JlZHVjZVN0cmVuZ3RoSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFM
b2coIkJlZm9yZSBzaW1wbGlmeUNGRzpcbiIpOwogICAgICAgICAgICAgZGF0YUxvZyhtX3Byb2Mp
OwogICAgICAgICB9CkBAIC0yMzAxLDcgKzIzMDMsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBp
dGVyYXRpb25zIG5lZWRlZCB0byBraWxsIGEgbG90IG9mIGNvZGUuCiAKICAgICAgICAgZm9yIChC
YXNpY0Jsb2NrKiBibG9jayA6IG1fcHJvYykgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgICAgICBpZiAoQjNSZWR1Y2VTdHJlbmd0aEludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIGJsb2NrICIsICpibG9jaywgIjpcbiIpOwog
CiAgICAgICAgICAgICBjaGVja1ByZWRlY2Vzc29yVmFsaWRpdHkoKTsKQEAgLTIzMTcsNyArMjMx
OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICYmIHN1Y2Nlc3Nvci0+bGFzdCgp
LT5vcGNvZGUoKSA9PSBKdW1wKSB7CiAgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIG5l
d1N1Y2Nlc3NvciA9IHN1Y2Nlc3Nvci0+c3VjY2Vzc29yQmxvY2soMCk7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChuZXdTdWNjZXNzb3IgIT0gc3VjY2Vzc29yKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIzUmVk
dWNlU3RyZW5ndGhJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZXBsYWNpbmcg
IiwgcG9pbnRlckR1bXAoYmxvY2spLCAiLT4iLCBwb2ludGVyRHVtcChzdWNjZXNzb3IpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHdpdGggIiwgcG9pbnRlckR1bXAoYmxvY2sp
LCAiLT4iLCBwb2ludGVyRHVtcChuZXdTdWNjZXNzb3IpLApAQCAtMjM0OCw3ICsyMzUwLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICBpZiAoYWxsU2FtZSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCM1JlZHVj
ZVN0cmVuZ3RoSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hhbmdpbmcgIiwg
cG9pbnRlckR1bXAoYmxvY2spLCAiJ3MgdGVybWluYWwgdG8gYSBKdW1wLlxuIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICB9CkBAIC0yMzg3LDcgKzIzODksNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIG5ld1N1Y2Nlc3NvciA6IGJsb2NrLT5zdWNj
ZXNzb3JCbG9ja3MoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1N1Y2Nlc3Nvci0+cmVw
bGFjZVByZWRlY2Vzc29yKHN1Y2Nlc3NvciwgYmxvY2spOwogCi0gICAgICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChCM1JlZHVjZVN0cmVuZ3Ro
SW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1lcmdlZCAiLCBwb2ludGVyRHVtcChibG9jayks
ICItPiIsIHBvaW50ZXJEdW1wKHN1Y2Nlc3NvciksICJcbiIpOwogICAgICAgICAgICAgICAgICAg
ICB9CkBAIC0yMzk3LDcgKzIzOTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKG1fY2hhbmdlZENGRyAmJiB2ZXJib3NlKSB7CisgICAgICAgIGlm
IChtX2NoYW5nZWRDRkcgJiYgQjNSZWR1Y2VTdHJlbmd0aEludGVybmFsOjp2ZXJib3NlKSB7CiAg
ICAgICAgICAgICBkYXRhTG9nKCJCMyBhZnRlciBzaW1wbGlmeUNGRzpcbiIpOwogICAgICAgICAg
ICAgZGF0YUxvZyhtX3Byb2MpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmNwcAppbmRleCBiYmE4NGNh
ZjhiNGJlMDljMjg4NjNjNDI5MDIwODUyZTcwNTExNjIyLi4zODllZjhiOWNhMmQ2MTBlZmRhNTdi
OWQ4MGVhOTNlYmI1ODJlMTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5jcHAKQEAgLTM0LDggKzM0LDYgQEAKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKLXVzaW5nIG5hbWVzcGFjZSBBaXI7Ci0K
IGNvbnN0IFJlZ2lzdGVyU2V0JiBTdGFja21hcEdlbmVyYXRpb25QYXJhbXM6OnVzZWRSZWdpc3Rl
cnMoKSBjb25zdAogewogICAgIEFTU0VSVChtX2NvbnRleHQuY29kZS0+bmVlZHNVc2VkUmVnaXN0
ZXJzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBT
cGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5j
cHAKaW5kZXggNjAzNzBjNTc4ZGRmYzMyOTE4ZWZmYjVhMWJkZTg1NzhlOTNmMmY3MC4uNWViNWI5
YjBlNjdkMzczYzM5YmM3ZDk2ZDkzZWQ5ZjZhYzVkMTg0NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwCkBAIC0zNCw3ICszNCw5IEBACiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi11c2luZyBuYW1lc3BhY2UgQWlyOwordXNp
bmcgQXJnID0gQWlyOjpBcmc7Cit1c2luZyBJbnN0ID0gQWlyOjpJbnN0OwordXNpbmcgVG1wID0g
QWlyOjpUbXA7CiAKIFN0YWNrbWFwU3BlY2lhbDo6U3RhY2ttYXBTcGVjaWFsKCkKIHsKQEAgLTIx
MCw4ICsyMTIsNyBAQCBib29sIFN0YWNrbWFwU3BlY2lhbDo6YWRtaXRzU3RhY2tJbXBsKAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotVmVjdG9yPFZhbHVlUmVwPiBTdGFja21hcFNwZWNpYWw6OnJl
cHNJbXBsKAotICAgIEdlbmVyYXRpb25Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCBudW1JZ25v
cmVkQjNBcmdzLCB1bnNpZ25lZCBudW1JZ25vcmVkQWlyQXJncywgSW5zdCYgaW5zdCkKK1ZlY3Rv
cjxWYWx1ZVJlcD4gU3RhY2ttYXBTcGVjaWFsOjpyZXBzSW1wbChBaXI6OkdlbmVyYXRpb25Db250
ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCBudW1JZ25vcmVkQjNBcmdzLCB1bnNpZ25lZCBudW1JZ25v
cmVkQWlyQXJncywgSW5zdCYgaW5zdCkKIHsKICAgICBWZWN0b3I8VmFsdWVSZXA+IHJlc3VsdDsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5zdC5vcmlnaW4tPm51bUNoaWxkcmVuKCkg
LSBudW1JZ25vcmVkQjNBcmdzOyArK2kpCkBAIC0yNjcsNyArMjY4LDcgQEAgYm9vbCBTdGFja21h
cFNwZWNpYWw6OmlzQXJnVmFsaWRGb3JSZXAoQWlyOjpDb2RlJiBjb2RlLCBjb25zdCBBaXI6OkFy
ZyYgYXJnLCBjb24KICAgICB9CiB9CiAKLVZhbHVlUmVwIFN0YWNrbWFwU3BlY2lhbDo6cmVwRm9y
QXJnKENvZGUmIGNvZGUsIGNvbnN0IEFyZyYgYXJnKQorVmFsdWVSZXAgU3RhY2ttYXBTcGVjaWFs
OjpyZXBGb3JBcmcoQWlyOjpDb2RlJiBjb2RlLCBjb25zdCBBcmcmIGFyZykKIHsKICAgICBzd2l0
Y2ggKGFyZy5raW5kKCkpIHsKICAgICBjYXNlIEFyZzo6VG1wOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVTdGFja0J5R3JhcGhD
b2xvcmluZy5jcHAKaW5kZXggZTg2MGQ5Y2NjNWNiMGFlMWQ4N2MzYWZlZmRhYmY4ODY2ZjMxN2Qx
YS4uZWQ2N2QxYzdjZDg5ZGIwOGMwZjk4Y2YxZjY2M2ExZjVhYmM1MmUzZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9y
aW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlU3Rh
Y2tCeUdyYXBoQ29sb3JpbmcuY3BwCkBAIC00Miw3ICs0Miw5IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKIAogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9v
bCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgQWlyQWxsb2NhdGVTdGFja0J5R3JhcGhDb2xv
cmluZ0ludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAog
c3RydWN0IENvYWxlc2NhYmxlTW92ZSB7CiAgICAgQ29hbGVzY2FibGVNb3ZlKCkKQEAgLTE1Myw3
ICsxNTUsNyBAQCB2b2lkIGFsbG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcoQ29kZSYgY29kZSkK
ICAgICAgICAgU3RhY2tTbG90TGl2ZW5lc3M6OkxvY2FsQ2FsYyBsb2NhbENhbGMobGl2ZW5lc3Ms
IGJsb2NrKTsKIAogICAgICAgICBhdXRvIGludGVyZmVyZSA9IFsmXSAodW5zaWduZWQgaW5zdElu
ZGV4KSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChBaXJBbGxv
Y2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiSW50ZXJmZXJpbmc6ICIsIFdURjo6cG9pbnRlckxpc3REdW1wKGxvY2FsQ2Fs
Yy5saXZlKCkpLCAiXG4iKTsKIAogICAgICAgICAgICAgSW5zdCogcHJldkluc3QgPSBibG9jay0+
Z2V0KGluc3RJbmRleCk7CkBAIC0xODUsNyArMTg3LDcgQEAgdm9pZCBhbGxvY2F0ZVN0YWNrQnlH
cmFwaENvbG9yaW5nKENvZGUmIGNvZGUpCiAgICAgICAgIH07CiAKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpbnN0SW5kZXggPSBibG9jay0+c2l6ZSgpOyBpbnN0SW5kZXgtLTspIHsKLSAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEFpckFsbG9jYXRlU3RhY2tCeUdyYXBo
Q29sb3JpbmdJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJBbmFs
eXppbmc6ICIsIGJsb2NrLT5hdChpbnN0SW5kZXgpLCAiXG4iKTsKIAogICAgICAgICAgICAgLy8g
S2lsbCBkZWFkIHN0b3Jlcy4gRm9yIHNpbXBsaWNpdHkgd2Ugc2F5IHRoYXQgYSBzdG9yZSBpcyBr
aWxsYWJsZSBpZiBpdCBoYXMgb25seSBsYXRlCkBAIC0yMzIsNyArMjM0LDcgQEAgdm9pZCBhbGxv
Y2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nKENvZGUmIGNvZGUpCiAgICAgICAgICAgICB9KTsKICAg
ICB9CiAKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChBaXJBbGxvY2F0ZVN0YWNrQnlHcmFw
aENvbG9yaW5nSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZm9yIChTdGFja1Nsb3QqIHNs
b3QgOiBjb2RlLnN0YWNrU2xvdHMoKSkKICAgICAgICAgICAgIGRhdGFMb2coIkludGVyZmVyZW5j
ZSBvZiAiLCBwb2ludGVyRHVtcChzbG90KSwgIjogIiwgcG9pbnRlckxpc3REdW1wKGludGVyZmVy
ZW5jZVtzbG90XSksICJcbiIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyRW1pdFNodWZmbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJFbWl0U2h1ZmZsZS5jcHAKaW5kZXggNzNkNzEwZmY2OWU3MThlYjRiZTMwNjljMWMx
ZDgwYWZiOWM2NDk2Ny4uNzE2NmVkODY5NGVhM2YxODQyNGZkMjNlODAyMTA5ODA1ZjYxMmJmZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbWl0U2h1ZmZsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbWl0U2h1ZmZsZS5jcHAK
QEAgLTM3LDcgKzM3LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFj
ZSBBaXIgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFj
ZSBBaXJFbWl0U2h1ZmZsZUludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBm
YWxzZTsKK30KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KIFRtcCBmaW5kUG9zc2libGVT
Y3JhdGNoKENvZGUmIGNvZGUsIEJhbmsgYmFuaywgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgewpA
QCAtMTI1LDcgKzEyNyw3IEBAIFZlY3RvcjxJbnN0PiBlbWl0U2h1ZmZsZSgKICAgICBDb2RlJiBj
b2RlLCBWZWN0b3I8U2h1ZmZsZVBhaXI+IHBhaXJzLCBzdGQ6OmFycmF5PEFyZywgMj4gc2NyYXRj
aGVzLCBCYW5rIGJhbmssCiAgICAgVmFsdWUqIG9yaWdpbikKIHsKLSAgICBpZiAodmVyYm9zZSkg
eworICAgIGlmIChBaXJFbWl0U2h1ZmZsZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRh
dGFMb2coCiAgICAgICAgICAgICAiRGVhbGluZyB3aXRoIHBhaXJzOiAiLCBsaXN0RHVtcChwYWly
cyksICIgYW5kIHNjcmF0Y2hlcyAiLCBzY3JhdGNoZXNbMF0sICIsICIsCiAgICAgICAgICAgICBz
Y3JhdGNoZXNbMV0sICJcbiIpOwpAQCAtMTg1LDcgKzE4Nyw3IEBAIFZlY3RvcjxJbnN0PiBlbWl0
U2h1ZmZsZSgKICAgICAgICAgICAgIEFTU0VSVChjdXJyZW50UGFpcnMuaXNFbXB0eSgpKTsKICAg
ICAgICAgICAgIEFyZyBvcmlnaW5hbFNyYyA9IG1hcHBpbmcuYmVnaW4oKS0+a2V5OwogICAgICAg
ICAgICAgQVNTRVJUKCFzaGlmdHMuY29udGFpbnMob3JpZ2luYWxTcmMpKTsKLSAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEFpckVtaXRTaHVmZmxlSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiUHJvY2Vzc2luZyBmcm9tICIsIG9yaWdp
bmFsU3JjLCAiXG4iKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgR3JhcGhOb2RlV29ya2xp
c3Q8QXJnPiB3b3JrbGlzdDsKQEAgLTE5NSw3ICsxOTcsNyBAQCBWZWN0b3I8SW5zdD4gZW1pdFNo
dWZmbGUoCiAgICAgICAgICAgICAgICAgaWYgKGl0ZXIgPT0gbWFwcGluZy5lbmQoKSkgewogICAg
ICAgICAgICAgICAgICAgICAvLyBXaXRoIGEgc2hpZnQgaXQncyBwb3NzaWJsZSB0aGF0IHdlIHBy
ZXZpb3VzbHkgYnVpbHQgdGhlIHRhaWwgb2YgdGhpcyBzaGlmdC4KICAgICAgICAgICAgICAgICAg
ICAgLy8gU2VlIGlmIHRoYXQncyB0aGUgY2FzZSBub3cuCi0gICAgICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoQWlyRW1pdFNodWZmbGVJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIlRyeWluZyB0byBh
cHBlbmQgc2hpZnQgYXQgIiwgc3JjLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgY3VycmVu
dFBhaXJzLmFwcGVuZFZlY3RvcihzaGlmdHMudGFrZShzcmMpKTsKICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CkBAIC0yMTMsNyArMjE1LDcgQEAgVmVjdG9yPEluc3Q+IGVtaXRTaHVmZmxl
KAogICAgICAgICAgICAgQVNTRVJUKGN1cnJlbnRQYWlycy5zaXplKCkpOwogICAgICAgICAgICAg
QVNTRVJUKGN1cnJlbnRQYWlyc1swXS5zcmMoKSA9PSBvcmlnaW5hbFNyYyk7CiAKLSAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEFpckVtaXRTaHVmZmxlSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiY3VycmVudFBhaXJzID0gIiwgbGlz
dER1bXAoY3VycmVudFBhaXJzKSwgIlxuIik7CiAKICAgICAgICAgICAgIGJvb2wgaXNSb3RhdGUg
PSBmYWxzZTsKQEAgLTIyNSw3ICsyMjcsNyBAQCBWZWN0b3I8SW5zdD4gZW1pdFNodWZmbGUoCiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChpc1JvdGF0ZSkgewotICAgICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChBaXJFbWl0U2h1ZmZsZUludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJJdCdzIGEgcm90YXRl
LlxuIik7CiAgICAgICAgICAgICAgICAgUm90YXRlIHJvdGF0ZTsKIApAQCAtMjc3LDE0ICsyNzks
MTQgQEAgVmVjdG9yPEluc3Q+IGVtaXRTaHVmZmxlKAogICAgICAgICAgICAgICAgIHJvdGF0ZXMu
YXBwZW5kKFdURk1vdmUocm90YXRlKSk7CiAgICAgICAgICAgICAgICAgY3VycmVudFBhaXJzLnNo
cmluaygwKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgICAgICAgICAgaWYgKEFpckVtaXRTaHVmZmxlSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkl0J3MgYSBzaGlmdC5cbiIpOwogICAgICAg
ICAgICAgICAgIHNoaWZ0cy5hZGQob3JpZ2luYWxTcmMsIFdURk1vdmUoY3VycmVudFBhaXJzKSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAodmVyYm9zZSkgewor
ICAgIGlmIChBaXJFbWl0U2h1ZmZsZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFM
b2coIlNoaWZ0czpcbiIpOwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogc2hpZnRzKQogICAg
ICAgICAgICAgZGF0YUxvZygiICAgICIsIGVudHJ5LmtleSwgIjogIiwgbGlzdER1bXAoZW50cnku
dmFsdWUpLCAiXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyRml4T2J2aW91c1NwaWxscy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckZpeE9idmlvdXNTcGlsbHMuY3BwCmluZGV4IDljYjExMDFhMTFmMjM1MTdjMjk5MzNiZmFiYTlh
M2M5MjFhODY2YWUuLjYwYThjYzAzNWZmMTI5MDU5MTA1ZWQ2NWVjZjI1MzMyNmM4ZTUzOTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91c1NwaWxs
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3VzU3Bp
bGxzLmNwcApAQCAtMzksNyArMzksOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsg
bmFtZXNwYWNlIEFpciB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOwor
bmFtZXNwYWNlIEFpckZpeE9idmlvdXNTcGlsbHNJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9v
bCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIEZpeE9idmlvdXNTcGlsbHMgewogcHVibGlj
OgpAQCAtNTEsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJ1bigpCiAgICAgewotICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEFpckZpeE9idmlvdXNTcGlsbHNJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkNvZGUgYmVmb3JlIGZpeE9idmlvdXNT
cGlsbHM6XG4iLCBtX2NvZGUpOwogICAgICAgICAKICAgICAgICAgY29tcHV0ZUFsaWFzZXMoKTsK
QEAgLTczLDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoIW1fc3RhdGUu
d2FzVmlzaXRlZCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQWlyRml4T2J2aW91c1NwaWxs
c0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJFeGVjdXRp
bmcgYmxvY2sgIiwgKm1fYmxvY2ssICI6ICIsIG1fc3RhdGUsICJcbiIpOwogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIGZvciAobV9pbnN0SW5kZXggPSAwOyBtX2luc3RJbmRleCA8
IGJsb2NrLT5zaXplKCk7ICsrbV9pbnN0SW5kZXgpCkBAIC0xNjksMTMgKzE3MSwxMyBAQCBwcml2
YXRlOgogICAgIHsKICAgICAgICAgSW5zdCYgaW5zdCA9IG1fYmxvY2stPmF0KG1faW5zdEluZGV4
KTsKIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEFpckZpeE9idmlvdXNTcGls
bHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBFeGVjdXRpbmcg
IiwgaW5zdCwgIjogIiwgbV9zdGF0ZSwgIlxuIik7CiAKICAgICAgICAgSW5zdDo6Zm9yRWFjaERl
ZldpdGhFeHRyYUNsb2JiZXJlZFJlZ3M8QXJnPigKICAgICAgICAgICAgICZpbnN0LCAmaW5zdCwK
ICAgICAgICAgICAgIFsmXSAoY29uc3QgQXJnJiBhcmcsIEFyZzo6Um9sZSwgQmFuaywgV2lkdGgp
IHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQWly
Rml4T2J2aW91c1NwaWxsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgICAgIENsb2JiZXJpbmcgIiwgYXJnLCAiXG4iKTsKICAgICAgICAgICAgICAg
ICBtX3N0YXRlLmNsb2JiZXIoYXJnKTsKICAgICAgICAgICAgIH0pOwpAQCAtMTkwLDcgKzE5Miw3
IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBJbnN0JiBpbnN0ID0gbV9ibG9jay0+YXQobV9p
bnN0SW5kZXgpOwogCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQWlyRml4T2J2
aW91c1NwaWxsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiRml4aW5n
IGluc3QgIiwgaW5zdCwgIjogIiwgbV9zdGF0ZSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICAv
LyBDaGVjayBpZiBhbGlhcyBhbmFseXNpcyBzYXlzIHRoYXQgdGhpcyBpcyB1bm5lY2Vzc2FyeS4K
QEAgLTI2NywxMyArMjY5LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBXaWR0
aDY0OgogICAgICAgICAgICAgICAgICAgICBpZiAoYWxpYXMtPm1vZGUgIT0gUmVnU2xvdDo6QWxs
Qml0cykKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChBaXJGaXhPYnZpb3VzU3Bp
bGxzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgUmVwbGFjaW5nICIsIGFyZywgIiB3aXRoICIsIGFsaWFzLT5yZWcsICJcbiIpOwogICAgICAg
ICAgICAgICAgICAgICBhcmcgPSBUbXAoYWxpYXMtPnJlZyk7CiAgICAgICAgICAgICAgICAgICAg
IGRpZFRoaW5ncyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgICAgICBjYXNlIFdpZHRoMzI6Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgICAgICAgICBpZiAoQWlyRml4T2J2aW91c1NwaWxsc0ludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIFJlcGxhY2luZyAiLCBh
cmcsICIgd2l0aCAiLCBhbGlhcy0+cmVnLCAiIChzdWJ3aWR0aCBjYXNlKVxuIik7CiAgICAgICAg
ICAgICAgICAgICAgIGFyZyA9IFRtcChhbGlhcy0+cmVnKTsKICAgICAgICAgICAgICAgICAgICAg
ZGlkVGhpbmdzID0gdHJ1ZTsKQEAgLTI4NSw3ICsyODcsNyBAQCBwcml2YXRlOgogCiAgICAgICAg
ICAgICAvLyBSZXZlcnQgdG8gaW1tZWRpYXRlIGlmIHRoYXQgZGlkbid0IHdvcmsuCiAgICAgICAg
ICAgICBpZiAoY29uc3QgU2xvdENvbnN0KiBhbGlhcyA9IG1fc3RhdGUuZ2V0U2xvdENvbnN0KGFy
Zy5zdGFja1Nsb3QoKSkpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgICAgICBpZiAoQWlyRml4T2J2aW91c1NwaWxsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgUmVwbGFjaW5nICIsIGFyZywgIiB3aXRoIGNvbnN0
YW50ICIsIGFsaWFzLT5jb25zdGFudCwgIlxuIik7CiAgICAgICAgICAgICAgICAgaWYgKEFyZzo6
aXNWYWxpZEltbUZvcm0oYWxpYXMtPmNvbnN0YW50KSkKICAgICAgICAgICAgICAgICAgICAgYXJn
ID0gQXJnOjppbW0oYWxpYXMtPmNvbnN0YW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcAppbmRleCAxZmEwNTNkYjlj
YTdmYzRjMzg2ZmIxOTM3MTUyMjU1YmVlZDcxMzliLi5iZmVmM2IzZjRmMTFhNTlhMjFkMmI4MWNj
ZTE5MjViY2Q4MWU1NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0Fpckxvd2VyQWZ0ZXJSZWdBbGxvYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwCkBAIC00Niw3ICs0Niw5IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKIAogbmFtZXNwYWNlIHsKIAot
Ym9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgQWlyTG93ZXJBZnRlclJlZ0FsbG9jSW50
ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogICAgIAogfSAv
LyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKQEAgLTU0LDcgKzU2LDcgQEAgdm9pZCBsb3dlckFmdGVy
UmVnQWxsb2MoQ29kZSYgY29kZSkKIHsKICAgICBQaGFzZVNjb3BlIHBoYXNlU2NvcGUoY29kZSwg
Imxvd2VyQWZ0ZXJSZWdBbGxvYyIpOwogCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEFpckxv
d2VyQWZ0ZXJSZWdBbGxvY0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJDb2Rl
IGJlZm9yZSBsb3dlckFmdGVyUmVnQWxsb2M6XG4iLCBjb2RlKTsKICAgICAKICAgICBhdXRvIGlz
UmVsZXZhbnQgPSBbXSAoSW5zdCYgaW5zdCkgLT4gYm9vbCB7CkBAIC0yMjEsNyArMjIzLDcgQEAg
dm9pZCBsb3dlckFmdGVyUmVnQWxsb2MoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YWNrU2xvdHMuYXBwZW5kKHN0YWNrU2xvdCk7CiAgICAgICAgICAgICAgICAgICAgIH0p
OwogCi0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEFp
ckxvd2VyQWZ0ZXJSZWdBbGxvY0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCJQcmUtY2FsbCBwYWlycyBmb3IgIiwgaW5zdCwgIjogIiwgbGlzdER1bXAocGFp
cnMpLCAiXG4iKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpbnNlcnRpb25T
ZXQuaW5zZXJ0SW5zdHMoCkBAIC0yNzMsNyArMjc1LDcgQEAgdm9pZCBsb3dlckFmdGVyUmVnQWxs
b2MoQ29kZSYgY29kZSkKICAgICAgICAgICAgIH0pOwogICAgIH0KIAotICAgIGlmICh2ZXJib3Nl
KQorICAgIGlmIChBaXJMb3dlckFmdGVyUmVnQWxsb2NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgZGF0YUxvZygiQ29kZSBhZnRlciBsb3dlckFmdGVyUmVnQWxsb2M6XG4iLCBjb2RlKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTdGFja0FsbG9j
YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTdGFja0FsbG9jYXRp
b24uY3BwCmluZGV4IDM5MjIyM2NhODg1ODA1YzVmOTZkMmZiYjg4MzlkMTIwMzljNjZjY2YuLjZi
NmEyNmFlN2VmYmI3ZDlmM2YyZWExYmVhNjZiYWUzNGQ1OGI2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3RhY2tBbGxvY2F0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclN0YWNrQWxsb2NhdGlvbi5jcHAKQEAgLTM4LDcg
KzM4LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewog
CiBuYW1lc3BhY2UgewogCi1jb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBB
aXJTdGFja0FsbG9jYXRpb25JbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7Cit9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbGxlY3Rpb24+CiB2b2lkIHVwZGF0ZUZy
YW1lU2l6ZUJhc2VkT25TdGFja1Nsb3RzSW1wbChDb2RlJiBjb2RlLCBjb25zdCBDb2xsZWN0aW9u
JiBjb2xsZWN0aW9uKQpAQCAtNTQsNyArNTYsNyBAQCB2b2lkIHVwZGF0ZUZyYW1lU2l6ZUJhc2Vk
T25TdGFja1Nsb3RzSW1wbChDb2RlJiBjb2RlLCBjb25zdCBDb2xsZWN0aW9uJiBjb2xsZWN0aQog
Ym9vbCBhdHRlbXB0QXNzaWdubWVudCgKICAgICBTdGFja1Nsb3QqIHNsb3QsIGludHB0cl90IG9m
ZnNldEZyb21GUCwgY29uc3QgVmVjdG9yPFN0YWNrU2xvdCo+JiBvdGhlclNsb3RzKQogewotICAg
IGlmICh2ZXJib3NlKQorICAgIGlmIChBaXJTdGFja0FsbG9jYXRpb25JbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgZGF0YUxvZygiQXR0ZW1wdGluZyB0byBhc3NpZ24gIiwgcG9pbnRlckR1bXAo
c2xvdCksICIgdG8gIiwgb2Zmc2V0RnJvbUZQLCAiIHdpdGggaW50ZXJmZXJlbmNlICIsIHBvaW50
ZXJMaXN0RHVtcChvdGhlclNsb3RzKSwgIlxuIik7CiAKICAgICAvLyBOZWVkIHRvIGFsaWduIGl0
IHRvIHRoZSBzbG90J3MgZGVzaXJlZCBhbGlnbm1lbnQuCkBAIC03Miw3ICs3NCw3IEBAIGJvb2wg
YXR0ZW1wdEFzc2lnbm1lbnQoCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEFpclN0YWNrQWxsb2NhdGlvbkludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICBkYXRhTG9nKCJBc3NpZ25lZCAiLCBwb2ludGVyRHVtcChzbG90KSwgIiB0
byAiLCBvZmZzZXRGcm9tRlAsICJcbiIpOwogICAgIHNsb3QtPnNldE9mZnNldEZyb21GUChvZmZz
ZXRGcm9tRlApOwogICAgIHJldHVybiB0cnVlOwpAQCAtODAsNyArODIsNyBAQCBib29sIGF0dGVt
cHRBc3NpZ25tZW50KAogCiB2b2lkIGFzc2lnbihTdGFja1Nsb3QqIHNsb3QsIGNvbnN0IFZlY3Rv
cjxTdGFja1Nsb3QqPiYgb3RoZXJTbG90cykKIHsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAo
QWlyU3RhY2tBbGxvY2F0aW9uSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkF0
dGVtcHRpbmcgdG8gYXNzaWduICIsIHBvaW50ZXJEdW1wKHNsb3QpLCAiIHdpdGggaW50ZXJmZXJl
bmNlICIsIHBvaW50ZXJMaXN0RHVtcChvdGhlclNsb3RzKSwgIlxuIik7CiAgICAgCiAgICAgaWYg
KGF0dGVtcHRBc3NpZ25tZW50KHNsb3QsIC1zdGF0aWNfY2FzdDxpbnRwdHJfdD4oc2xvdC0+Ynl0
ZVNpemUoKSksIG90aGVyU2xvdHMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FjY2Vzc0Nhc2UuY3BwCmluZGV4IDM1ZmZiZjFhYmFiODJlZDdmNDQ2YjU2YjRlZGMxNTVhNDlm
ZWQ4ZDAuLjQxOTg2NTUwNDc0NDM4NzdlY2E2MTMwY2NmZmE3YTVhYTIzZjg0YTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTUxLDcgKzUx
LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK25hbWVzcGFjZSBBY2Nlc3NDYXNlSW50ZXJuYWwg
ewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBBY2Nlc3NDYXNlOjpB
Y2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0KQogICAgIDogbV90eXBlKHR5cGUpCkBAIC00MDgs
NyArNDEwLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZShBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGUmIHN0YXRlKQogdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlv
blN0YXRlJiBzdGF0ZSkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29w
ZShmYWxzZSk7Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEFjY2Vzc0Nhc2VJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiXG5cbkdlbmVyYXRpbmcgY29kZSBmb3I6ICIsICp0
aGlzLCAiXG4iKTsKIAogICAgIEFTU0VSVChtX3N0YXRlID09IEdlbmVyYXRlZCk7IC8vIFdlIHJl
bHkgb24gdGhlIGNhbGxlcnMgc2V0dGluZyB0aGlzIGZvciB1cy4KQEAgLTc5MCwxMSArNzkyLDEx
IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYg
c3RhdGUpCiAKICAgICBjYXNlIFJlcGxhY2U6IHsKICAgICAgICAgaWYgKEluZmVycmVkVHlwZSog
dHlwZSA9IHN0cnVjdHVyZSgpLT5pbmZlcnJlZFR5cGVGb3IoaWRlbnQuaW1wbCgpKSkgewotICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQWNjZXNzQ2FzZUludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkhhdmUgdHlwZTogIiwgdHlwZS0+
ZGVzY3JpcHRvcigpLCAiXG4iKTsKICAgICAgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFw
cGVuZCgKICAgICAgICAgICAgICAgICBqaXQuYnJhbmNoSWZOb3RUeXBlKHZhbHVlUmVncywgc2Ny
YXRjaEdQUiwgdHlwZS0+ZGVzY3JpcHRvcigpKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAodmVyYm9z
ZSkKKyAgICAgICAgfSBlbHNlIGlmIChBY2Nlc3NDYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICBkYXRhTG9nKCJEb24ndCBoYXZlIHR5cGUuXG4iKTsKIAogICAgICAgICBpZiAoaXNJ
bmxpbmVPZmZzZXQobV9vZmZzZXQpKSB7CkBAIC04MjAsMTEgKzgyMiwxMSBAQCB2b2lkIEFjY2Vz
c0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAg
ICBSRUxFQVNFX0FTU0VSVChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA+PSA2IHx8ICFzdHJ1
Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSA9PSBuZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAKICAgICAg
ICAgaWYgKEluZmVycmVkVHlwZSogdHlwZSA9IG5ld1N0cnVjdHVyZSgpLT5pbmZlcnJlZFR5cGVG
b3IoaWRlbnQuaW1wbCgpKSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAg
ICBpZiAoQWNjZXNzQ2FzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFM
b2coIkhhdmUgdHlwZTogIiwgdHlwZS0+ZGVzY3JpcHRvcigpLCAiXG4iKTsKICAgICAgICAgICAg
IHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZCgKICAgICAgICAgICAgICAgICBqaXQuYnJhbmNo
SWZOb3RUeXBlKHZhbHVlUmVncywgc2NyYXRjaEdQUiwgdHlwZS0+ZGVzY3JpcHRvcigpKSk7Ci0g
ICAgICAgIH0gZWxzZSBpZiAodmVyYm9zZSkKKyAgICAgICAgfSBlbHNlIGlmIChBY2Nlc3NDYXNl
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJEb24ndCBoYXZlIHR5cGUu
XG4iKTsKIAogICAgICAgICAvLyBOT1RFOiBUaGlzIGxvZ2ljIGlzIGR1cGxpY2F0ZWQgaW4gQWNj
ZXNzQ2FzZTo6ZG9lc0NhbGxzKCkuIEl0J3MgaW1wb3J0YW50IHRoYXQgZG9lc0NhbGxzKCkga25v
d3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0
YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMu
Y3BwCmluZGV4IGYzNGMyNzQyMDUzY2IyOTNkYWE1YzE2Mzg2NmJmYWM0YTAyMjU2OTguLjUzYjg0
ZDljMDM3ZTE3ZjZhZTkzZGM4NTUxOTI3ODhiNjNlNjdhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcApAQCAtMzgsNyArMzgsOSBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFtZXNwYWNlIENhbGxMaW5rU3RhdHVzSW50ZXJuYWwg
ewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBDYWxsTGlua1N0YXR1
czo6Q2FsbExpbmtTdGF0dXMoSlNWYWx1ZSB2YWx1ZSkKICAgICA6IG1fY291bGRUYWtlU2xvd1Bh
dGgoZmFsc2UpCkBAIC0yODksNyArMjkxLDcgQEAgdm9pZCBDYWxsTGlua1N0YXR1czo6Y29tcHV0
ZURGR1N0YXR1c2VzKAogICAgIFVOVVNFRF9QQVJBTShkZmdDb2RlQmxvY2spOwogI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQogICAgIAotICAgIGlmICh2ZXJib3NlKSB7CisgICAgaWYgKENhbGxM
aW5rU3RhdHVzSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZGF0YUxvZygiQ29udGV4dCBt
YXA6XG4iKTsKICAgICAgICAgQ29udGV4dE1hcDo6aXRlcmF0b3IgaXRlciA9IG1hcC5iZWdpbigp
OwogICAgICAgICBDb250ZXh0TWFwOjppdGVyYXRvciBlbmQgPSBtYXAuZW5kKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2Fz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZS5jcHAKaW5kZXggYzRkYTgwZWNjMTljMjE0N2UyZmE3YjVkOTk2ODRjZGZlYjJlNDc4MC4u
NjA2NjkxYjNiMjAzYWVlMWFjYmEyNzRmNDU1YzRiNGVlYzc3ZjdlYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNl
LmNwcApAQCAtMzgsNyArMzgsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFtZXNwYWNlIEdl
dHRlclNldHRlckFjY2Vzc0Nhc2VJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3Nl
ID0gZmFsc2U7Cit9CiAKIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OkdldHRlclNldHRlckFjY2Vz
c0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRT
ZXQqIGFkZGl0aW9uYWxTZXQsIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSkKICAgICA6IEJhc2Uo
dm0sIG93bmVyLCBhY2Nlc3NUeXBlLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2
aWFQcm94eSwgYWRkaXRpb25hbFNldCkKQEAgLTE4NSw3ICsxODcsNyBAQCB2b2lkIEdldHRlclNl
dHRlckFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBz
dGF0ZSwgY29ucwogICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2VydmVkU3RhdGUg
cHJlc2VydmVkU3RhdGUgPQogICAgIGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5
UHVzaGluZyhqaXQsIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6RXh0cmFTdGFja1NwYWNlOjpT
cGFjZUZvckNDYWxsKTsKIAotICAgIGlmICh2ZXJib3NlKSB7CisgICAgaWYgKEdldHRlclNldHRl
ckFjY2Vzc0Nhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICBkYXRhTG9nKCJiYXNlR1BS
ID0gIiwgYmFzZUdQUiwgIlxuIik7CiAgICAgICAgIGRhdGFMb2coInZhbHVlUmVncyA9ICIsIHZh
bHVlUmVncywgIlxuIik7CiAgICAgICAgIGRhdGFMb2coInNjcmF0Y2hHUFIgPSAiLCBzY3JhdGNo
R1BSLCAiXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9P
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCmluZGV4IDYxOWVhNWQ5Y2I0N2Ix
ZjE5NWIwZThiNDdkNTk5NmNhODU5YzM0ZWYuLjk2Nzk1MjM3Nzg4Y2MxOTY1MDc0MWJkY2Y2OWFl
NDdjZDI4ZGE0YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9P
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcApAQCAtMTgyLDEzICsxODIs
MTUgQEAgYm9vbCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aXNWYWxpZEFuZFdhdGNoYWJs
ZSgpIGNvbnN0CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNw
YWNlIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJv
b2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBnZW5lcmF0
ZUNvbmRpdGlvbigKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBvYmplY3Qs
IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIFByb3BlcnR5Q29uZGl0aW9uOjpLaW5kIGNvbmRpdGlv
bktpbmQpCiB7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvYmplY3QtPnN0cnVjdHVyZSgp
OwotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldElu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJDcmVhdGluZyBjb25kaXRpb24gIiwg
Y29uZGl0aW9uS2luZCwgIiBmb3IgIiwgcG9pbnRlckR1bXAoc3RydWN0dXJlKSwgIlxuIik7CiAK
ICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiByZXN1bHQ7CkBAIC0yMjYsMTIgKzIyOCwxMiBA
QCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBnZW5lcmF0ZUNvbmRpdGlvbigKICAgICB9CiAKICAg
ICBpZiAoIXJlc3VsdC5pc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2lu
dCgpKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkZhaWxl
ZCB0byBjcmVhdGUgY29uZGl0aW9uOiAiLCByZXN1bHQsICJcbiIpOwogICAgICAgICByZXR1cm4g
T2JqZWN0UHJvcGVydHlDb25kaXRpb24oKTsKICAgICB9CiAKLSAgICBpZiAodmVyYm9zZSkKKyAg
ICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgZGF0YUxvZygiTmV3IGNvbmRpdGlvbjogIiwgcmVzdWx0LCAiXG4iKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQpAQCAtMjQ4LDExICsyNTAsMTEgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQgZ2VuZXJhdGVDb25kaXRpb25zKAogICAgIFZlY3RvcjxPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
bj4gY29uZGl0aW9uczsKICAgICAKICAgICBmb3IgKDs7KSB7Ci0gICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIHN0cnVjdHVyZTogIiwgcG9pbnRl
ckR1bXAoc3RydWN0dXJlKSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICBpZiAoc3RydWN0dXJl
LT5pc1Byb3h5KCkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYg
KE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiSXQncyBhIHByb3h5LCBzbyBpbnZhbGlkLlxuIik7CiAgICAgICAgICAg
ICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmludmFsaWQoKTsKICAgICAgICAg
fQpAQCAtMjYxLDExICsyNjMsMTEgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJh
dGVDb25kaXRpb25zKAogICAgICAgICAKICAgICAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKSB7CiAg
ICAgICAgICAgICBpZiAoIXByb3RvdHlwZSkgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICAgICAgICAgIGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJSZWFjaGVkIGVuZCBvZiBw
cm90b3R5cGUgY2hhaW4gYXMgZXhwZWN0ZWQsIGRvbmUuXG4iKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAg
ICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiVW5leHBlY3RlZGx5IHJlYWNoZWQgZW5kIG9mIHByb3RvdHlw
ZSBjaGFpbiwgc28gaW52YWxpZC5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0OjppbnZhbGlkKCk7CiAgICAgICAgIH0KQEAgLTI3NiwzNSArMjc4LDM1
IEBAIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRlQ29uZGl0aW9ucygKICAgICAg
ICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgICAgIGlmIChjb25j
dXJyZW5jeSA9PSBNYWluVGhyZWFkKSB7CiAgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+
aGFzQmVlbkZsYXR0ZW5lZEJlZm9yZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkRpY3Rp
b25hcnkgaGFzIGJlZW4gZmxhdHRlbmVkIGJlZm9yZSwgc28gaW52YWxpZC5cbiIpOwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmludmFsaWQo
KTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiRmxhdHRlbmluZyAiLCBwb2ludGVy
RHVtcChzdHJ1Y3R1cmUpKTsKICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0
aW9uYXJ5U3RydWN0dXJlKHZtLCBvYmplY3QpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZygiQ2Fubm90IGZsYXR0ZW4gZGljdGlvbmFyeSB3aGVuIG5vdCBvbiBtYWluIHRocmVhZCwg
c28gaW52YWxpZC5cbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldDo6aW52YWxpZCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKCFmdW5jdG9yKGNvbmRpdGlvbnMsIG9iamVjdCkpIHsKLSAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiRnVuY3RvciBmYWlsZWQsIGlu
dmFsaWQuXG4iKTsKICAgICAgICAgICAgIHJldHVybiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dDo6aW52YWxpZCgpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAob2JqZWN0ID09
IHByb3RvdHlwZSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAo
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJSZWFjaGVkIGRlc2lyZWQgcHJvdG90eXBlLCBkb25lLlxuIik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICh2ZXJib3NlKQorICAg
IGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICBkYXRhTG9nKCJSZXR1cm5pbmcgY29uZGl0aW9uczogIiwgbGlzdER1bXAoY29uZGl0aW9ucyks
ICJcbiIpOwogICAgIHJldHVybiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6Y3JlYXRlKGNv
bmRpdGlvbnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggZmIwYjZhOWQ4YzJkZGM4ZmMzZjljOTE5MWRiZjIy
YjliZDQwMjk4OC4uNDIyODBjNWFlNmY3NmRiNjcwM2E2MDE2ZDU4M2MxYjBhMDFkYzM1YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nl
c3MuY3BwCkBAIC00NCw3ICs0NCw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCituYW1lc3BhY2Ug
UG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7Cit9CiAKIHZvaWQgQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAogewpAQCAtMjQ3LDcgKzI0OSw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1
bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKAogICAgICAgICBjYXNlc1RvQWRkLmFwcGVu
ZChXVEZNb3ZlKG15Q2FzZSkpOwogICAgIH0KIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChQ
b2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJjYXNl
c1RvQWRkOiAiLCBsaXN0RHVtcChjYXNlc1RvQWRkKSwgIlxuIik7CiAKICAgICAvLyBJZiB0aGVy
ZSBhcmVuJ3QgYW55IGNhc2VzIHRvIGFkZCwgdGhlbiBmYWlsIG9uIHRoZSBncm91bmRzIHRoYXQg
dGhlcmUncyBubyBwb2ludCB0byBnZW5lcmF0aW5nIGEKQEAgLTI2Myw3ICsyNjUsNyBAQCBBY2Nl
c3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcygKICAgICAgICAg
bV9saXN0LmFwcGVuZChXVEZNb3ZlKGNhc2VUb0FkZCkpOwogICAgIH0KICAgICAKLSAgICBpZiAo
dmVyYm9zZSkKKyAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgZGF0YUxvZygiQWZ0ZXIgYWRkQ2FzZXM6IG1fbGlzdDogIiwgbGlzdER1bXAobV9saXN0
KSwgIlxuIik7CiAKICAgICByZXR1cm4gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6QnVmZmVyZWQ7
CkBAIC0zMzQsNyArMzM2LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0Fj
Y2Vzczo6cmVnZW5lcmF0ZSgKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJT
Y29wZShmYWxzZSk7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKFBvbHltb3JwaGlj
QWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIlJlZ2VuZXJhdGUgd2l0
aCBtX2xpc3Q6ICIsIGxpc3REdW1wKG1fbGlzdCksICJcbiIpOwogICAgIAogICAgIEFjY2Vzc0dl
bmVyYXRpb25TdGF0ZSBzdGF0ZSh2bSk7CkBAIC00MDIsNyArNDA0LDcgQEAgQWNjZXNzR2VuZXJh
dGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSgKICAgICB9CiAgICAgbV9s
aXN0LnJlc2l6ZShkc3RJbmRleCk7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKFBv
bHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIk9wdGlt
aXplZCBjYXNlczogIiwgbGlzdER1bXAoY2FzZXMpLCAiXG4iKTsKICAgICAKICAgICAvLyBBdCB0
aGlzIHBvaW50IHdlJ3JlIGNvbnZpbmNlZCB0aGF0ICdjYXNlcycgY29udGFpbnMgdGhlIGNhc2Vz
IHRoYXQgd2Ugd2FudCB0byBKSVQgbm93IGFuZCB3ZQpAQCAtNTE3LDcgKzUxOSw3IEBAIEFjY2Vz
c0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoCiAKICAgICBM
aW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFp
bCk7CiAgICAgaWYgKGxpbmtCdWZmZXIuZGlkRmFpbFRvQWxsb2NhdGUoKSkgewotICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJEaWQgZmFpbCB0byBhbGxvY2F0ZS5cbiIpOwogICAg
ICAgICByZXR1cm4gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6R2F2ZVVwOwogICAgIH0KQEAgLTUy
OCw3ICs1MzAsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpy
ZWdlbmVyYXRlKAogCiAgICAgbGlua0J1ZmZlci5saW5rKGZhaWx1cmUsIHN0dWJJbmZvLnNsb3dQ
YXRoU3RhcnRMb2NhdGlvbigpKTsKICAgICAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoUG9s
eW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZyhGdWxsQ29k
ZU9yaWdpbihjb2RlQmxvY2ssIHN0dWJJbmZvLmNvZGVPcmlnaW4pLCAiOiBHZW5lcmF0aW5nIHBv
bHltb3JwaGljIGFjY2VzcyBzdHViIGZvciAiLCBsaXN0RHVtcChjYXNlcyksICJcbiIpOwogCiAg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGUgPSBGSU5BTElaRV9DT0RFX0ZPUigKQEAgLTU0
NCw3ICs1NDYsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpy
ZWdlbmVyYXRlKAogICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0YXRlLndhdGNocG9pbnRz
KTsKICAgICBpZiAoIXN0YXRlLndlYWtSZWZlcmVuY2VzLmlzRW1wdHkoKSkKICAgICAgICAgbV93
ZWFrUmVmZXJlbmNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFdyaXRlQmFycmllcjxKU0Nl
bGw+Pj4oV1RGTW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOwotICAgIGlmICh2ZXJib3NlKQor
ICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRh
TG9nKCJSZXR1cm5pbmc6ICIsIGNvZGUuY29kZSgpLCAiXG4iKTsKICAgICAKICAgICBtX2xpc3Qg
PSBXVEZNb3ZlKGNhc2VzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJvcGVydHlDb25kaXRpb24uY3BwCmluZGV4IDQyM2JjMjEwZWQ0ODNjYTExOTdlMzk5YjU5
NTU0NjY2Y2RmMzk1YzkuLjA3NjQ0YTMwN2Y5Y2Y0ZTljNWYzMmE3MWMxODFjMmJmODM5OTU1ZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9wZXJ0eUNvbmRp
dGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3BlcnR5Q29u
ZGl0aW9uLmNwcApAQCAtMzIsNyArMzIsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFtZXNw
YWNlIFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWwgewogc3RhdGljIGJvb2wgdmVyYm9zZSA9IGZh
bHNlOworfQogCiB2b2lkIFByb3BlcnR5Q29uZGl0aW9uOjpkdW1wSW5Db250ZXh0KFByaW50U3Ry
ZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogewpAQCAtNjUsMjAgKzY3LDIw
IEBAIHZvaWQgUHJvcGVydHlDb25kaXRpb246OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
IGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVy
dHlXYXRjaHBvaW50KAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogYmFzZSkg
Y29uc3QKIHsKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbklu
dGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAiRGV0ZXJt
aW5pbmcgdmFsaWRpdHkgb2YgIiwgKnRoaXMsICIgd2l0aCBzdHJ1Y3R1cmUgIiwgcG9pbnRlckR1
bXAoc3RydWN0dXJlKSwgIiBhbmQgYmFzZSAiLAogICAgICAgICAgICAgSlNWYWx1ZShiYXNlKSwg
IiBhc3N1bWluZyBpbXB1cmUgcHJvcGVydHkgd2F0Y2hwb2ludHMgYXJlIHNldC5cbiIpOwogICAg
IH0KICAgICAKICAgICBpZiAoISp0aGlzKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRh
dGFMb2coIkludmFsaWQgYmVjYXVzZSB1bnNldC5cbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogICAgIAogICAgIGlmICghc3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2Fj
aGVhYmxlKCkpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChQcm9wZXJ0eUNv
bmRpdGlvbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiSW52YWxpZCBi
ZWNhdXNlIGFjY2Vzc2VzIGFyZSBub3QgY2FjaGVhYmxlLlxuIik7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CkBAIC04OCw3ICs5MCw3IEBAIGJvb2wgUHJvcGVydHlDb25kaXRpb246Omlz
U3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KAogICAgICAgICB1bnNp
Z25lZCBjdXJyZW50QXR0cmlidXRlczsKICAgICAgICAgUHJvcGVydHlPZmZzZXQgY3VycmVudE9m
ZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCgpLCBjdXJyZW50QXR0cmlidXRl
cyk7CiAgICAgICAgIGlmIChjdXJyZW50T2Zmc2V0ICE9IG9mZnNldCgpIHx8IGN1cnJlbnRBdHRy
aWJ1dGVzICE9IGF0dHJpYnV0ZXMoKSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAg
ICAgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKSB7CiAgICAg
ICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgYmVjYXVz
ZSB3ZSBuZWVkIG9mZnNldCwgYXR0cmlidXRlcyB0byBiZSAiLCBvZmZzZXQoKSwgIiwgIiwgYXR0
cmlidXRlcygpLAogICAgICAgICAgICAgICAgICAgICAiIGJ1dCB0aGV5IGFyZSAiLCBjdXJyZW50
T2Zmc2V0LCAiLCAiLCBjdXJyZW50QXR0cmlidXRlcywgIlxuIik7CkBAIC0xMDAsMjAgKzEwMiwy
MCBAQCBib29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVBy
b3BlcnR5V2F0Y2hwb2ludCgKICAgICAgICAgCiAgICAgY2FzZSBBYnNlbmNlOiB7CiAgICAgICAg
IGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9z
ZSkKKyAgICAgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgICAgIGRhdGFMb2coIkludmFsaWQgYmVjYXVzZSBpdCdzIGEgZGljdGlvbmFy
eS5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAg
UHJvcGVydHlPZmZzZXQgY3VycmVudE9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5
KHVpZCgpKTsKICAgICAgICAgaWYgKGN1cnJlbnRPZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewot
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoUHJvcGVydHlDb25kaXRp
b25JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJJbnZhbGlkIGJl
Y2F1c2UgdGhlIHByb3BlcnR5IGV4aXN0cyBhdCBvZmZzZXQ6ICIsIGN1cnJlbnRPZmZzZXQsICJc
biIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBpZiAoc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSAhPSBwcm90b3R5cGUo
KSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGlmIChQcm9wZXJ0
eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygK
ICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgYmVjYXVzZSB0aGUgcHJvdG90eXBlIGlzICIs
IHN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCksICIgZXZlbiB0aG91Z2ggIgogICAgICAgICAg
ICAgICAgICAgICAiaXQgc2hvdWxkIGhhdmUgYmVlbiAiLCBKU1ZhbHVlKHByb3RvdHlwZSgpKSwg
IlxuIik7CkBAIC0xMjYsNyArMTI4LDcgQEAgYm9vbCBQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGls
bFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoCiAgICAgCiAgICAgY2FzZSBB
YnNlbmNlT2ZTZXRFZmZlY3Q6IHsKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5
KCkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKFByb3BlcnR5
Q29uZGl0aW9uSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiSW52
YWxpZCBiZWNhdXNlIGl0J3MgYSBkaWN0aW9uYXJ5LlxuIik7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KQEAgLTEzNSw3ICsxMzcsNyBAQCBib29sIFByb3BlcnR5Q29uZGl0
aW9uOjppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgKICAgICAg
ICAgUHJvcGVydHlPZmZzZXQgY3VycmVudE9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVu
dGx5KHVpZCgpLCBjdXJyZW50QXR0cmlidXRlcyk7CiAgICAgICAgIGlmIChjdXJyZW50T2Zmc2V0
ICE9IGludmFsaWRPZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChjdXJyZW50QXR0cmlidXRlcyAm
IChSZWFkT25seSB8IEFjY2Vzc29yIHwgQ3VzdG9tQWNjZXNzb3IpKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25J
bnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAg
ICAgICAgICAgICAgICAgICAgIkludmFsaWQgYmVjYXVzZSB3ZSBleHBlY3RlZCBub3QgdG8gaGF2
ZSBhIHNldHRlciwgYnV0IHdlIGhhdmUgb25lIGF0IG9mZnNldCAiLAogICAgICAgICAgICAgICAg
ICAgICAgICAgY3VycmVudE9mZnNldCwgIiB3aXRoIGF0dHJpYnV0ZXMgIiwgY3VycmVudEF0dHJp
YnV0ZXMsICJcbiIpOwpAQCAtMTQ1LDcgKzE0Nyw3IEBAIGJvb2wgUHJvcGVydHlDb25kaXRpb246
OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KAogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBpZiAoc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGVPYmplY3Qo
KSAhPSBwcm90b3R5cGUoKSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAg
ICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAg
ICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgYmVjYXVzZSB0aGUg
cHJvdG90eXBlIGlzICIsIHN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCksICIgZXZlbiB0aG91
Z2ggIgogICAgICAgICAgICAgICAgICAgICAiaXQgc2hvdWxkIGhhdmUgYmVlbiAiLCBKU1ZhbHVl
KHByb3RvdHlwZSgpKSwgIlxuIik7CkBAIC0xNjAsNyArMTYyLDcgQEAgYm9vbCBQcm9wZXJ0eUNv
bmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoCiAg
ICAgICAgIGlmICghYmFzZSB8fCBiYXNlLT5zdHJ1Y3R1cmUoKSAhPSBzdHJ1Y3R1cmUpIHsKICAg
ICAgICAgICAgIC8vIENvbnNlcnZhdGl2ZWx5IHJldHVybiBmYWxzZSwgc2luY2Ugd2UgY2Fubm90
IHZlcmlmeSB0aGlzIG9uZSB3aXRob3V0IGhhdmluZyB0aGUKICAgICAgICAgICAgIC8vIG9iamVj
dC4KLSAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICBpZiAoUHJvcGVydHlD
b25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coCiAg
ICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhIGJhc2Ug
b3IgdGhlIGJhc2UgaGFzIHRoZSB3cm9uZyBzdHJ1Y3R1cmU6ICIsCiAgICAgICAgICAgICAgICAg
ICAgIFJhd1BvaW50ZXIoYmFzZSksICJcbiIpOwpAQCAtMTczLDcgKzE3NSw3IEBAIGJvb2wgUHJv
cGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBv
aW50KAogICAgICAgICAKICAgICAgICAgUHJvcGVydHlPZmZzZXQgY3VycmVudE9mZnNldCA9IHN0
cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCgpKTsKICAgICAgICAgaWYgKGN1cnJlbnRPZmZz
ZXQgPT0gaW52YWxpZE9mZnNldCkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAg
ICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAg
ICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgYmVjYXVzZSB0
aGUgYmFzZSBubyBsb25nIGFwcGVhcnMgdG8gaGF2ZSAiLCB1aWQoKSwgIiBvbiBpdHMgc3RydWN0
dXJlOiAiLAogICAgICAgICAgICAgICAgICAgICAgICAgUmF3UG9pbnRlcihiYXNlKSwgIlxuIik7
CkBAIC0xODMsNyArMTg1LDcgQEAgYm9vbCBQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlk
QXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoCiAKICAgICAgICAgSlNWYWx1ZSBjdXJy
ZW50VmFsdWUgPSBiYXNlLT5nZXREaXJlY3QoY3VycmVudE9mZnNldCk7CiAgICAgICAgIGlmIChj
dXJyZW50VmFsdWUgIT0gcmVxdWlyZWRWYWx1ZSgpKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9z
ZSkgeworICAgICAgICAgICAgaWYgKFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWw6OnZlcmJvc2Up
IHsKICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAiSW52YWxp
ZCBiZWNhdXNlIHRoZSB2YWx1ZSBpcyAiLCBjdXJyZW50VmFsdWUsICIgYnV0IHdlIHJlcXVpcmUg
IiwgcmVxdWlyZWRWYWx1ZSgpLAogICAgICAgICAgICAgICAgICAgICAiXG4iKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmlu
ZGV4IDIxODc3NTE3NmYyNzdlMzY2OGRjMTJkZWI2NjY1ZGExNGU0N2QxYjcuLjNlM2JmMjQzYWE5
NWEyOTNlYjI2YWRjMjg1YWE5OTYwNjBlODlkNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtMzUsNyArMzUsOSBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCiAKK25hbWVzcGFjZSBTdHJ1Y3R1
cmVTdHViSW5mb0ludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsK
K30KIAogU3RydWN0dXJlU3R1YkluZm86OlN0cnVjdHVyZVN0dWJJbmZvKEFjY2Vzc1R5cGUgYWNj
ZXNzVHlwZSkKICAgICA6IGNhbGxTaXRlSW5kZXgoVUlOVF9NQVgpCkBAIC0xMTUsNyArMTE3LDcg
QEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2Fz
ZSgKIHsKICAgICBWTSYgdm0gPSAqY29kZUJsb2NrLT52bSgpOwogICAgIAotICAgIGlmICh2ZXJi
b3NlKQorICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICBkYXRhTG9nKCJBZGRpbmcgYWNjZXNzIGNhc2U6ICIsIGFjY2Vzc0Nhc2UsICJcbiIpOwogICAg
IAogICAgIGlmICghYWNjZXNzQ2FzZSkKQEAgLTEyNiw3ICsxMjgsNyBAQCBBY2Nlc3NHZW5lcmF0
aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAogICAgIGlmIChjYWNo
ZVR5cGUgPT0gQ2FjaGVUeXBlOjpTdHViKSB7CiAgICAgICAgIHJlc3VsdCA9IHUuc3R1Yi0+YWRk
Q2FzZShsb2NrZXIsIHZtLCBjb2RlQmxvY2ssICp0aGlzLCBpZGVudCwgV1RGTW92ZShhY2Nlc3ND
YXNlKSk7CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKFN0cnVj
dHVyZVN0dWJJbmZvSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJIYWQg
c3R1YiwgcmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOwogCiAgICAgICAgIGlmICghcmVzdWx0LmJ1
ZmZlcmVkKCkpIHsKQEAgLTE0Nyw3ICsxNDksNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0
cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAogICAgICAgICAKICAgICAgICAgcmVzdWx0
ID0gYWNjZXNzLT5hZGRDYXNlcyhsb2NrZXIsIHZtLCBjb2RlQmxvY2ssICp0aGlzLCBpZGVudCwg
V1RGTW92ZShhY2Nlc3NDYXNlcykpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgZGF0YUxvZygiQ3JlYXRlZCBzdHViLCByZXN1bHQ6ICIsIHJlc3VsdCwgIlxuIik7CiAKICAg
ICAgICAgaWYgKCFyZXN1bHQuYnVmZmVyZWQoKSkgewpAQCAtMTY0LDcgKzE2Niw3IEBAIEFjY2Vz
c0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAgICAg
Ly8gSWYgd2UgZGlkbid0IGJ1ZmZlciBhbnkgY2FzZXMgdGhlbiBiYWlsLiBJZiB0aGlzIG1hZGUg
bm8gY2hhbmdlcyB0aGVuIHdlJ2xsIGp1c3QgdHJ5IGFnYWluCiAgICAgLy8gc3ViamVjdCB0byBj
b29sLWRvd24uCiAgICAgaWYgKCFyZXN1bHQuYnVmZmVyZWQoKSkgewotICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICBkYXRhTG9nKCJEaWRuJ3QgYnVmZmVyIGFueXRoaW5nLCBiYWlsaW5nLlxuIik7
CiAgICAgICAgIGJ1ZmZlcmVkU3RydWN0dXJlcy5jbGVhcigpOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwpAQCAtMTcyLDcgKzE3NCw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJl
U3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAgICAgCiAgICAgLy8gVGhlIGJ1ZmZlcmluZyBjb3Vu
dGRvd24gdGVsbHMgdXMgaWYgd2Ugc2hvdWxkIGJlIHJlcGF0Y2hpbmcgbm93LgogICAgIGlmIChi
dWZmZXJpbmdDb3VudGRvd24pIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChT
dHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygi
Q291bnRkb3duIGlzIHRvbyBoaWdoOiAiLCBidWZmZXJpbmdDb3VudGRvd24sICIuXG4iKTsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0xODMsNyArMTg1LDcgQEAgQWNjZXNzR2Vu
ZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgKICAgICAKICAg
ICByZXN1bHQgPSB1LnN0dWItPnJlZ2VuZXJhdGUobG9ja2VyLCB2bSwgY29kZUJsb2NrLCAqdGhp
cywgaWRlbnQpOwogICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTdHJ1Y3R1cmVTdHVi
SW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJSZWdlbmVyYXRpb24gcmVz
dWx0OiAiLCByZXN1bHQsICJcbiIpOwogICAgIAogICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQu
YnVmZmVyZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVh
cC5jcHAKaW5kZXggY2Q2OTRiYmViYWM4MDdkNTE4ZjY2YzQ3Y2FhYWI2ZTc4ZTkxZDIzYy4uNzEz
MzM5ZDYyODE4ZDdhNmM2OWEzMTcyMzNlNGY1ZDNmYTFmMGIwOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQWJzdHJhY3RIZWFwS2luZCBraW5kKQog
ewogICAgIHN3aXRjaCAoa2luZCkgewogI2RlZmluZSBBQlNUUkFDVF9IRUFQX0RVTVAobmFtZSkg
ICAgICAgICAgICBcCi0gICAgY2FzZSBuYW1lOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICBjYXNlIEFic3RyYWN0SGVhcEtpbmQ6Om5hbWU6ICAgICAgIFwKICAgICAgICAgb3V0
LnByaW50KCNuYW1lKTsgICAgICAgICAgICAgICAgICAgXAogICAgICAgICByZXR1cm47CiAgICAg
Rk9SX0VBQ0hfQUJTVFJBQ1RfSEVBUF9LSU5EKEFCU1RSQUNUX0hFQVBfRFVNUCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9u
UGhhc2UuY3BwCmluZGV4IDUxNjUwZjU4NWQ0ZThlYTZhMzM5ZTdmNjMwMjhlYTA4ZWQ1OGVhNGYu
LmE0NTdmOGY1N2Q0OWNjM2UyNzMzOTc2YjgwYjJmZDk4NjNhNDYwYWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBo
YXNlLmNwcApAQCAtNTAsNyArNTAsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIERGR0Fy
Z3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJi
b3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIEFyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UgOiBwdWJs
aWMgUGhhc2UgewogcHVibGljOgpAQCAtNjUsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8v
IHZlcnNpb24gb3ZlciBMb2FkU3RvcmUuCiAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbnVs
bHB0ciwgbV9ncmFwaC5tX2Zvcm0gPT0gU1NBKTsKICAgICAgICAgCi0gICAgICAgIGlmICh2ZXJi
b3NlKSB7CisgICAgICAgIGlmIChERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlSW50ZXJuYWw6
OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkdyYXBoIGJlZm9yZSBhcmd1bWVudHMg
ZWxpbWluYXRpb246XG4iKTsKICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwogICAgICAgICB9
CkBAIC0xNTcsNyArMTU5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdBcmd1bWVudHNF
bGltaW5hdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJD
YW5kaWRhdGVzOiAiLCBsaXN0RHVtcChtX2NhbmRpZGF0ZXMpLCAiXG4iKTsKICAgICB9CiAKQEAg
LTIxMCw3ICsyMTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdHJhbnNpdGl2ZWx5UmVtb3ZlQ2Fu
ZGlkYXRlKE5vZGUqIG5vZGUsIE5vZGUqIHNvdXJjZSA9IG51bGxwdHIpCiAgICAgewogICAgICAg
ICBib29sIHJlbW92ZWQgPSBtX2NhbmRpZGF0ZXMucmVtb3ZlKG5vZGUpOwotICAgICAgICBpZiAo
cmVtb3ZlZCAmJiB2ZXJib3NlICYmIHNvdXJjZSkKKyAgICAgICAgaWYgKHJlbW92ZWQgJiYgREZH
QXJndW1lbnRzRWxpbWluYXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlICYmIHNvdXJjZSkKICAg
ICAgICAgICAgIGRhdGFMb2coImVsaW1pbmF0aW5nIGNhbmRpZGF0ZTogIiwgbm9kZSwgIiBiZWNh
dXNlIGl0IGVzY2FwZXMgZnJvbTogIiwgc291cmNlLCAiXG4iKTsKIAogICAgICAgICBpZiAocmVt
b3ZlZCkKQEAgLTQxOCw3ICs0MjAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdBcmd1bWVudHNFbGlt
aW5hdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJBZnRl
ciBlc2NhcGUgYW5hbHlzaXM6ICIsIGxpc3REdW1wKG1fY2FuZGlkYXRlcyksICJcbiIpOwogICAg
IH0KIApAQCAtNTE5LDcgKzUyMSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIC8v
IGZvciB0aGlzIGFyZ3VtZW50cyBhbGxvY2F0aW9uLCBhbmQgd2UnZCBoYXZlIHRvIGV4YW1pbmUg
ZXZlcnkgbm9kZSBpbiB0aGUgYmxvY2ssCiAgICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gd2Ug
Y2FuIGp1c3QgZWxpbWluYXRlIHRoZSBjYW5kaWRhdGUuCiAgICAgICAgICAgICAgICAgICAgIGlm
IChub2RlSW5kZXggPT0gYmxvY2stPnNpemUoKSAmJiBjYW5kaWRhdGUtPm93bmVyICE9IGJsb2Nr
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiZWxpbWluYXRpbmcgY2Fu
ZGlkYXRlOiAiLCBjYW5kaWRhdGUsICIgYmVjYXVzZSBpdCBpcyBjbG9iYmVyZWQgYnk6ICIsIGJs
b2NrLT5hdChub2RlSW5kZXgpLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5z
aXRpdmVseVJlbW92ZUNhbmRpZGF0ZShjYW5kaWRhdGUpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtNTQ2LDcgKzU0OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTm9PcENsb2JiZXJpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZCkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChE
RkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coImVsaW1pbmF0aW5nIGNhbmRpZGF0ZTogIiwg
Y2FuZGlkYXRlLCAiIGJlY2F1c2UgaXQgaXMgY2xvYmJlcmVkIGJ5ICIsIGJsb2NrLT5hdChub2Rl
SW5kZXgpLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aXZlbHlS
ZW1vdmVDYW5kaWRhdGUoY2FuZGlkYXRlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CkBAIC01NjgsNyArNTcwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gc2luY2UgdGhv
c2UgYXZhaWxhYmlsaXRpZXMgc3BlYWsgb2YgdGhlIHN0YWNrIGJlZm9yZSB0aGUgb3B0aW1pemlu
ZyBjb21waWxlciBzdGFjayBmcmFtZSBpcwogICAgICAgICAvLyB0b3JuIGRvd24uCiAKLSAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNl
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJBZnRlciBpbnRlcmZlcmVu
Y2UgYW5hbHlzaXM6ICIsIGxpc3REdW1wKG1fY2FuZGlkYXRlcyksICJcbiIpOwogICAgIH0KICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
aW5kZXggMWI1ZDdhZWViODI3MWExYTdmNzQyMjIyMjZiZGE3ZDVhNTcyMGUwOC4uZTE0NDcwN2Fl
OWI2NmFiYmVjOWYxNmNlMGVhMmE3ZjAxNGVkZTcwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTcwLDIyICs3MCwxOCBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKLU5PX1JFVFVSTl9E
VUVfVE9fQ1JBU0ggTkVWRVJfSU5MSU5FIHZvaWQgY3Jhc2goKQotewotICAgIENSQVNIKCk7Ci19
Ci0KLSN1bmRlZiBSRUxFQVNFX0FTU0VSVAotI2RlZmluZSBSRUxFQVNFX0FTU0VSVChhc3NlcnRp
b24pIGRvIHsgXAorI2RlZmluZSBQQVJTRVJfQVNTRVJUKGFzc2VydGlvbiwgLi4uKSBkbyB7ICAg
ICAgICAgIFwKICAgICBpZiAoVU5MSUtFTFkoIShhc3NlcnRpb24pKSkgeyBcCiAgICAgICAgIFdU
RlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoX19GSUxFX18sIF9fTElORV9fLCBXVEZfUFJFVFRZX0ZV
TkNUSU9OLCAjYXNzZXJ0aW9uKTsgXAotICAgICAgICBjcmFzaCgpOyBcCisgICAgICAgIENSQVNI
X1dJVEhfSU5GTyhfX1ZBX0FSR1NfXyk7IFwKICAgICB9IFwKIH0gd2hpbGUgKDApCiAKIH0gLy8g
YW5vbnltb3VzIG5hbWVzcGFjZQogCituYW1lc3BhY2UgREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5h
bCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIENvbnN0
YW50QnVmZmVyS2V5IHsKIHB1YmxpYzoKQEAgLTEyMDcsNyArMTIwMyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgICAgICAgICAsIG1fc2V0TW9kZShzZXRN
b2RlKQogICAgICAgICB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChvcGVyYW5kLmlzVmFs
aWQoKSk7CisgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKG9wZXJhbmQuaXNWYWxpZCgpKTsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgTm9kZSogZXhlY3V0ZShCeXRlQ29kZVBhcnNlciog
cGFyc2VyKQpAQCAtMTQzMCwxOCArMTQyNiwxOCBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6
aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50LCBJbmxpbmVDYWxsRnJhbWU6Ogog
ewogICAgIENhbGxNb2RlIGNhbGxNb2RlID0gSW5saW5lQ2FsbEZyYW1lOjpjYWxsTW9kZUZvcihr
aW5kKTsKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IHNw
ZWNpYWxpemF0aW9uS2luZEZvcihjYWxsTW9kZSk7Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYg
KERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkNv
bnNpZGVyaW5nIGlubGluaW5nICIsIGNhbGxlZSwgIiBpbnRvICIsIGN1cnJlbnRDb2RlT3JpZ2lu
KCksICJcbiIpOwogICAgIAogICAgIGlmIChtX2hhc0RlYnVnZ2VyRW5hYmxlZCkgewotICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZSBkZWJ1
Z2dlciBpcyBpbiB1c2UuXG4iKTsKICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KIAog
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS5mdW5jdGlvbkV4ZWN1
dGFibGUoKTsKICAgICBpZiAoIWV4ZWN1dGFibGUpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGVyZSBpcyBubyBmdW5jdGlvbiBleGVj
dXRhYmxlLlxuIik7CiAgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CkBAIC0xNDU1LDE0
ICsxNDUxLDE0IEBAIHVuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZh
cmlhbnQgY2FsbGVlLCBpbnQsIElubGluZUNhbGxGcmFtZTo6CiAgICAgLy8gaXQncyBhIHJhcmUg
Y2FzZSBiZWNhdXNlIHdlIGV4cGVjdCB0aGF0IGFueSBob3QgY2FsbGVlcyB3b3VsZCBoYXZlIGFs
cmVhZHkgYmVlbiBjb21waWxlZC4KICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFi
bGUtPmJhc2VsaW5lQ29kZUJsb2NrRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAgaWYgKCFj
b2RlQmxvY2spIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdCeXRlQ29k
ZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxp
bmcgYmVjYXVzZSBubyBjb2RlIGJsb2NrIGF2YWlsYWJsZS5cbiIpOwogICAgICAgICByZXR1cm4g
VUlOVF9NQVg7CiAgICAgfQogCiAgICAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbCA9
IGlubGluZUZ1bmN0aW9uRm9yQ2FwYWJpbGl0eUxldmVsKAogICAgICAgICBjb2RlQmxvY2ssIHNw
ZWNpYWxpemF0aW9uS2luZCwgY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSk7Ci0gICAgaWYgKHZlcmJv
c2UpIHsKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkgewogICAg
ICAgICBkYXRhTG9nKCIgICAgQ2FsbCBtb2RlOiAiLCBjYWxsTW9kZSwgIlxuIik7CiAgICAgICAg
IGRhdGFMb2coIiAgICBJcyBjbG9zdXJlIGNhbGw6ICIsIGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCks
ICJcbiIpOwogICAgICAgICBkYXRhTG9nKCIgICAgQ2FwYWJpbGl0eSBsZXZlbDogIiwgY2FwYWJp
bGl0eUxldmVsLCAiXG4iKTsKQEAgLTE0NzIsNyArMTQ2OCw3IEBAIHVuc2lnbmVkIEJ5dGVDb2Rl
UGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQsIElubGluZUNhbGxG
cmFtZTo6CiAgICAgICAgIGRhdGFMb2coIiAgICBJcyBpbmxpbmluZyBjYW5kaWRhdGU6ICIsIGNv
ZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPmlzSW5saW5pbmdDYW5kaWRhdGUoKSwg
IlxuIik7CiAgICAgfQogICAgIGlmICghY2FuSW5saW5lKGNhcGFiaWxpdHlMZXZlbCkpIHsKLSAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGUg
ZnVuY3Rpb24gaXMgbm90IGlubGluZWFibGUuXG4iKTsKICAgICAgICAgcmV0dXJuIFVJTlRfTUFY
OwogICAgIH0KQEAgLTE0ODIsNyArMTQ3OCw3IEBAIHVuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjpp
bmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQsIElubGluZUNhbGxGcmFtZTo6CiAg
ICAgLy8gcHVycG9zZSBvZiB1bnNldHRpbmcgU0FCSS4KICAgICBpZiAoIWlzU21hbGxFbm91Z2hU
b0lubGluZUNvZGVJbnRvKG1fY29kZUJsb2NrKSkgewogICAgICAgICBjb2RlQmxvY2stPm1fc2hv
dWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRh
dGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlIGNhbGxlciBpcyB0b28gbGFyZ2UuXG4iKTsK
ICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KQEAgLTE1MDYsNyArMTUwMiw3IEBAIHVu
c2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBp
bnQsIElubGluZUNhbGxGcmFtZTo6CiAgICAgZm9yIChJbmxpbmVTdGFja0VudHJ5KiBlbnRyeSA9
IG1faW5saW5lU3RhY2tUb3A7IGVudHJ5OyBlbnRyeSA9IGVudHJ5LT5tX2NhbGxlcikgewogICAg
ICAgICArK2RlcHRoOwogICAgICAgICBpZiAoZGVwdGggPj0gT3B0aW9uczo6bWF4aW11bUlubGlu
aW5nRGVwdGgoKSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAo
REZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIGRlcHRoIGV4Y2VlZGVkLlxuIik7CiAgICAgICAgICAg
ICByZXR1cm4gVUlOVF9NQVg7CiAgICAgICAgIH0KQEAgLTE1MTQsMTQgKzE1MTAsMTQgQEAgdW5z
aWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGlu
dCwgSW5saW5lQ2FsbEZyYW1lOjoKICAgICAgICAgaWYgKGVudHJ5LT5leGVjdXRhYmxlKCkgPT0g
ZXhlY3V0YWJsZSkgewogICAgICAgICAgICAgKytyZWN1cnNpb247CiAgICAgICAgICAgICBpZiAo
cmVjdXJzaW9uID49IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ1JlY3Vyc2lvbigpKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR0J5dGVDb2Rl
UGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICBGYWlsaW5nIGJlY2F1c2UgcmVjdXJzaW9uIGRldGVjdGVkLlxuIik7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIFVJTlRfTUFYOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAg
IAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCIgICAgSW5saW5pbmcgc2hvdWxkIGJlIHBvc3NpYmxl
LlxuIik7CiAgICAgCiAgICAgLy8gSXQgbWlnaHQgYmUgcG9zc2libGUgdG8gaW5saW5lLgpAQCAt
MTYxOCwxMSArMTYxNCwxMSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUq
IGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcgogICAgIGlubGluZVZh
cmlhYmxlRGF0YS5hcmd1bWVudFBvc2l0aW9uU3RhcnQgPSBhcmd1bWVudFBvc2l0aW9uU3RhcnQ7
CiAgICAgaW5saW5lVmFyaWFibGVEYXRhLmNhbGxlZVZhcmlhYmxlID0gMDsKICAgICAKLSAgICBS
RUxFQVNFX0FTU0VSVCgKKyAgICBQQVJTRVJfQVNTRVJUKAogICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX2lubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbAogICAgICAgICA9PSBjYWxsZWUu
aXNDbG9zdXJlQ2FsbCgpKTsKICAgICBpZiAoY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSkgewotICAg
ICAgICBSRUxFQVNFX0FTU0VSVChjYWxsZWVWYXJpYWJsZSk7CisgICAgICAgIFBBUlNFUl9BU1NF
UlQoY2FsbGVlVmFyaWFibGUpOwogICAgICAgICBpbmxpbmVWYXJpYWJsZURhdGEuY2FsbGVlVmFy
aWFibGUgPSBjYWxsZWVWYXJpYWJsZTsKICAgICB9CiAgICAgCkBAIC0xNjY5LDcgKzE2NjUsNyBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBp
bnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcgogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAg
ICAgUmVwdXJwb3NpbmcgbGFzdCBibG9jayBmcm9tICIsIGxhc3RCbG9jay0+Ynl0ZWNvZGVCZWdp
biwgIiB0byAiLCBtX2N1cnJlbnRJbmRleCwgIlxuIik7CiAgICAgICAgICAgICBsYXN0QmxvY2st
PmJ5dGVjb2RlQmVnaW4gPSBtX2N1cnJlbnRJbmRleDsKICAgICAgICAgICAgIGlmIChjYWxsZXJM
aW5rYWJpbGl0eSA9PSBDYWxsZXJEb2VzTm9ybWFsTGlua2luZykgewotICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJBZGRpbmcgdW5saW5r
ZWQgYmxvY2sgIiwgUmF3UG9pbnRlcihtX2dyYXBoLmxhc3RCbG9jaygpKSwgIiAob25lIHJldHVy
bilcbiIpOwogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX3Vu
bGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKG1fZ3JhcGgubGFzdEJsb2NrKCkpKTsK
ICAgICAgICAgICAgIH0KQEAgLTE2OTksMTQgKzE2OTUsMTQgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENh
bGxWYXIKICAgICAgICAgQVNTRVJUKCFub2RlLT50YXJnZXRCbG9jaygpKTsKICAgICAgICAgbm9k
ZS0+dGFyZ2V0QmxvY2soKSA9IGJsb2NrLnB0cigpOwogICAgICAgICBpbmxpbmVTdGFja0VudHJ5
Lm1fdW5saW5rZWRCbG9ja3NbaV0ubV9uZWVkc0Vhcmx5UmV0dXJuTGlua2luZyA9IGZhbHNlOwot
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIo
YmxvY2tUb0xpbmspLCAiIGFzIGxpbmtlZCAoanVtcHMgdG8gcmV0dXJuKVxuIik7CiAgICAgICAg
IGJsb2NrVG9MaW5rLT5kaWRMaW5rKCk7CiAgICAgfQogICAgIAogICAgIG1fY3VycmVudEJsb2Nr
ID0gYmxvY2sucHRyKCk7CiAgICAgQVNTRVJUKG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5t
X2Jsb2NrTGlua2luZ1RhcmdldHMuaXNFbXB0eSgpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fY2Fs
bGVyLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMubGFzdCgpLT5ieXRlY29kZUJlZ2luIDwgbmV4dE9m
ZnNldCk7Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkFkZGluZyB1bmxpbmtlZCBibG9jayAiLCBS
YXdQb2ludGVyKGJsb2NrLnB0cigpKSwgIiAobWFueSByZXR1cm5zKVxuIik7CiAgICAgaWYgKGNh
bGxlckxpbmthYmlsaXR5ID09IENhbGxlckRvZXNOb3JtYWxMaW5raW5nKSB7CiAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtl
ZEJsb2NrKGJsb2NrLnB0cigpKSk7CkBAIC0xNzQyLDcgKzE3MzgsNyBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVz
dWx0T3BlcmFuZAogICAgIGlmICghaW5saW5pbmdCYWxhbmNlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgICBDb25zaWRlcmluZyBjYWxsZWUg
IiwgY2FsbGVlLCAiXG4iKTsKICAgICAKICAgICAvLyBJbnRyaW5zaWNzIGFuZCBpbnRlcm5hbCBm
dW5jdGlvbnMgY2FuIG9ubHkgYmUgaW5saW5lZCBpZiB3ZSdyZSBub3QgZG9pbmcgdmFyYXJncy4g
VGhpcyBpcyBiZWNhdXNlCkBAIC0xNzYyLDQwICsxNzU4LDQwIEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmF0dGVtcHRUb0lubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRP
cGVyYW5kCiAgICAgCiAgICAgICAgIGlmIChJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiA9IGNh
bGxlZS5pbnRlcm5hbEZ1bmN0aW9uKCkpIHsKICAgICAgICAgICAgIGlmIChoYW5kbGVDb25zdGFu
dEludGVybmFsRnVuY3Rpb24oY2FsbFRhcmdldE5vZGUsIHJlc3VsdE9wZXJhbmQsIGZ1bmN0aW9u
LCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0
aW9uS2luZCwgcHJlZGljdGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7Ci0gICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKKyAgICAgICAgICAg
ICAgICBQQVJTRVJfQVNTRVJUKGRpZEluc2VydENoZWNrcyk7CiAgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7CiAgICAgICAgICAgICAgICAgZW1pdEFy
Z3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KTsKICAgICAgICAgICAgICAgICBpbmxpbmluZ0JhbGFuY2UtLTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFk
aWRJbnNlcnRDaGVja3MpOworICAgICAgICAgICAgUEFSU0VSX0FTU0VSVCghZGlkSW5zZXJ0Q2hl
Y2tzKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIAogICAgICAg
ICBJbnRyaW5zaWMgaW50cmluc2ljID0gY2FsbGVlLmludHJpbnNpY0ZvcihzcGVjaWFsaXphdGlv
bktpbmQpOwogICAgICAgICBpZiAoaW50cmluc2ljICE9IE5vSW50cmluc2ljKSB7CiAgICAgICAg
ICAgICBpZiAoaGFuZGxlSW50cmluc2ljQ2FsbChjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFu
ZCwgaW50cmluc2ljLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IHByZWRpY3Rpb24sIGluc2VydENoZWNrc1dpdGhBY2NvdW50aW5nKSkgewotICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGRpZEluc2VydENoZWNrcyk7CisgICAgICAgICAgICAgICAgUEFS
U0VSX0FTU0VSVChkaWRJbnNlcnRDaGVja3MpOwogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
UGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOwogICAgICAgICAgICAgICAgIGVtaXRBcmd1bWVudFBo
YW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAg
ICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNlLS07CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFkaWRJbnNl
cnRDaGVja3MpOworICAgICAgICAgICAgUEFSU0VSX0FTU0VSVCghZGlkSW5zZXJ0Q2hlY2tzKTsK
ICAgICAgICAgICAgIC8vIFdlIG1pZ2h0IHN0aWxsIHRyeSB0byBpbmxpbmUgdGhlIEludHJpbnNp
YyBiZWNhdXNlIGl0IG1pZ2h0IGJlIGEgYnVpbHRpbiBKUyBmdW5jdGlvbi4KICAgICAgICAgfQog
CiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VET01KSVQoKSkgewogICAgICAgICAgICAgaWYgKGNv
bnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUgPSBjYWxsZWUuc2lnbmF0dXJlRm9yKHNw
ZWNpYWxpemF0aW9uS2luZCkpIHsKICAgICAgICAgICAgICAgICBpZiAoaGFuZGxlRE9NSklUQ2Fs
bChjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFuZCwgc2lnbmF0dXJlLCByZWdpc3Rlck9mZnNl
dCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHByZWRpY3Rpb24sIGluc2VydENoZWNrc1dp
dGhBY2NvdW50aW5nKSkgewotICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChkaWRJ
bnNlcnRDaGVja3MpOworICAgICAgICAgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKGRpZEluc2Vy
dENoZWNrcyk7CiAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRh
cmdldE5vZGUpOwogICAgICAgICAgICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdp
c3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgICAgICAgICAgICAg
ICAgICBpbmxpbmluZ0JhbGFuY2UtLTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFkaWRJ
bnNlcnRDaGVja3MpOworICAgICAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoIWRpZEluc2VydENo
ZWNrcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xODE3LDIxICsxODEz
LDIxIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgIFZpcnR1YWxS
ZWdpc3RlciBhcmd1bWVudHNBcmd1bWVudCwgdW5zaWduZWQgYXJndW1lbnRzT2Zmc2V0LCBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCiAgICAgdW5zaWduZWQgbmV4dE9mZnNldCwgTm9k
ZVR5cGUgY2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCwgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbikKIHsKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChERkdCeXRlQ29kZVBh
cnNlckludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2coIkhhbmRsaW5nIGlubGlu
aW5nLi4uXG4iKTsKICAgICAgICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1cnJlbnRDb2RlT3JpZ2lu
KCksICJcbiIpOwogICAgIH0KICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0
aW9uS2luZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOwog
ICAgIAogICAgIGlmICghY2FsbExpbmtTdGF0dXMuc2l6ZSgpKSB7Ci0gICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgIGRhdGFMb2coIkJhaWxpbmcgaW5saW5pbmcuXG4iKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KICAgICAKICAgICBpZiAoSW5saW5lQ2FsbEZyYW1lOjppc1ZhcmFyZ3Mo
a2luZCkKICAgICAgICAgJiYgY2FsbExpbmtTdGF0dXMubWF4TnVtQXJndW1lbnRzKCkgPiBPcHRp
b25zOjptYXhpbXVtVmFyYXJnc0ZvcklubGluaW5nKCkpIHsKLSAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgZGF0YUxvZygiQmFpbGluZyBpbmxpbmluZyBiZWNhdXNlIG9mIHZhcmFyZ3MuXG4iKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTE5NTAsNyArMTk0Niw3IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSk7Ci0gICAgICAgIGlmICh2ZXJib3NlKSB7
CisgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKSB7CiAgICAg
ICAgICAgICBkYXRhTG9nKCJEb25lIGlubGluaW5nIChzaW1wbGUpLlxuIik7CiAgICAgICAgICAg
ICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgICAg
ICAgICBkYXRhTG9nKCJSZXN1bHQ6ICIsIHJlc3VsdCwgIlxuIik7CkBAIC0xOTY2LDcgKzE5NjIs
NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICAvLyBhbHNvLgog
ICAgIGlmICghaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkgfHwgIU9wdGlvbnM6OnVzZVBvbHlt
b3JwaGljQ2FsbElubGluaW5nKCkKICAgICAgICAgfHwgSW5saW5lQ2FsbEZyYW1lOjppc1ZhcmFy
Z3Moa2luZCkpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR0J5dGVD
b2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkJhaWxp
bmcgaW5saW5pbmcgKGhhcmQpLlxuIik7CiAgICAgICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwg
Y3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgICAgIH0KQEAgLTE5NzgsNyArMTk3NCw3
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgIC8vIGl0IGhhcyBu
byBpZGVhLgogICAgIGlmICghT3B0aW9uczo6dXNlUG9seW1vcnBoaWNDYWxsSW5saW5pbmdGb3JO
b25TdHViU3RhdHVzKCkKICAgICAgICAgJiYgIWNhbGxMaW5rU3RhdHVzLmlzQmFzZWRPblN0dWIo
KSkgewotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJz
ZXJJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiQmFpbGluZyBpbmxp
bmluZyAobm9uLXN0dWIgcG9seW1vcnBoaXNtKS5cbiIpOwogICAgICAgICAgICAgZGF0YUxvZygi
U3RhY2s6ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOwogICAgICAgICB9CkBAIC0yMDA2
LDE0ICsyMDAyLDE0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAg
ICAgICAvLyB3aGVyZSBpdCB3b3VsZCBiZSBiZW5lZmljaWFsLiBJdCBtaWdodCBiZSBiZXN0IHRv
IGhhbmRsZSB0aGVzZSBjYXNlcyBhcyBpZiBhbGwgY2FsbHMgd2VyZQogICAgICAgICAvLyBjbG9z
dXJlIGNhbGxzLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTM2MDIwCi0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdCeXRl
Q29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJCYWls
aW5nIGlubGluaW5nIChtaXgpLlxuIik7CiAgICAgICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwg
Y3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICAKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChERkdCeXRlQ29k
ZVBhcnNlckludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2coIkRvaW5nIGhhcmQg
aW5saW5pbmcuLi5cbiIpOwogICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVP
cmlnaW4oKSwgIlxuIik7CiAgICAgfQpAQCAtMjAyNCwxMSArMjAyMCwxMSBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICAvLyBzdG9yZSB0aGUgY2FsbGVlIHNvIHRo
YXQgaXQgd2lsbCBiZSBhY2Nlc3NpYmxlIHRvIGFsbCBvZiB0aGUgYmxvY2tzIHdlJ3JlIGFib3V0
IHRvIGNyZWF0ZS4gV2UKICAgICAvLyBnZXQgYXdheSB3aXRoIGRvaW5nIGFuIGltbWVkaWF0ZS1z
ZXQgaGVyZSBiZWNhdXNlIHdlIHdvdWxkbid0IGhhdmUgcGVyZm9ybWVkIGFueSBzaWRlIGVmZmVj
dHMKICAgICAvLyB5ZXQuCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0J5dGVDb2RlUGFy
c2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIlJlZ2lzdGVyIG9mZnNldDog
IiwgcmVnaXN0ZXJPZmZzZXQpOwogICAgIFZpcnR1YWxSZWdpc3RlciBjYWxsZWVSZWcocmVnaXN0
ZXJPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUpOwogICAgIGNhbGxlZVJlZyA9IG1faW5s
aW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChjYWxsZWVSZWcpOwotICAgIGlmICh2ZXJib3NlKQor
ICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRh
TG9nKCJDYWxsZWUgaXMgZ29pbmcgdG8gYmUgIiwgY2FsbGVlUmVnLCAiXG4iKTsKICAgICBzZXRE
aXJlY3QoY2FsbGVlUmVnLCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRlU2V0V2l0aEZsdXNoKTsK
IApAQCAtMjA0Miw3ICsyMDM4LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5p
bmcoCiAgICAgYWRkVG9HcmFwaChTd2l0Y2gsIE9wSW5mbygmZGF0YSksIHRoaW5nVG9Td2l0Y2hP
bik7CiAgICAgCiAgICAgQmFzaWNCbG9jayogb3JpZ2luQmxvY2sgPSBtX2N1cnJlbnRCbG9jazsK
LSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgZGF0YUxvZygiTWFya2luZyAiLCBSYXdQb2ludGVyKG9yaWdpbkJsb2Nr
KSwgIiBhcyBsaW5rZWQgKG9yaWdpbiBvZiBwb2x5IGlubGluZSlcbiIpOwogICAgIG9yaWdpbkJs
b2NrLT5kaWRMaW5rKCk7CiAgICAgY2FuY2VsTGlua2luZ0ZvckJsb2NrKG1faW5saW5lU3RhY2tU
b3AsIG9yaWdpbkJsb2NrKTsKQEAgLTIwNTQsNyArMjA1MCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUlubGluaW5nKAogICAgIC8vIFdlIG1heSBmb3JjZSB0aGlzIHRydWUgaWYgd2Ug
Z2l2ZSB1cCBvbiBpbmxpbmluZyBhbnkgb2YgdGhlIGVkZ2VzLgogICAgIGJvb2wgY291bGRUYWtl
U2xvd1BhdGggPSBjYWxsTGlua1N0YXR1cy5jb3VsZFRha2VTbG93UGF0aCgpOwogICAgIAotICAg
IGlmICh2ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICBkYXRhTG9nKCJBYm91dCB0byBsb29wIG92ZXIgZnVuY3Rpb25zIGF0ICIsIGN1
cnJlbnRDb2RlT3JpZ2luKCksICIuXG4iKTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgY2FsbExpbmtTdGF0dXMuc2l6ZSgpOyArK2kpIHsKQEAgLTIxMDEsMTEgKzIwOTcsMTEg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgICAgICAgICBhZGRU
b0dyYXBoKEp1bXApOwogICAgICAgICAgICAgbGFuZGluZ0Jsb2Nrcy5hcHBlbmQobV9jdXJyZW50
QmxvY2spOwogICAgICAgICB9Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZH
Qnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIk1h
cmtpbmcgIiwgUmF3UG9pbnRlcihtX2N1cnJlbnRCbG9jayksICIgYXMgbGlua2VkICh0YWlsIG9m
IHBvbHkgaW5saW5lZSlcbiIpOwogICAgICAgICBtX2N1cnJlbnRCbG9jay0+ZGlkTGluaygpOwog
Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkZpbmlzaGVkIGlubGluaW5nICIs
IGNhbGxMaW5rU3RhdHVzW2ldLCAiIGF0ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICIuXG4iKTsK
ICAgICB9CiAgICAgCkBAIC0yMTE1LDcgKzIxMTEsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVJbmxpbmluZygKICAgICBtX2V4aXRPSyA9IHRydWU7CiAgICAgZGF0YS5mYWxsVGhyb3Vn
aCA9IEJyYW5jaFRhcmdldChzbG93UGF0aEJsb2NrLnB0cigpKTsKICAgICBtX2dyYXBoLmFwcGVu
ZEJsb2NrKHNsb3dQYXRoQmxvY2suY29weVJlZigpKTsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBp
ZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygi
TWFya2luZyAiLCBSYXdQb2ludGVyKHNsb3dQYXRoQmxvY2sucHRyKCkpLCAiIGFzIGxpbmtlZCAo
c2xvdyBwYXRoIGJsb2NrKVxuIik7CiAgICAgc2xvd1BhdGhCbG9jay0+ZGlkTGluaygpOwogICAg
IHByZXBhcmVUb1BhcnNlQmxvY2soKTsKQEAgLTIxNDYsNyArMjE0Miw3IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgIFJlZjxCYXNpY0Jsb2NrPiBjb250aW51YXRp
b25CbG9jayA9IGFkb3B0UmVmKAogICAgICAgICAqbmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1f
bnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgMSkpOwogICAgIG1fZ3JhcGguYXBwZW5kQmxvY2so
Y29udGludWF0aW9uQmxvY2suY29weVJlZigpKTsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAo
REZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQWRk
aW5nIHVubGlua2VkIGJsb2NrICIsIFJhd1BvaW50ZXIoY29udGludWF0aW9uQmxvY2sucHRyKCkp
LCAiIChjb250aW51YXRpb24pXG4iKTsKICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2Vk
QmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGNvbnRpbnVhdGlvbkJsb2NrLnB0cigpKSk7CiAg
ICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOwpAQCAtMjE1OCw3ICsyMTU0LDcgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgbV9jdXJyZW50SW5kZXggPSBvbGRPZmZz
ZXQ7CiAgICAgbV9leGl0T0sgPSB0cnVlOwogICAgIAotICAgIGlmICh2ZXJib3NlKSB7CisgICAg
aWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZGF0YUxv
ZygiRG9uZSBpbmxpbmluZyAoaGFyZCkuXG4iKTsKICAgICAgICAgZGF0YUxvZygiU3RhY2s6ICIs
IGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOwogICAgIH0KQEAgLTM0OTksMTQgKzM0OTUsMTQg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6bmVlZHNEeW5hbWljTG9va3VwKFJlc29sdmVUeXBlIHR5
cGUsIE9wY29kZUlEIG9wY29kZSkKIAogR2V0QnlPZmZzZXRNZXRob2QgQnl0ZUNvZGVQYXJzZXI6
OnBsYW5Mb2FkKGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBjb25kaXRpb24pCiB7Ci0g
ICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgIGRhdGFMb2coIlBsYW5uaW5nIGEgbG9hZDogIiwgY29uZGl0aW9uLCAiXG4i
KTsKICAgICAKICAgICAvLyBXZSBtaWdodCBwcm9tb3RlIHRoaXMgdG8gRXF1aXZhbGVuY2UsIGFu
ZCBhIGxhdGVyIERGRyBwYXNzIG1pZ2h0IGFsc28gZG8gc3VjaCBwcm9tb3Rpb24KICAgICAvLyBl
dmVuIGlmIHdlIGZhaWwsIGJ1dCBmb3Igc2ltcGxpY2l0eSB0aGlzIGNhbm5vdCBiZSBhc2tlZCB0
byBsb2FkIGFuIGVxdWl2YWxlbmNlIGNvbmRpdGlvbi4KICAgICAvLyBOb25lIG9mIHRoZSBjbGll
bnRzIG9mIHRoaXMgbWV0aG9kIHdpbGwgcmVxdWVzdCBhIGxvYWQgb2YgYW4gRXF1aXZhbGVuY2Ug
Y29uZGl0aW9uIGFueXdheSwKICAgICAvLyBhbmQgc3VwcG9ydGluZyBpdCB3b3VsZCBjb21wbGlj
YXRlIHRoZSBoZXVyaXN0aWNzIGJlbG93LgotICAgIFJFTEVBU0VfQVNTRVJUKGNvbmRpdGlvbi5r
aW5kKCkgPT0gUHJvcGVydHlDb25kaXRpb246OlByZXNlbmNlKTsKKyAgICBQQVJTRVJfQVNTRVJU
KGNvbmRpdGlvbi5raW5kKCkgPT0gUHJvcGVydHlDb25kaXRpb246OlByZXNlbmNlKTsKICAgICAK
ICAgICAvLyBIZXJlJ3MgdGhlIHJhbmtpbmcgb2YgaG93IHRvIGhhbmRsZSB0aGlzLCBmcm9tIG1v
c3QgcHJlZmVycmVkIHRvIGxlYXN0IHByZWZlcnJlZDoKICAgICAvLwpAQCAtMzYwOSwxNCArMzYw
NSwxNCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpjaGVjayhjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYgY29uZGl0aW9uU2V0KQogCiBHZXRCeU9mZnNldE1ldGhvZCBCeXRlQ29kZVBh
cnNlcjo6cGxhbkxvYWQoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlv
blNldCkKIHsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiY29uZGl0aW9uU2V0ID0gIiwgY29uZGl0
aW9uU2V0LCAiXG4iKTsKICAgICAKICAgICBHZXRCeU9mZnNldE1ldGhvZCByZXN1bHQ7CiAgICAg
Zm9yIChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uIDogY29uZGl0aW9u
U2V0KSB7CiAgICAgICAgIHN3aXRjaCAoY29uZGl0aW9uLmtpbmQoKSkgewogICAgICAgICBjYXNl
IFByb3BlcnR5Q29uZGl0aW9uOjpQcmVzZW5jZToKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFyZXN1bHQpOyAvLyBTaG91bGQgb25seSBzZWUgZXhhY3RseSBvbmUgb2YgdGhlc2UuCisgICAg
ICAgICAgICBQQVJTRVJfQVNTRVJUKCFyZXN1bHQpOyAvLyBTaG91bGQgb25seSBzZWUgZXhhY3Rs
eSBvbmUgb2YgdGhlc2UuCiAgICAgICAgICAgICByZXN1bHQgPSBwbGFuTG9hZChjb25kaXRpb24p
OwogICAgICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEdldEJ5
T2Zmc2V0TWV0aG9kKCk7CkBAIC0zNzg2LDcgKzM3ODIsNyBAQCBOb2RlKiBCeXRlQ29kZVBhcnNl
cjo6bG9hZCgKIAogTm9kZSogQnl0ZUNvZGVQYXJzZXI6OnN0b3JlKE5vZGUqIGJhc2UsIHVuc2ln
bmVkIGlkZW50aWZpZXIsIGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB2YWx1
ZSkKIHsKLSAgICBSRUxFQVNFX0FTU0VSVCh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFu
dDo6UmVwbGFjZSk7CisgICAgUEFSU0VSX0FTU0VSVCh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlk
VmFyaWFudDo6UmVwbGFjZSk7CiAKICAgICBjaGVja1ByZXNlbmNlTGlrZShiYXNlLCBtX2dyYXBo
LmlkZW50aWZpZXJzKClbaWRlbnRpZmllcl0sIHZhcmlhbnQub2Zmc2V0KCksIHZhcmlhbnQuc3Ry
dWN0dXJlKCkpOwogICAgIHJldHVybiBoYW5kbGVQdXRCeU9mZnNldChiYXNlLCBpZGVudGlmaWVy
LCB2YXJpYW50Lm9mZnNldCgpLCB2YXJpYW50LnJlcXVpcmVkVHlwZSgpLCB2YWx1ZSk7CkBAIC00
MTg1LDcgKzQxODEsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
IGxpbWl0KQogICAgIC8vIG9wcG9zZWQgdG8gdXNpbmcgYSB2YWx1ZSB3ZSBzZXQgZXhwbGljaXRs
eS4KICAgICBpZiAobV9jdXJyZW50QmxvY2sgPT0gbV9ncmFwaC5ibG9jaygwKSAmJiAhaW5saW5l
Q2FsbEZyYW1lKCkpIHsKICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2dyYXBoLm1fcm9vdFRv
QXJndW1lbnRzLmFkZChtX2N1cnJlbnRCbG9jaywgQXJndW1lbnRzVmVjdG9yKCkpOwotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgICAgIFBBUlNFUl9B
U1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAgICAgICBBcmd1bWVudHNWZWN0b3ImIGVu
dHJ5cG9pbnRBcmd1bWVudHMgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICBl
bnRyeXBvaW50QXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CiAKQEAgLTUyODIsNyAr
NTI3OCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQp
CiAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2F0Y2gpOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9jdXJyZW50QmxvY2stPnNpemUoKSk7Cisg
ICAgICAgICAgICBQQVJTRVJfQVNTRVJUKCFtX2N1cnJlbnRCbG9jay0+c2l6ZSgpKTsKIAogICAg
ICAgICAgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nh
c3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJbnN0cnVjdGlvblszXS51
LnBvaW50ZXIpOwogCkBAIC01MzA3LDggKzUzMDMsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmFu
ZC5pc0xvY2FsKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFByZWRpY3Rpb25zLmFw
cGVuZChwcmVkaWN0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChvcGVyYW5kLmlzQXJndW1lbnQoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2FzdDx1aW50MzJfdD4o
b3BlcmFuZC50b0FyZ3VtZW50KCkpIDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgUEFSU0VSX0FTU0VSVChvcGVyYW5kLmlzQXJndW1lbnQoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQz
Ml90PihvcGVyYW5kLnRvQXJndW1lbnQoKSkgPCBhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWVuQXJndW1lbnRzLmFkZChvcGVyYW5kLnRvQXJndW1l
bnQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudFByZWRpY3Rpb25zW29wZXJh
bmQudG9Bcmd1bWVudCgpXSA9IHByZWRpY3Rpb247CkBAIC01MzE3LDcgKzUzMTMsNyBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogCiAgICAgICAgICAg
ICAgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgbV9udW1Bcmd1bWVudHM7ICsrYXJn
dW1lbnQpCi0gICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzZWVuQXJndW1l
bnRzLmNvbnRhaW5zKGFyZ3VtZW50KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBQQVJTRVJf
QVNTRVJUKHNlZW5Bcmd1bWVudHMuY29udGFpbnMoYXJndW1lbnQpKTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAKQEAgLTUzNTgsNyArNTM1NCw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgubV9yb290VG9Bcmd1bWVudHMuYWRk
KG1fY3VycmVudEJsb2NrLCBBcmd1bWVudHNWZWN0b3IoKSk7Ci0gICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgICAgICAgICAgICAgIFBBUlNF
Ul9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAgICAgICAgICAgICAgIEFyZ3VtZW50
c1ZlY3RvciYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7
CiAgICAgICAgICAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50cy5yZXNpemUobV9udW1Bcmd1bWVu
dHMpOwogCkBAIC01NTAzLDggKzU0OTksOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgY2FzZSBHbG9iYWxMZXhpY2FsVmFyOgog
ICAgICAgICAgICAgY2FzZSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczog
ewogICAgICAgICAgICAgICAgIEpTU2NvcGUqIGNvbnN0YW50U2NvcGUgPSBKU1Njb3BlOjpjb25z
dGFudFNjb3BlRm9yQ29kZUJsb2NrKHJlc29sdmVUeXBlLCBtX2lubGluZVN0YWNrVG9wLT5tX2Nv
ZGVCbG9jayk7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY29uc3RhbnRTY29wZSk7
Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RhdGljX2Nhc3Q8SlNTY29wZSo+KGN1
cnJlbnRJbnN0cnVjdGlvbls2XS51LnBvaW50ZXIpID09IGNvbnN0YW50U2NvcGUpOworICAgICAg
ICAgICAgICAgIFBBUlNFUl9BU1NFUlQoY29uc3RhbnRTY29wZSk7CisgICAgICAgICAgICAgICAg
UEFSU0VSX0FTU0VSVChzdGF0aWNfY2FzdDxKU1Njb3BlKj4oY3VycmVudEluc3RydWN0aW9uWzZd
LnUucG9pbnRlcikgPT0gY29uc3RhbnRTY29wZSk7CiAgICAgICAgICAgICAgICAgc2V0KFZpcnR1
YWxSZWdpc3Rlcihkc3QpLCB3ZWFrSlNDb25zdGFudChjb25zdGFudFNjb3BlKSk7CiAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBnZXQoVmlydHVhbFJlZ2lzdGVyKHNjb3BlKSkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg0NSw3ICs1ODQxLDcgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIC8vIEJh
c2VsaW5lLT5ERkcgT1NSIGp1bXBzIGJldHdlZW4gbG9vcCBoaW50cy4gVGhlIERGRyBhc3N1bWVz
IHRoYXQgQmFzZWxpbmUtPkRGRwogICAgICAgICAgICAgLy8gT1NSIGNhbiBvbmx5IGhhcHBlbiBh
dCBiYXNpYyBibG9jayBib3VuZGFyaWVzLiBBc3NlcnQgdGhhdCB0aGVzZSB0d28gc3RhdGVtZW50
cwogICAgICAgICAgICAgLy8gYXJlIGNvbXBhdGlibGUuCi0gICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChtX2N1cnJlbnRJbmRleCA9PSBibG9ja0JlZ2luKTsKKyAgICAgICAgICAgIFBBUlNFUl9B
U1NFUlQobV9jdXJyZW50SW5kZXggPT0gYmxvY2tCZWdpbik7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIC8vIFdlIG5ldmVyIGRvIE9TUiBpbnRvIGFuIGlubGluZWQgY29kZSBibG9jay4gVGhh
dCBjb3VsZCBub3QgaGFwcGVuLCBzaW5jZSBPU1IKICAgICAgICAgICAgIC8vIGxvb2tzIHVwIHRo
ZSBjb2RlIGJsb2NrIHRoYXQgaXMgdGhlIHJlcGxhY2VtZW50IGZvciB0aGUgYmFzZWxpbmUgSklU
IGNvZGUKQEAgLTYxOTUsNyArNjE5MSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmxpbmtCbG9j
ayhCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPEJhc2ljQmxvY2sqPiYgcG9zc2libGVUCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0
ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiTWFya2luZyAi
LCBSYXdQb2ludGVyKGJsb2NrKSwgIiBhcyBsaW5rZWQgKGFjdHVhbGx5IGRpZCBsaW5raW5nKVxu
Iik7CiAgICAgYmxvY2stPmRpZExpbmsoKTsKIH0KQEAgLTYyMDMsMTAgKzYxOTksMTAgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKEJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8QmFz
aWNCbG9jayo+JiBwb3NzaWJsZVQKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmxpbmtCbG9ja3MoVmVj
dG9yPFVubGlua2VkQmxvY2s+JiB1bmxpbmtlZEJsb2NrcywgVmVjdG9yPEJhc2ljQmxvY2sqPiYg
cG9zc2libGVUYXJnZXRzKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdW5saW5rZWRC
bG9ja3Muc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChE
RkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygi
QXR0ZW1wdGluZyB0byBsaW5rICIsIFJhd1BvaW50ZXIodW5saW5rZWRCbG9ja3NbaV0ubV9ibG9j
ayksICJcbiIpOwogICAgICAgICBpZiAodW5saW5rZWRCbG9ja3NbaV0ubV9uZWVkc05vcm1hbExp
bmtpbmcpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR0J5
dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygi
ICAgIERvZXMgbmVlZCBub3JtYWwgbGlua2luZy5cbiIpOwogICAgICAgICAgICAgbGlua0Jsb2Nr
KHVubGlua2VkQmxvY2tzW2ldLm1fYmxvY2ssIHBvc3NpYmxlVGFyZ2V0cyk7CiAgICAgICAgICAg
ICB1bmxpbmtlZEJsb2Nrc1tpXS5tX25lZWRzTm9ybWFsTGlua2luZyA9IGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAppbmRleCA1N2VjNGE4MGU0YjI5ZDJj
YmQ0OTZlZWFjMzhkMWIyOTM5Yjg2MTczLi5lYmQxYjhlZmVmN2MyNTMwZTI4ZjkyNzE3Y2Y3MGRh
YzI3MGVkM2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcApA
QCAtNDgsNyArNDgsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVz
cGFjZSB7CiAKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIERGR0NTRVBo
YXNlSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBj
bGFzcyBJbXB1cmVEYXRhU2xvdCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1wdXJlRGF0
YVNsb3QpOwpAQCAtNjI3LDcgKzYyOSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIGl0ZXJh
dGUoKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdDU0VQaGFz
ZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiUGVyZm9ybWluZyBpdGVy
YXRpb24uXG4iKTsKICAgICAgICAgCiAgICAgICAgIG1fY2hhbmdlZCA9IGZhbHNlOwpAQCAtNjM4
LDEzICs2NDAsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgbV9pbXB1cmVEYXRhID0gJm1faW1w
dXJlRGF0YU1hcFttX2Jsb2NrXTsKICAgICAgICAgICAgIG1fd3JpdGVzU29GYXIuY2xlYXIoKTsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAo
REZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJQ
cm9jZXNzaW5nIGJsb2NrICIsICptX2Jsb2NrLCAiOlxuIik7CiAKICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgbV9ibG9jay0+c2l6ZSgpOyArK25v
ZGVJbmRleCkgewogICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4ID0gbm9kZUluZGV4OwogICAg
ICAgICAgICAgICAgIG1fbm9kZSA9IG1fYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgTG9va2luZyBhdCBu
b2RlICIsIG1fbm9kZSwgIjpcbiIpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IG1fZ3JhcGgucGVyZm9ybVN1YnN0aXR1dGlvbihtX25vZGUpOwpAQCAtNzA3LDcgKzcwOSw3IEBA
IHB1YmxpYzoKICAgICAgICAgLy8gYSBnbG9iYWwgc2VhcmNoLgogICAgICAgICBMYXp5Tm9kZSBt
YXRjaCA9IG1faW1wdXJlRGF0YS0+YXZhaWxhYmxlQXRUYWlsLmdldChsb2NhdGlvbik7CiAgICAg
ICAgIGlmICghIW1hdGNoKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAg
IGlmIChERkdDU0VQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFM
b2coIiAgICAgIEZvdW5kIGxvY2FsIG1hdGNoOiAiLCBtYXRjaCwgIlxuIik7CiAgICAgICAgICAg
ICByZXR1cm4gbWF0Y2g7CiAgICAgICAgIH0KQEAgLTcxNSw3ICs3MTcsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIC8vIElmIGl0J3Mgbm90IGF2YWlsYWJsZSBhdCB0aGlzIHBvaW50IGluIHRoZSBibG9j
aywgYW5kIGF0IHNvbWUgcHJpb3IgcG9pbnQgaW4gdGhlIGJsb2NrCiAgICAgICAgIC8vIHdlIGhh
dmUgY2xvYmJlcmVkIHRoaXMgaGVhcCBsb2NhdGlvbiwgdGhlbiB0aGVyZSBpcyBubyBwb2ludCBp
biBkb2luZyBhIGdsb2JhbCBzZWFyY2guCiAgICAgICAgIGlmIChtX3dyaXRlc1NvRmFyLm92ZXJs
YXBzKGxvY2F0aW9uLmhlYXAoKSkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiICAgICAgTm90IGxvb2tpbmcgZ2xvYmFsbHkgYmVjYXVzZSBvZiBsb2NhbCBjbG9i
YmVyOiAiLCBtX3dyaXRlc1NvRmFyLCAiXG4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgICAgICB9CkBAIC03NzIsNyArNzc0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgQmFz
aWNCbG9jayogYmxvY2sgPSB3b3JrbGlzdC50YWtlTGFzdCgpOwogICAgICAgICAgICAgc2Vlbkxp
c3QuYXBwZW5kKGJsb2NrKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgICBTZWFyY2hpbmcgaW4gYmxvY2sgIiwgKmJsb2NrLCAiXG4i
KTsKICAgICAgICAgICAgIEltcHVyZUJsb2NrRGF0YSYgZGF0YSA9IG1faW1wdXJlRGF0YU1hcFti
bG9ja107CiAgICAgICAgICAgICAKQEAgLTc4MCwxMiArNzgyLDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIC8vIHRoZXkgY2FtZSAqYWZ0ZXIqIG91ciBwb3NpdGlvbiBpbiB0aGUgYmxvY2suIENs
ZWFybHksIHdoaWxlIG91ciBibG9jayBkb21pbmF0ZXMKICAgICAgICAgICAgIC8vIGl0c2VsZiwg
dGhlIHRoaW5ncyBpbiB0aGUgYmxvY2sgYWZ0ZXIgdXMgZG9uJ3QgZG9taW5hdGUgdXMuCiAgICAg
ICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPnN0cmljdGx5RG9taW5hdGVzKGJs
b2NrLCBtX2Jsb2NrKSkgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAg
ICAgICAgIGlmIChERkdDU0VQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgICAgIEl0IHN0cmljdGx5IGRvbWluYXRlcy5cbiIpOwogICAgICAg
ICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBkYXRhLmRpZFZpc2l0KTsKICAg
ICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgIW1hdGNoKTsKICAgICAg
ICAgICAgICAgICBtYXRjaCA9IGRhdGEuYXZhaWxhYmxlQXRUYWlsLmdldChsb2NhdGlvbik7Ci0g
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR0NTRVBo
YXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAg
ICAgQXZhaWxhYmlsaXR5OiAiLCBtYXRjaCwgIlxuIik7CiAgICAgICAgICAgICAgICAgaWYgKCEh
bWF0Y2gpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgZXhhbWluZSB0aGUgcHJlZGVj
ZXNzb3JzIG9mIGEgbWF0Y2guIEF0IHRoaXMgcG9pbnQgd2UganVzdCB3YW50IHRvCkBAIC03OTUs
MTAgKzc5NywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChE
RkdDU0VQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICAgICAgRGVhbGluZyB3aXRoIHdyaXRlIHNldCAiLCBkYXRhLndyaXRlcywgIlxuIik7CiAgICAg
ICAgICAgICBpZiAoZGF0YS53cml0ZXMub3ZlcmxhcHMobG9jYXRpb24uaGVhcCgpKSkgewotICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChERkdDU0VQaGFz
ZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICAg
IENsb2JiZXJlZC5cbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICAgICAgfQpAQCAtODMwLDE2ICs4MzIsMTYgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgZGVm
KEhlYXBMb2NhdGlvbiBsb2NhdGlvbiwgTGF6eU5vZGUgdmFsdWUpCiAgICAgewotICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgR290IGhlYXAgbG9jYXRpb24gZGVmOiAiLCBsb2NhdGlv
biwgIiAtPiAiLCB2YWx1ZSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICBMYXp5Tm9kZSBtYXRj
aCA9IGZpbmRSZXBsYWNlbWVudChsb2NhdGlvbik7CiAgICAgICAgIAotICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgICBHb3QgbWF0Y2g6ICIsIG1hdGNoLCAiXG4iKTsKICAgICAgICAg
CiAgICAgICAgIGlmICghbWF0Y2gpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiICAgICAgQWRkaW5nIGF0LXRhaWwgbWFwcGluZzogIiwgbG9jYXRpb24sICIgLT4g
IiwgdmFsdWUsICJcbiIpOwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBtX2ltcHVyZURhdGEt
PmF2YWlsYWJsZUF0VGFpbC5hZGQobG9jYXRpb24sIHZhbHVlKTsKICAgICAgICAgICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCAhcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKaW5kZXggYjBjNTViZTk5YTIwNTMx
ODgxZTE0NjJiZTg3MWRlOGEwZGI3MWYyMC4uYjQ5Y2I0Y2Q5NjIzNGE5MjcxY2NhYjgyYzRlNjc4
YmE5M2Q3ODI0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBs
YWNlQWJzdHJhY3RTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJ
blBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKQEAgLTM3LDcgKzM3LDkgQEAKIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogCituYW1lc3BhY2UgREZHSW5QbGFjZUFic3RyYWN0U3RhdGVJ
bnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIEluUGxh
Y2VBYnN0cmFjdFN0YXRlOjpJblBsYWNlQWJzdHJhY3RTdGF0ZShHcmFwaCYgZ3JhcGgpCiAgICAg
OiBtX2dyYXBoKGdyYXBoKQpAQCAtMjc2LDcgKzI3OCw3IEBAIHZvaWQgSW5QbGFjZUFic3RyYWN0
U3RhdGU6Om1lcmdlU3RhdGVBdFRhaWwoQWJzdHJhY3RWYWx1ZSYgZGVzdGluYXRpb24sIEFic3Ry
YWN0CiAKIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKEJhc2ljQmxvY2sqIGZyb20s
IEJhc2ljQmxvY2sqIHRvKQogewotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCIgICBNZXJn
aW5nIGZyb20gIiwgcG9pbnRlckR1bXAoZnJvbSksICIgdG8gIiwgcG9pbnRlckR1bXAodG8pLCAi
XG4iKTsKICAgICBBU1NFUlQoZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mQXJndW1lbnRz
KCkgPT0gdG8tPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpKTsKICAgICBBU1NF
UlQoZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkgPT0gdG8tPnZhcmlhYmxl
c0F0SGVhZC5udW1iZXJPZkxvY2FscygpKTsKQEAgLTMwNyw3ICszMDksNyBAQCBib29sIEluUGxh
Y2VBYnN0cmFjdFN0YXRlOjptZXJnZShCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykK
IAogICAgICAgICBmb3IgKE5vZGVBYnN0cmFjdFZhbHVlUGFpciYgZW50cnkgOiB0by0+c3NhLT52
YWx1ZXNBdEhlYWQpIHsKICAgICAgICAgICAgIE5vZGVGbG93UHJvamVjdGlvbiBub2RlID0gZW50
cnkubm9kZTsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR0lu
UGxhY2VBYnN0cmFjdFN0YXRlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0
YUxvZygiICAgICAgTWVyZ2luZyBmb3IgIiwgbm9kZSwgIjogZnJvbSAiLCBmb3JOb2RlKG5vZGUp
LCAiIHRvICIsIGVudHJ5LnZhbHVlLCAiXG4iKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgICAg
ICB1bnNpZ25lZCB2YWx1ZUNvdW50SW5Gcm9tQmxvY2sgPSAwOwpAQCAtMzIyLDcgKzMyNCw3IEBA
IGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKEJhc2ljQmxvY2sqIGZyb20sIEJhc2lj
QmxvY2sqIHRvKQogCiAgICAgICAgICAgICBjaGFuZ2VkIHw9IGVudHJ5LnZhbHVlLm1lcmdlKGZv
ck5vZGUobm9kZSkpOwogCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlm
IChERkdJblBsYWNlQWJzdHJhY3RTdGF0ZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2coIiAgICAgICAgIFJlc3VsdDogIiwgZW50cnkudmFsdWUsICJcbiIpOwogICAg
ICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMzM2LDcgKzMzOCw3IEBAIGJvb2wgSW5QbGFjZUFi
c3RyYWN0U3RhdGU6Om1lcmdlKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKQogICAg
IGlmICghdG8tPmNmYUhhc1Zpc2l0ZWQpCiAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgIAot
ICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChERkdJblBsYWNlQWJzdHJhY3RTdGF0ZUludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCIgICAgICBXaWxsIHJldmlzaXQ6ICIsIGNoYW5n
ZWQsICJcbiIpOwogICAgIHRvLT5jZmFTaG91bGRSZXZpc2l0IHw9IGNoYW5nZWQ7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0NvbWJp
bmluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlckNoZWNr
Q29tYmluaW5nUGhhc2UuY3BwCmluZGV4IDVkMWNiYzc2YzRlZTI1MmEzMzcyOWZiZTE4NWQ5OTJi
MmFmZWVjZGIuLjk4ZTBmNmZkZjI4ODE0N2E4MWU5Y2I3ZjlmMWI4OTk2NTZmZDkxZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlckNoZWNrQ29tYmluaW5n
UGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlckNoZWNr
Q29tYmluaW5nUGhhc2UuY3BwCkBAIC00MSw3ICs0MSw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAorbmFtZXNwYWNlIERGR0ludGVnZXJDaGVja0Nv
bWJpbmluZ1BoYXNlSW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNl
OworfQogCiBlbnVtIFJhbmdlS2luZCB7CiAgICAgSW52YWxpZFJhbmdlS2luZCwKQEAgLTIwMywx
MyArMjA1LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBmb3IgKGF1dG8qIG5vZGUg
OiAqYmxvY2spIHsKICAgICAgICAgICAgIFJhbmdlS2V5QW5kQWRkZW5kIGRhdGEgPSByYW5nZUtl
eUFuZEFkZGVuZChub2RlKTsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAg
aWYgKERGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiRm9yICIsIG5vZGUsICI6ICIsIGRhdGEsICJcbiIpOwogICAg
ICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBSYW5nZSYgcmFuZ2UgPSBtX21hcFtkYXRhLm1fa2V5XTsKLSAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR0ludGVnZXJDaGVja0NvbWJp
bmluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAg
IFJhbmdlOiAiLCByYW5nZSwgIlxuIik7CiAgICAgICAgICAgICBpZiAocmFuZ2UubV9jb3VudCkg
ewogICAgICAgICAgICAgICAgIGlmIChkYXRhLm1fYWRkZW5kID4gcmFuZ2UubV9tYXhCb3VuZCkg
ewpAQCAtMjI2LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmFuZ2UubV9t
YXhPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICByYW5nZS5tX2NvdW50Kys7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgIGlmIChERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBOZXcgcmFuZ2U6ICIsIHJhbmdlLCAiXG4iKTsK
ICAgICAgICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKaW5kZXggMDdi
NmFjMzQ4MmZkMGU3ZjMyZWY4NGVmODJiMzExNTEyNzdiZDIxMi4uNGEzODMxZWIxNjBkYzQ5NzY0
ZTg3MzkwZTg4YWY1YWE5NWU4NmU4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKQEAg
LTQyLDcgKzQyLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3Bh
Y2UgewogCi1jb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBERkdJbnRlZ2Vy
UmFuZ2VPcHRpbWl6YXRpb25QaGFzZUludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJv
c2UgPSBmYWxzZTsKK30KIGNvbnN0IHVuc2lnbmVkIGdpdmVVcFRocmVzaG9sZCA9IDUwOwogCiBp
bnQ2NF90IGNsYW1wZWRTdW1JbXBsKCkgeyByZXR1cm4gMDsgfQpAQCAtMTAxOSw3ICsxMDIxLDcg
QEAgcHVibGljOgogICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShtX2dyYXBoLmJs
b2NrKDApKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAg
ICAgICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJv
c2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkdyYXBoIGJlZm9yZSBpbnRlZ2VyIHJhbmdlIG9w
dGltaXphdGlvbjpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0K
QEAgLTExMTAsNyArMTExMiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBtX3JlbGF0aW9u
c2hpcHMgPSBtX3JlbGF0aW9uc2hpcHNBdEhlYWRbYmxvY2tdOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgZm9yIChhdXRvKiBub2RlIDogKmJsb2NrKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdl
T3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkFuYWx5c2lzOiBhdCAiLCBub2RlLCAiOiAiLCBsaXN0RHVtcChzb3J0ZWRS
ZWxhdGlvbnNoaXBzKCkpLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZU5vZGUo
bm9kZSk7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTE5NSwxMSArMTE5NywxMSBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGlvbnNoaXBNYXAgZm9yVHJ1ZSA9IG1fcmVs
YXRpb25zaGlwczsKICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aW9uc2hpcE1hcCBmb3JG
YWxzZSA9IG1fcmVsYXRpb25zaGlwczsKICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJEZWFsaW5nIHdpdGggdHJ1ZTpcbiIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVsYXRpb25zaGlwKGZvclRydWUsIHJlbGF0
aW9uc2hpcEZvclRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJlbGF0aW9uc2hp
cCByZWxhdGlvbnNoaXBGb3JGYWxzZSA9IHJlbGF0aW9uc2hpcEZvclRydWUuaW52ZXJzZSgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkRl
YWxpbmcgd2l0aCBmYWxzZTpcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJl
bGF0aW9uc2hpcChmb3JGYWxzZSwgcmVsYXRpb25zaGlwRm9yRmFsc2UpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfQpAQCAtMTIyMyw3ICsxMjI1LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
bV9yZWxhdGlvbnNoaXBzID0gbV9yZWxhdGlvbnNoaXBzQXRIZWFkW2Jsb2NrXTsKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUo
KTsgKytub2RlSW5kZXgpIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0
KG5vZGVJbmRleCk7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAg
ICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIlRyYW5zZm9ybWF0aW9uOiBhdCAiLCBub2Rl
LCAiOiAiLCBsaXN0RHVtcChzb3J0ZWRSZWxhdGlvbnNoaXBzKCkpLCAiXG4iKTsKICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGVuZHMgdXAgYmVpbmcgcHJldHR5IGF3
a3dhcmQgdG8gd3JpdGUgYmVjYXVzZSB3ZSBuZWVkIHRvIGRlY2lkZSBpZiB3ZQpAQCAtMTI4Nywx
NCArMTI4OSwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBtYXhWYWx1ZSA9
IHN0ZDo6bWluKG1heFZhbHVlLCByZWxhdGlvbnNoaXAubWF4VmFsdWVPZkxlZnQoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgbWlu
VmFsdWUgPSAiLCBtaW5WYWx1ZSwgIiwgbWF4VmFsdWUgPSAiLCBtYXhWYWx1ZSwgIlxuIik7CiAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAoc3VtT3ZlcmZsb3dz
PGludD4obWluVmFsdWUsIG5vZGUtPmNoaWxkMigpLT5hc0ludDMyKCkpIHx8CiAgICAgICAgICAg
ICAgICAgICAgICAgICBzdW1PdmVyZmxvd3M8aW50PihtYXhWYWx1ZSwgbm9kZS0+Y2hpbGQyKCkt
PmFzSW50MzIoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR0ludGVn
ZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgSXQncyBpbiBib3VuZHMuXG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVOb2RlKGJsb2NrLT5hdChub2Rl
SW5kZXgpKTsKQEAgLTE1NDgsNyArMTU1MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghcmVs
YXRpb25zaGlwKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZUludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIFNldHRpbmc6ICIsIHJlbGF0
aW9uc2hpcCwgIiAodHRsID0gIiwgdGltZVRvTGl2ZSwgIilcbiIpOwogCiAgICAgICAgIGF1dG8g
cmVzdWx0ID0gcmVsYXRpb25zaGlwTWFwLmFkZCgKQEAgLTE2MDIsNyArMTYwNCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgIGlmIChvdGhlclJlbGF0aW9uc2hpcC52YWd1ZW5lc3Mo
KSA8IHJlbGF0aW9uc2hpcC52YWd1ZW5lc3MoKQogICAgICAgICAgICAgICAgICAgICAgICAgJiYg
b3RoZXJSZWxhdGlvbnNoaXAucmlnaHQoKS0+aXNJbnQzMkNvbnN0YW50KCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlbGF0aW9uc2hpcCBuZXdSZWxhdGlvbnNoaXAgPSByZWxhdGlvbnNo
aXAuZmlsdGVyQ29uc3RhbnQob3RoZXJSZWxhdGlvbnNoaXApOwotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHZlcmJvc2UgJiYgbmV3UmVsYXRpb25zaGlwICE9IHJlbGF0aW9uc2hpcCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFz
ZUludGVybmFsOjp2ZXJib3NlICYmIG5ld1JlbGF0aW9uc2hpcCAhPSByZWxhdGlvbnNoaXApCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgUmVmaW5lZCB0bzogIiwg
bmV3UmVsYXRpb25zaGlwLCAiIGJhc2VkIG9uICIsIG90aGVyUmVsYXRpb25zaGlwLCAiXG4iKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcCA9IG5ld1JlbGF0aW9uc2hpcDsK
ICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTYxNiw3ICsxNjE4LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgaWYgKG90aGVyUmVsYXRpb25zaGlwLnZhZ3VlbmVzcygpID4gcmVs
YXRpb25zaGlwLnZhZ3VlbmVzcygpCiAgICAgICAgICAgICAgICAgICAgICAgICAmJiBvdGhlclJl
bGF0aW9uc2hpcC5yaWdodCgpLT5pc0ludDMyQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgUmVsYXRpb25zaGlwIG5ld1JlbGF0aW9uc2hpcCA9IG90aGVyUmVsYXRpb25zaGlw
LmZpbHRlckNvbnN0YW50KHJlbGF0aW9uc2hpcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAodmVyYm9zZSAmJiBuZXdSZWxhdGlvbnNoaXAgIT0gb3RoZXJSZWxhdGlvbnNoaXApCisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJ
bnRlcm5hbDo6dmVyYm9zZSAmJiBuZXdSZWxhdGlvbnNoaXAgIT0gb3RoZXJSZWxhdGlvbnNoaXAp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgUmVmaW5lZCAiLCBv
dGhlclJlbGF0aW9uc2hpcCwgIiB0bzogIiwgbmV3UmVsYXRpb25zaGlwLCAiXG4iKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIG90aGVyUmVsYXRpb25zaGlwID0gbmV3UmVsYXRpb25zaGlwOwog
ICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNjM5LDcgKzE2NDEsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgLy8gQHggPT0gQGMgYW5kIEB4ICE9IEBkLCB3aGVyZSBAZCA+IEBjLCB0aGVuIHdl
IHdhbnQgdG8gdHVybiBAeCAhPSBAZCBpbnRvIEB4IDwgQGQuCiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGlmICh0aW1lVG9MaXZlICYmIG90aGVyUmVsYXRpb25zaGlwLmtpbmQoKSA9PSBSZWxh
dGlvbnNoaXA6OkVxdWFsKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICAgICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIENvbnNpZGVyaW5nOiAi
LCBvdGhlclJlbGF0aW9uc2hpcCwgIlxuIik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgLy8gV2UgaGF2ZToKQEAgLTE2NzUsNyArMTY3Nyw3IEBAIHByaXZhdGU6CiAgICAgCiAg
ICAgYm9vbCBtZXJnZVRvKFJlbGF0aW9uc2hpcE1hcCYgcmVsYXRpb25zaGlwTWFwLCBCYXNpY0Js
b2NrKiB0YXJnZXQpCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAo
REZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAg
ICAgICAgICAgZGF0YUxvZygiTWVyZ2luZyB0byAiLCBwb2ludGVyRHVtcCh0YXJnZXQpLCAiOlxu
Iik7CiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgSW5jb21pbmc6ICIsIGxpc3REdW1wKHNvcnRl
ZFJlbGF0aW9uc2hpcHMocmVsYXRpb25zaGlwTWFwKSksICJcbiIpOwogICAgICAgICAgICAgZGF0
YUxvZygiICAgIEF0IGhlYWQ6ICIsIGxpc3REdW1wKHNvcnRlZFJlbGF0aW9uc2hpcHMobV9yZWxh
dGlvbnNoaXBzQXRIZWFkW3RhcmdldF0pKSwgIlxuIik7CkBAIC0xNjk3LDcgKzE2OTksNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGZvciAoUmVsYXRpb25zaGlwIHJlbGF0aW9uc2hpcCA6
IGVudHJ5LnZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZWxhdGlvbnNoaXAu
bGVmdCgpID09IGVudHJ5LmtleSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpc0xpdmUocmVs
YXRpb25zaGlwLnJpZ2h0KCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9z
ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRp
b25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2coIiAgUHJvcGFnYXRpbmcgIiwgcmVsYXRpb25zaGlwLCAiXG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQocmVsYXRpb25zaGlwKTsKICAgICAgICAgICAgICAg
ICAgICAgfQpAQCAtMTczNCwxMiArMTczNiwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgVmVj
dG9yPFJlbGF0aW9uc2hpcD4gbWVyZ2VkUmVsYXRpb25zaGlwczsKICAgICAgICAgICAgIGZvciAo
UmVsYXRpb25zaGlwIHRhcmdldFJlbGF0aW9uc2hpcCA6IGVudHJ5LnZhbHVlKSB7CiAgICAgICAg
ICAgICAgICAgZm9yIChSZWxhdGlvbnNoaXAgc291cmNlUmVsYXRpb25zaGlwIDogaXRlci0+dmFs
dWUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAg
ICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZUludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICBNZXJnaW5nICIsIHRhcmdldFJl
bGF0aW9uc2hpcCwgIiBhbmQgIiwgc291cmNlUmVsYXRpb25zaGlwLCAiOlxuIik7CiAgICAgICAg
ICAgICAgICAgICAgIHRhcmdldFJlbGF0aW9uc2hpcC5tZXJnZSgKICAgICAgICAgICAgICAgICAg
ICAgICAgIHNvdXJjZVJlbGF0aW9uc2hpcCwKICAgICAgICAgICAgICAgICAgICAgICAgIFsmXSAo
UmVsYXRpb25zaGlwIG5ld1JlbGF0aW9uc2hpcCkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdJbnRl
Z2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgR290ICIsIG5ld1JlbGF0aW9uc2hpcCwg
IlxuIik7CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3UmVsYXRpb25zaGlw
LnJpZ2h0KCktPmlzSW50MzJDb25zdGFudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR01vdkhpbnRSZW1vdmFsUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdNb3ZIaW50UmVtb3ZhbFBoYXNlLmNwcAppbmRleCA5ZjM0NGIzN2RjZDg3
ZmMxNGMwYTEyZGU0ZjEwNzA4YjZkNzQ4Zjg2Li4xYWVkMmMxODU2ZTJiZjYyY2VmN2EzYzQ2ZGEy
NDIxOTMyZjVmNzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01v
dkhpbnRSZW1vdmFsUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TW92SGludFJlbW92YWxQaGFzZS5jcHAKQEAgLTQyLDcgKzQyLDkgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsK
K25hbWVzcGFjZSBERkdNb3ZIaW50UmVtb3ZhbFBoYXNlSW50ZXJuYWwgeworc3RhdGljIGNvbnN0
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBjbGFzcyBNb3ZIaW50UmVtb3ZhbFBoYXNlIDog
cHVibGljIFBoYXNlIHsKIHB1YmxpYzoKQEAgLTU1LDcgKzU3LDcgQEAgcHVibGljOgogICAgIAog
ICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlm
IChERkdNb3ZIaW50UmVtb3ZhbFBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAg
IGRhdGFMb2coIkdyYXBoIGJlZm9yZSBNb3ZIaW50IHJlbW92YWw6XG4iKTsKICAgICAgICAgICAg
IG1fZ3JhcGguZHVtcCgpOwogICAgICAgICB9CkBAIC02OSw3ICs3MSw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgdm9pZCBoYW5kbGVCbG9jayhCYXNpY0Jsb2NrKiBibG9jaykKICAgICB7Ci0g
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHTW92SGludFJlbW92YWxQaGFzZUlu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiSGFuZGluZyBibG9jayAiLCBw
b2ludGVyRHVtcChibG9jayksICJcbiIpOwogICAgICAgICAKICAgICAgICAgLy8gQSBNb3ZIaW50
IGlzIHVubmVjZXNzYXJ5IGlmIHRoZSBsb2NhbCBkaWVzIGJlZm9yZSBpdCBpcyB1c2VkLiBXZSBh
bnN3ZXIgdGhpcyBxdWVzdGlvbiBieQpAQCAtODcsNyArODksNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIG1fc3RhdGUub3BlcmFuZChyZWcpID0gY3VycmVudEVwb2NoOwogICAgICAgICAg
ICAgfSk7CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR01v
dkhpbnRSZW1vdmFsUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2co
IiAgICBMb2NhbHM6ICIsIG1fc3RhdGUsICJcbiIpOwogICAgICAgICAKICAgICAgICAgLy8gQXNz
dW1lIHRoYXQgYmxvY2tzIGFmdGVyIHVzIGV4aXQuCkBAIC05OCw3ICsxMDAsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBNb3ZIaW50KSB7
CiAgICAgICAgICAgICAgICAgRXBvY2ggbG9jYWxFcG9jaCA9IG1fc3RhdGUub3BlcmFuZChub2Rl
LT51bmxpbmtlZExvY2FsKCkpOwotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgICAgIGlmIChERkdNb3ZIaW50UmVtb3ZhbFBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBBdCAiLCBub2RlLCAiOiBjdXJyZW50ID0g
IiwgY3VycmVudEVwb2NoLCAiLCBsb2NhbCA9ICIsIGxvY2FsRXBvY2gsICJcbiIpOwogICAgICAg
ICAgICAgICAgIGlmICghbG9jYWxFcG9jaCB8fCBsb2NhbEVwb2NoID09IGN1cnJlbnRFcG9jaCkg
ewogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhab21iaWVI
aW50KTsKQEAgLTEyMCw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCEhbV9zdGF0ZS5vcGVyYW5kKHJlZykpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdNb3ZIaW50
UmVtb3ZhbFBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiICAgIEtpbGxlZCBvcGVyYW5kIGF0ICIsIG5vZGUsICI6ICIsIHJlZywgIlxu
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLm9wZXJhbmQocmVnKSA9IGN1cnJl
bnRFcG9jaDsKICAgICAgICAgICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNw
cAppbmRleCA3YTljNTE1NjdiMzQ3ZmRkM2M4YzNjZDkxYmYwNGI4OWRmODIyNTI4Li4zZmRhN2Q0
MGIwODZiZDE5YzNjMjhiMGE2MGRhZDE1NzVlZjYwYzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFz
ZS5jcHAKQEAgLTQ4LDcgKzQ4LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
CiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBERkdPYmpl
Y3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVy
Ym9zZSA9IGZhbHNlOworfQogCiAvLyBJbiBvcmRlciB0byBzaW5rIG9iamVjdCBjeWNsZXMsIHdl
IHVzZSBhIHBvaW50cy10byBhbmFseXNpcyBjb3VwbGVkCiAvLyB3aXRoIGFuIGVzY2FwZSBhbmFs
eXNpcy4gVGhpcyBhbmFseXNpcyBpcyBhY3R1YWxseSBzaW1pbGFyIHRvIGFuCkBAIC03MTcsNyAr
NzE5LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIXBlcmZvcm1TaW5raW5nKCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYg
KERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAg
ICAgICAgICAgZGF0YUxvZygiR3JhcGggYWZ0ZXIgZWxpbWluYXRpb246XG4iKTsKICAgICAgICAg
ICAgIG1fZ3JhcGguZHVtcCgpOwogICAgICAgICB9CkBAIC03NDIsNyArNzQ0LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGdyYXBoQmVmb3JlU2lua2luZyA9IG91dC50b0NTdHJpbmcoKTsKICAg
ICAgICAgfQogCi0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdPYmplY3RB
bGxvY2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRh
dGFMb2coIkdyYXBoIGJlZm9yZSBlbGltaW5hdGlvbjpcbiIpOwogICAgICAgICAgICAgbV9ncmFw
aC5kdW1wKCk7CiAgICAgICAgIH0KQEAgLTc1Miw3ICs3NTQsNyBAQCBwcml2YXRlOgogICAgICAg
ICBpZiAoIWRldGVybWluZVNpbmtDYW5kaWRhdGVzKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR09iamVjdEFsbG9j
YXRpb25TaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZm9yIChC
YXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgewogICAg
ICAgICAgICAgICAgIGRhdGFMb2coIkhlYXAgYXQgaGVhZCBvZiAiLCAqYmxvY2ssICI6IFxuIiwg
bV9oZWFwQXRIZWFkW2Jsb2NrXSk7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygiSGVhcCBhdCB0
YWlsIG9mICIsICpibG9jaywgIjogXG4iLCBtX2hlYXBBdFRhaWxbYmxvY2tdKTsKQEAgLTc3Myw3
ICs3NzUsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGJvb2wgY2hhbmdlZDsKICAgICAgICAgZG8g
ewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHT2JqZWN0QWxs
b2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRh
dGFMb2coIkRvaW5nIGl0ZXJhdGlvbiBvZiBlc2NhcGUgYW5hbHlzaXMuXG4iKTsKICAgICAgICAg
ICAgIGNoYW5nZWQgPSBmYWxzZTsKIApAQCAtMTE5OCw3ICsxMjAwLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
IGhhc1VuZXNjYXBlZFJlYWRzOwogCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAo
REZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgZGF0YUxvZygiQ2FuZGlkYXRlczogIiwgbGlzdER1bXAobV9zaW5rQ2FuZGlkYXRlcyks
ICJcbiIpOwogCiAgICAgICAgIC8vIENyZWF0ZSB0aGUgbWF0ZXJpYWxpemF0aW9uIG5vZGVzCkBA
IC0xNzY1LDcgKzE3NjcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGlmIChERkdP
YmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCJMb2NhbCBtYXBwaW5nIGF0ICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwg
IjogIiwgbWFwRHVtcChtX2xvY2FsTWFwcGluZyksICJcbiIpOwogICAgICAgICAgICAgICAgIGRh
dGFMb2coIkxvY2FsIG1hdGVyaWFsaXphdGlvbnMgYXQgIiwgcG9pbnRlckR1bXAoYmxvY2spLCAi
OiAiLCBtYXBEdW1wKG1fZXNjYXBlZVRvTWF0ZXJpYWxpemF0aW9uKSwgIlxuIik7CiAgICAgICAg
ICAgICB9CkBAIC0xNzgxLDcgKzE3ODMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICBtX2xvY2FsTWFwcGluZy5zZXQobG9jYXRpb24sIG1fYm90dG9tKTsKIAogICAgICAgICAgICAg
ICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5jb250YWlucyhub2RlKSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
REZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkZvciBzaW5rIGNhbmRpZGF0ZSAiLCBub2Rl
LCAiIGZvdW5kIGxvY2F0aW9uICIsIGxvY2F0aW9uLCAiXG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydCgKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlSW5kZXggKyAxLApAQCAtMTc5Niw3ICsxNzk4LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgcG9wdWxhdGVNYXRlcmlhbGl6YXRpb24oYmxvY2ssIG1hdGVyaWFsaXphdGlv
biwgZXNjYXBlZSk7CiAgICAgICAgICAgICAgICAgICAgIG1fZXNjYXBlZVRvTWF0ZXJpYWxpemF0
aW9uLnNldChlc2NhcGVlLCBtYXRlcmlhbGl6YXRpb24pOwogICAgICAgICAgICAgICAgICAgICBt
X2luc2VydGlvblNldC5pbnNlcnQobm9kZUluZGV4LCBtYXRlcmlhbGl6YXRpb24pOwotICAgICAg
ICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR09i
amVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2coIk1hdGVyaWFsaXppbmcgIiwgZXNjYXBlZSwgIiA9PiAiLCBt
YXRlcmlhbGl6YXRpb24sICIgYXQgIiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAgICAgICAgfQog
CkBAIC0xODUxLDcgKzE4NTMsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgICAgICAg
ICBkb0xvd2VyID0gdHJ1ZTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQ
aGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIkNyZWF0aW5nIGhpbnQgd2l0aCB2YWx1ZSAiLCBub2RlVmFsdWUsICIgYmVmb3JlICIsIG5v
ZGUsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0
KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsCkBAIC0xOTk0LDcg
KzE5OTYsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpbnNlcnRPU1JIaW50c0ZvclVwZGF0ZSh1
bnNpZ25lZCBub2RlSW5kZXgsIE5vZGVPcmlnaW4gb3JpZ2luLCBib29sJiBjYW5FeGl0LCBBdmFp
bGFiaWxpdHlNYXAmIGF2YWlsYWJpbGl0eSwgTm9kZSogZXNjYXBlZSwgTm9kZSogbWF0ZXJpYWxp
emF0aW9uKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR09i
amVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAg
ICAgZGF0YUxvZygiSW5zZXJ0aW5nIE9TUiBoaW50cyBhdCAiLCBvcmlnaW4sICI6XG4iKTsKICAg
ICAgICAgICAgIGRhdGFMb2coIiAgICBFc2NhcGVlOiAiLCBlc2NhcGVlLCAiXG4iKTsKICAgICAg
ICAgICAgIGRhdGFMb2coIiAgICBNYXRlcmlhbGl6YXRpb246ICIsIG1hdGVyaWFsaXphdGlvbiwg
IlxuIik7CkBAIC0yMTY3LDcgKzIxNjksNyBAQCBwcml2YXRlOgogCiAgICAgTm9kZSogY3JlYXRl
UmVjb3ZlcnkoQmFzaWNCbG9jayogYmxvY2ssIFByb21vdGVkSGVhcExvY2F0aW9uIGxvY2F0aW9u
LCBOb2RlKiB3aGVyZSwgYm9vbCYgY2FuRXhpdCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiUmVjb3ZlcmluZyAiLCBsb2NhdGlvbiwgIiBh
dCAiLCB3aGVyZSwgIlxuIik7CiAgICAgICAgIEFTU0VSVChsb2NhdGlvbi5iYXNlKCktPmlzUGhh
bnRvbUFsbG9jYXRpb24oKSk7CiAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXRNYXRlcmlhbGl6YXRp
b24oYmxvY2ssIGxvY2F0aW9uLmJhc2UoKSk7CkBAIC0yMTc1LDcgKzIxNzcsNyBAQCBwcml2YXRl
OgogCiAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gd2hlcmUtPm9yaWdpbi53aXRoU2VtYW50
aWMoYmFzZS0+b3JpZ2luLnNlbWFudGljKTsKIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgaWYgKERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgICAgIGRhdGFMb2coIkJhc2UgaXMgIiwgYmFzZSwgIiBhbmQgdmFsdWUgaXMgIiwg
dmFsdWUsICJcbiIpOwogCiAgICAgICAgIGlmIChiYXNlLT5pc1BoYW50b21BbGxvY2F0aW9uKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUluc2Vy
dGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUluc2Vy
dGlvblBoYXNlLmNwcAppbmRleCBkY2MxYzk3Njk4NmZlZDZlM2U5ZGNlZGNhZjVlOTQwNWI5ZDNi
OGRhLi4zYzA4OGE2YTRhNWVlNjUwOTA2MjJkNjYwMzJkNGYxNzEwMjkzNzQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21JbnNlcnRpb25QaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2Uu
Y3BwCkBAIC00Myw3ICs0Myw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAog
bmFtZXNwYWNlIHsKIAotYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgREZHUGhhbnRv
bUluc2VydGlvblBoYXNlSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZh
bHNlOworfQogCiBjbGFzcyBQaGFudG9tSW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ugewog
cHVibGljOgpAQCAtNjAsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIFNldExvY2FscyBl
eGVjdXRlLCB3aGljaCBpcyBpbmFjY3VyYXRlLiBUaGF0IGNhdXNlcyB1cyB0byBpbnNlcnQgdG9v
IGZldyBQaGFudG9tcy4KICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dy
YXBoLm1fcmVmQ291bnRTdGF0ZSA9PSBFeGFjdFJlZkNvdW50KTsKICAgICAgICAgCi0gICAgICAg
IGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2VJbnRl
cm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIFBoYW50
b20gaW5zZXJ0aW9uOlxuIik7CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAg
fQpAQCAtNzAsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxv
Y2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpCiAgICAgICAgICAgICBoYW5kbGVC
bG9jayhibG9jayk7CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBp
ZiAoREZHUGhhbnRvbUluc2VydGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAg
ICAgIGRhdGFMb2coIkdyYXBoIGFmdGVyIFBoYW50b20gaW5zZXJ0aW9uOlxuIik7CiAgICAgICAg
ICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQpAQCAtMTAxLDcgKzEwMyw3IEBAIHByaXZh
dGU6CiAgICAgICAgIHVuc2lnbmVkIGxhc3RFeGl0aW5nSW5kZXggPSAwOwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIG5vZGVJbmRleCA9IDA7IG5vZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbm9k
ZUluZGV4KSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7
Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdQaGFudG9tSW5z
ZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJD
b25zaWRlcmluZyAiLCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgc3dp
dGNoIChub2RlLT5vcCgpKSB7CkBAIC0xMzksNyArMTQxLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIFZpcnR1YWxSZWdpc3RlciBhbHJlYWR5S2lsbGVkOwogCiAgICAgICAgICAgICBhdXRvIHBy
b2Nlc3NLaWxsZWRPcGVyYW5kID0gWyZdIChWaXJ0dWFsUmVnaXN0ZXIgcmVnKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR1BoYW50b21JbnNl
cnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgS2lsbGVkIG9wZXJhbmQ6ICIsIHJlZywgIlxuIik7CiAKICAgICAgICAgICAgICAgICAv
LyBBbHJlYWR5IGhhbmRsZWQgZnJvbSBTZXRMb2NhbC4KQEAgLTE1NSw3ICsxNTcsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIGlmIChraWxsZWROb2RlLT5lcG9jaCgpID09IGN1cnJlbnRF
cG9jaCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgaWYgKERGR1BoYW50
b21JbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIEluc2VydGluZyBQaGFudG9t
IG9uICIsIGtpbGxlZE5vZGUsICIgYWZ0ZXIgIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGJs
b2NrLT5hdChsYXN0RXhpdGluZ0luZGV4KSwgIlxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCmluZGV4IGQzZGE1NTI3
ZDYzYmMwNzY5ODBlZDQwNGQ1NzMwNjVkNGE4NTE2YmEuLjE0Y2VkMmFhOGQ4MmM2ZWJjYjM1ZTk0
Y2E2ZmEyZTJhM2UzMzg0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCkBAIC00Miw3ICs0Miw5IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAotYm9vbCB2ZXJib3NlID0g
ZmFsc2U7CituYW1lc3BhY2UgREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbCB7CitzdGF0
aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIFB1dFN0YWNrU2lua2lu
Z1BoYXNlIDogcHVibGljIFBoYXNlIHsKIHB1YmxpYzoKQEAgLTcxLDcgKzczLDcgQEAgcHVibGlj
OgogICAgICAgICAvLyB0aGUgc3RhY2suIEl0J3Mgbm90IGNsZWFyIHRvIG1lIGlmIHRoaXMgaXMg
aW1wb3J0YW50IG9yIG5vdC4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0NTI5NgogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAg
ICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAg
ICAgICAgICAgIGRhdGFMb2coIkdyYXBoIGJlZm9yZSBQdXRTdGFjayBzaW5raW5nOlxuIik7CiAg
ICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQpAQCAtMTA1LDcgKzEwNyw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICBPcGVyYW5kczxib29sPiBsaXZlID0gbGl2ZUF0VGFp
bFtibG9ja107CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXggPSBibG9j
ay0+c2l6ZSgpOyBub2RlSW5kZXgtLTspIHsKICAgICAgICAgICAgICAgICAgICAgTm9kZSogbm9k
ZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwotICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9z
ZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2luZ1BoYXNlSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJMaXZlIGF0ICIs
IG5vZGUsICI6ICIsIGxpdmUsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgVmVjdG9yPFZpcnR1YWxSZWdpc3RlciwgND4gcmVhZHM7CkBAIC0xMTMsNyAr
MTE1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBhdXRvIGVzY2FwZUhhbmRsZXIg
PSBbJl0gKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAob3BlcmFuZC5pc0hlYWRlcigpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICIsIG9wZXJhbmQsICIg
aXMgbGl2ZSBhdCAiLCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRz
LmFwcGVuZChvcGVyYW5kKTsKICAgICAgICAgICAgICAgICAgICAgfTsKQEAgLTIzMCw3ICsyMzIs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgT3BlcmFuZHM8Rmx1c2hGb3JtYXQ+IGRlZmVy
cmVkID0gZGVmZXJyZWRBdEhlYWRbYmxvY2tdOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIGZvciAoTm9kZSogbm9kZSA6ICpibG9jaykgewotICAgICAgICAgICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2luZ1Bo
YXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJE
ZWZlcnJlZCBhdCAiLCBub2RlLCAiOiIsIGRlZmVycmVkLCAiXG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEdldFN0YWNrKSB7
CkBAIC0yNzcsNyArMjc5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBhdXRvIGVzY2FwZUhhbmRsZXIg
PSBbJl0gKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdQdXRTdGFja1Np
bmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2coIkZvciAiLCBub2RlLCAiIGVzY2FwaW5nICIsIG9wZXJhbmQsICJcbiIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNIZWFkZXIoKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0zMDMsMTMgKzMwNSwxMyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNz
b3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSBkZWZlcnJlZC5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR1B1dFN0YWNrU2lu
a2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiQ29uc2lkZXJpbmcgIiwgVmlydHVhbFJlZ2lzdGVyKGRlZmVycmVkLm9wZXJhbmRG
b3JJbmRleChpKSksICIgYXQgIiwgcG9pbnRlckR1bXAoYmxvY2spLCAiLT4iLCBwb2ludGVyRHVt
cChzdWNjZXNzb3IpLCAiOiAiLCBkZWZlcnJlZFtpXSwgIiBhbmQgIiwgZGVmZXJyZWRBdEhlYWRb
c3VjY2Vzc29yXVtpXSwgIiBtZXJnZXMgdG8gIik7CiAKICAgICAgICAgICAgICAgICAgICAgICAg
IGRlZmVycmVkQXRIZWFkW3N1Y2Nlc3Nvcl1baV0gPQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1lcmdlKGRlZmVycmVkQXRIZWFkW3N1Y2Nlc3Nvcl1baV0sIGRlZmVycmVkW2ldKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKGRl
ZmVycmVkQXRIZWFkW3N1Y2Nlc3Nvcl1baV0sICJcbiIpOwogICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgfQpAQCAtMzg3LDcgKzM4OSw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICBpZiAoIWlzQ29uY3JldGUoZm9ybWF0KSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAg
ICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiQWRkaW5nIFBoaSBmb3IgIiwgb3BlcmFuZCwgIiBhdCAi
LCBwb2ludGVyRHVtcChibG9jayksICJcbiIpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIE5vZGUqIHBoaU5vZGUgPSBtX2dyYXBoLmFkZE5vZGUoU3BlY0hlYXBUb3AsIFBoaSwg
YmxvY2stPmF0KDApLT5vcmlnaW4ud2l0aEludmFsaWRFeGl0KCkpOwpAQCAtNDExLDcgKzQxMyw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBtYXBwaW5nLm9wZXJhbmQob3BlcmFuZCkgPSBk
ZWYtPnZhbHVlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2luZ1BoYXNlSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiTWFwcGluZyBhdCB0b3Agb2Yg
IiwgcG9pbnRlckR1bXAoYmxvY2spLCAiOiAiLCBtYXBwaW5nLCAiXG4iKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgZm9yIChTU0FDYWxjdWxhdG9yOjpEZWYqIHBoaURlZiA6IHNzYUNhbGN1
bGF0b3IucGhpc0ZvckJsb2NrKGJsb2NrKSkgewpAQCAtNDE5LDcgKzQyMSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0KDAs
IHBoaURlZi0+dmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2luZ1BoYXNlSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgIE1hcHBpbmcg
Iiwgb3BlcmFuZCwgIiB0byAiLCBwaGlEZWYtPnZhbHVlKCksICJcbiIpOwogICAgICAgICAgICAg
ICAgIG1hcHBpbmcub3BlcmFuZChvcGVyYW5kKSA9IHBoaURlZi0+dmFsdWUoKTsKICAgICAgICAg
ICAgIH0KQEAgLTQyNyw3ICs0MjksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBkZWZlcnJlZCA9
IGRlZmVycmVkQXRIZWFkW2Jsb2NrXTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUlu
ZGV4ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAgICAg
ICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2lu
Z1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkRl
ZmVycmVkIGF0ICIsIG5vZGUsICI6IiwgZGVmZXJyZWQsICJcbiIpOwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewpAQCAtNDM1LDcgKzQzNyw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgU3RhY2tBY2Nlc3NEYXRhKiBkYXRhID0g
bm9kZS0+c3RhY2tBY2Nlc3NEYXRhKCk7CiAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdp
c3RlciBvcGVyYW5kID0gZGF0YS0+bG9jYWw7CiAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVk
Lm9wZXJhbmQob3BlcmFuZCkgPSBkYXRhLT5mb3JtYXQ7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhh
c2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAg
IE1hcHBpbmcgIiwgb3BlcmFuZCwgIiB0byAiLCBub2RlLT5jaGlsZDEoKS5ub2RlKCksICIgYXQg
Iiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcub3BlcmFuZChvcGVy
YW5kKSA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CkBAIC00NzAsNyArNDcyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6IHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBlc2NhcGVIYW5kbGVy
ID0gWyZdIChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tT
aW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCJGb3IgIiwgbm9kZSwgIiBlc2NhcGluZyAiLCBvcGVyYW5kLCAiXG4iKTsKIAog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNIZWFkZXIoKSkKQEAgLTQ4NCw3
ICs0ODYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gR290dGEgaW5zZXJ0IGEgUHV0
U3RhY2suCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkluc2VydGluZyBhIFB1dFN0
YWNrIGZvciAiLCBvcGVyYW5kLCAiIGF0ICIsIG5vZGUsICJcbiIpOwogCiAgICAgICAgICAgICAg
ICAgICAgICAgICBOb2RlKiBpbmNvbWluZyA9IG1hcHBpbmcub3BlcmFuZChvcGVyYW5kKTsKQEAg
LTUyMyw3ICs1MjUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHBoaU5v
ZGUgPSBwaGlEZWYtPnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIFNTQUNhbGN1bGF0b3I6
OlZhcmlhYmxlKiB2YXJpYWJsZSA9IHBoaURlZi0+dmFyaWFibGUoKTsKICAgICAgICAgICAgICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBpbmRleFRvT3BlcmFuZFt2YXJpYWJsZS0+
aW5kZXgoKV07Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAg
ICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkNyZWF0aW5nIFVwc2lsb24gZm9yICIsIG9w
ZXJhbmQsICIgYXQgIiwgcG9pbnRlckR1bXAoYmxvY2spLCAiLT4iLCBwb2ludGVyRHVtcChzdWNj
ZXNzb3JCbG9jayksICJcbiIpOwogICAgICAgICAgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3Jt
YXQgPSBkZWZlcnJlZEF0SGVhZFtzdWNjZXNzb3JCbG9ja10ub3BlcmFuZChvcGVyYW5kKTsKICAg
ICAgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBpc0NvbmNyZXRl
KGZvcm1hdCkpOwpAQCAtNTY4LDcgKzU3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERG
R1B1dFN0YWNrU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRh
dGFMb2coIkdyYXBoIGFmdGVyIFB1dFN0YWNrIHNpbmtpbmc6XG4iKTsKICAgICAgICAgICAgIG1f
Z3JhcGguZHVtcCgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCmluZGV4IDNhMmE3
MTcyYWQ3M2Q2YTNlMDEwNzI5MmU1Yjk3MDU0OTQ3ZjhmMWEuLmI1ZTJjMzUwYjE4MWY5YjA2Mzkz
MjE1YTQyYWFhZDc2YjY1ZWQ4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCkBAIC00Myw3ICs0
Myw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAot
Ym9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2VJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAK
IGVudW0gY2xhc3MgUGhhc2VNb2RlIHsKICAgICAvLyBEb2VzIG9ubHkgYSBsb2NhbCBhbmFseXNp
cyBmb3Igc3RvcmUgYmFycmllciBpbnNlcnRpb24gYW5kIGFzc3VtZXMgdGhhdCBwb2ludGVycyBs
aXZlCkBAIC03NSw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIHJ1bigpCiAgICAg
ewotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5z
ZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiU3Rh
cnRpbmcgc3RvcmUgYmFycmllciBpbnNlcnRpb246XG4iKTsKICAgICAgICAgICAgIG1fZ3JhcGgu
ZHVtcCgpOwogICAgICAgICB9CkBAIC0xNjcsNyArMTY5LDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBib29sIGhhbmRsZUJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrKQogICAgIHsKLSAgICAgICAg
aWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNl
SW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkRlYWxpbmcgd2l0aCBi
bG9jayAiLCBwb2ludGVyRHVtcChibG9jayksICJcbiIpOwogICAgICAgICAgICAgaWYgKHJlYWxs
eUluc2VydEJhcnJpZXJzKCkpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIFJlYWxseSBp
bnNlcnRpbmcgYmFycmllcnMuXG4iKTsKQEAgLTIwNiw3ICsyMDgsNyBAQCBwcml2YXRlOgogICAg
ICAgICBmb3IgKG1fbm9kZUluZGV4ID0gMDsgbV9ub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyAr
K21fbm9kZUluZGV4KSB7CiAgICAgICAgICAgICBtX25vZGUgPSBibG9jay0+YXQobV9ub2RlSW5k
ZXgpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAg
ICAgaWYgKERGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsK
ICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAiICAgICIsIG1f
Y3VycmVudEVwb2NoLCAiOiBMb29raW5nIGF0IG5vZGUgIiwgbV9ub2RlLCAiIHdpdGggY2hpbGRy
ZW46ICIpOwogICAgICAgICAgICAgICAgIENvbW1hUHJpbnRlciBjb21tYTsKQEAgLTM0OCw3ICsz
NTAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgaWYg
KERGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAg
ICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAiICAgICIsIG1fY3VycmVu
dEVwb2NoLCAiOiBEb25lIHdpdGggbm9kZSAiLCBtX25vZGUsICIgKCIsIG1fbm9kZS0+ZXBvY2go
KSwKICAgICAgICAgICAgICAgICAgICAgIikgd2l0aCBjaGlsZHJlbjogIik7CkBAIC0zODAsNyAr
MzgyLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNvbnNpZGVyQmFycmllcihFZGdlIGJh
c2UsIEVkZ2UgY2hpbGQpCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYg
KERGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgICAgIENvbnNpZGVyaW5nIGFkZGluZyBiYXJyaWVyICIsIGJhc2Us
ICIgPT4gIiwgY2hpbGQsICJcbiIpOwogICAgICAgICAKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVl
ZCBhIHN0b3JlIGJhcnJpZXIgaWYgdGhlIGNoaWxkIGlzIGd1YXJhbnRlZWQgdG8gbm90IGJlIGEg
Y2VsbC4KQEAgLTM4OSw3ICszOTEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8gRG9uJ3Qg
dHJ5IHRvbyBoYXJkIGJlY2F1c2UgaXQncyB0b28gZXhwZW5zaXZlIHRvIHJ1biBBSS4KICAgICAg
ICAgICAgIGlmIChjaGlsZC0+aGFzQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgICAgIGlmICgh
Y2hpbGQtPmFzSlNWYWx1ZSgpLmlzQ2VsbCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
IiAgICAgICAgICAgIFJlamVjdGluZyBiZWNhdXNlIG9mIGNvbnN0YW50IHR5cGUuXG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAgLTQwMCw3ICs0
MDIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgTm9kZVJlc3VsdEludDMyOgog
ICAgICAgICAgICAgICAgIGNhc2UgTm9kZVJlc3VsdEludDUyOgogICAgICAgICAgICAgICAgIGNh
c2UgTm9kZVJlc3VsdEJvb2xlYW46Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgICAgICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAg
ICAgIFJlamVjdGluZyBiZWNhdXNlIG9mIHJlc3VsdCB0eXBlLlxuIik7CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBkZWZhdWx0OgpAQCAtNDE0LDcgKzQxNiw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBHbyBpbnRvIHJhZ2UgbW9kZSB0byBlbGltaW5h
dGUgYW55IGNoYW5jZSBvZiBhIGJhcnJpZXIgd2l0aCBhIG5vbi1jZWxsIGNoaWxkLiBXZQogICAg
ICAgICAgICAgLy8gY2FuIGFmZm9yZCB0byBrZWVwIGFyb3VuZCBBSSBpbiBHbG9iYWwgbW9kZS4K
ICAgICAgICAgICAgIGlmICghbV9pbnRlcnByZXRlci0+bmVlZHNUeXBlQ2hlY2soY2hpbGQsIH5T
cGVjQ2VsbCkpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAg
ICBpZiAoREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICAgICAgUmVqZWN0aW5nIGJlY2F1c2Ug
b2YgQUkgdHlwZS5cbiIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
QEAgLTQyNiw3ICs0MjgsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgY29uc2lkZXJCYXJy
aWVyKEVkZ2UgYmFzZSkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAo
REZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgIGRhdGFMb2coIiAgICAgICAgQ29uc2lkZXJpbmcgYWRkaW5nIGJhcnJpZXIgb24gIiwgYmFz
ZSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIGEgc3RvcmUgYmFy
cmllciBpZiB0aGUgZXBvY2ggb2YgdGhlIGJhc2UgaXMgaWRlbnRpY2FsIHRvIHRoZSBjdXJyZW50
CkBAIC00MzQsMTIgKzQzNiwxMiBAQCBwcml2YXRlOgogICAgICAgICAvLyBiZSBpbiBuZXdnZW4s
IG9yIHdlIGp1c3QgcmFuIGEgYmFycmllciBvbiBpdCBzbyBpdCdzIGd1YXJhbnRlZWQgdG8gYmUg
cmVtZW1iZXJlZAogICAgICAgICAvLyBhbHJlYWR5LgogICAgICAgICBpZiAoYmFzZS0+ZXBvY2go
KSA9PSBtX2N1cnJlbnRFcG9jaCkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgICAgICBSZWplY3RpbmcgYmVjYXVzZSBp
dCdzIGluIHRoZSBjdXJyZW50IGVwb2NoLlxuIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHU3Rv
cmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRh
dGFMb2coIiAgICAgICAgICAgIEluc2VydGluZyBiYXJyaWVyLlxuIik7CiAgICAgICAgIGluc2Vy
dEJhcnJpZXIobV9ub2RlSW5kZXggKyAxLCBiYXNlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcAppbmRl
eCBlM2M1MmFjYTlkYTEzZmNkODNjMThlMDFiODU2ZjhhNDgwOTg5ZTk3Li5lOTczOTU3NzdmYTll
MGQ4MjY1M2RjODc3OGQyYTAyMDBiMDk1OTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKQEAgLTQwLDcgKzQw
LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3BhY2UgewogCi1i
b29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNl
SW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBjbGFz
cyBWYXJhcmdzRm9yd2FyZGluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKIHB1YmxpYzoKQEAgLTUz
LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBu
dWxscHRyLCBtX2dyYXBoLm1fZm9ybSAhPSBTU0EpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZl
cmJvc2UpIHsKKyAgICAgICAgaWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6
dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIHZhcmFyZ3MgZm9y
d2FyZGluZzpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KQEAg
LTg1LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gV2UgZXhwZWN0IGNhbGxzIGludG8g
dGhpcyBmdW5jdGlvbiB0byBiZSByYXJlLiBTbywgdGhpcyBpcyB3cml0dGVuIGluIGEgc2ltcGxl
IE8obikgbWFubmVyLgogICAgICAgICAKICAgICAgICAgTm9kZSogY2FuZGlkYXRlID0gYmxvY2st
PmF0KGNhbmRpZGF0ZU5vZGVJbmRleCk7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBp
ZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgZGF0YUxvZygiSGFuZGxpbmcgY2FuZGlkYXRlICIsIGNhbmRpZGF0ZSwgIlxuIik7CiAgICAg
ICAgIAogICAgICAgICAvLyBGaW5kIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBub2RlIGluIHRoaXMg
YmxvY2sgdG8gdXNlIHRoZSBjYW5kaWRhdGUsIGFuZCBsb29rIGZvciBlc2NhcGluZwpAQCAtMTIx
LDcgKzEyMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBzYXdFc2NhcGUg
PSB0cnVlOwogICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICBpZiAoc2F3
RXNjYXBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAg
ICAgICAgICBpZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEVzY2FwZSBhdCAiLCBub2RlLCAi
XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAg
LTEzOCw3ICsxNDAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFy
Z3M6CiAgICAgICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnc0lubGluZWRDYWxsZXI6CiAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpID09IGNhbmRpZGF0ZSB8fCBub2RlLT5jaGls
ZDIoKSA9PSBjYW5kaWRhdGUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgICAgICAgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRXNjYXBlIGF0
ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICAgICAgfQpAQCAtMTQ4LDcgKzE1MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICBjYXNlIFNldExvY2FsOgogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGls
ZDEoKSA9PSBjYW5kaWRhdGUgJiYgbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmlzTG9hZGVk
RnJvbSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAg
ICAgICAgICBpZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEVzY2FwZSBhdCAiLCBub2RlLCAi
XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAg
LTE1Niw3ICsxNTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC51c2VzKG5vZGUsIGNhbmRpZGF0
ZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAg
ICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRXNjYXBlIGF0ICIsIG5vZGUsICJcbiIp
OwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtMTY1
LDcgKzE2Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmb3JBbGxLaWxsZWRPcGVyYW5kcygK
ICAgICAgICAgICAgICAgICBtX2dyYXBoLCBub2RlLCBibG9jay0+dHJ5QXQobm9kZUluZGV4ICsg
MSksCiAgICAgICAgICAgICAgICAgWyZdIChWaXJ0dWFsUmVnaXN0ZXIgcmVnKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHVmFy
YXJnc0ZvcndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiICAgIEtpbGxpbmcgIiwgcmVnLCAiIHdoaWxlIHdlIGFyZSBpbnRlcmVz
dGVkIGluICIsIGxpc3REdW1wKHJlbGV2YW50TG9jYWxzKSwgIlxuIik7CiAgICAgICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWxldmFudExvY2Fscy5zaXplKCk7ICsr
aSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbGV2YW50TG9jYWxzW2ldID09IHJl
ZykgewpAQCAtMTc2LDcgKzE3OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgfQotICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgaWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgIGRhdGFMb2coIlNlbGVjdGVkIGxhc3RVc2VySW5kZXggPSAiLCBsYXN0VXNlcklu
ZGV4LCAiLCAiLCBibG9jay0+YXQobGFzdFVzZXJJbmRleCksICJcbiIpOwogICAgICAgICAKICAg
ICAgICAgLy8gV2UncmUgc3RpbGwgaW4gYnVzaW5lc3MuIERldGVybWluZSBpZiBiZXR3ZWVuIHRo
ZSBjYW5kaWRhdGUgYW5kIHRoZSBsYXN0IHVzZXIgdGhlcmUgaXMgYW55CkBAIC0xOTMsNyArMTk1
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgWm9tYmllSGludDoKICAgICAgICAgICAg
IGNhc2UgS2lsbFN0YWNrOgogICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudHNJbnZvbHZlU3Rh
Y2tTbG90KGNhbmRpZGF0ZSwgbm9kZS0+dW5saW5rZWRMb2NhbCgpKSkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR1ZhcmFyZ3NG
b3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBJbnRlcmZlcmVuY2UgYXQgIiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBAIC0yMDEsNyArMjAzLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgUHV0U3RhY2s6CiAg
ICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50c0ludm9sdmVTdGFja1Nsb3QoY2FuZGlkYXRlLCBu
b2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+bG9jYWwpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQ
aGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
ICAgIEludGVyZmVyZW5jZSBhdCAiLCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAgLTIxMCw3ICsyMTIsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgY2FzZSBTZXRMb2NhbDoKICAgICAgICAgICAgIGNhc2UgRmx1c2g6CiAgICAg
ICAgICAgICAgICAgaWYgKGFyZ3VtZW50c0ludm9sdmVTdGFja1Nsb3QoY2FuZGlkYXRlLCBub2Rl
LT5sb2NhbCgpKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBJbnRlcmZlcmVuY2UgYXQg
Iiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
ICAgICB9CkBAIC0yMzIsNyArMjM0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
fSwKICAgICAgICAgICAgICAgICAgICAgTm9PcENsb2JiZXJpemUoKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKGRvZXNJbnRlcmZlcmUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICAgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgSW50ZXJm
ZXJlbmNlIGF0ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICAgICAgfQpAQCAtMjQwLDcgKzI0Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIC8vIFdlIGNhbiBtYWtlIHRoaXMgd29yay4KLSAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgV2lsbCBkbyBmb3J3YXJkaW5nIVxu
Iik7CiAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwCmluZGV4IDkwMjExZmQ5NGFjNjE1YzY1
YzUxZDM0YzdkNTg4ZjRkOTNiMTI5YzcuLjliOTkxNGFlOGI4NTRkMDM1MjhhNmI4ODdiYTI4ODhl
NzllZGRkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJh
Y3RIZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cC5jcHAKQEAgLTM4LDggKzM4LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwg
ewogCi11c2luZyBuYW1lc3BhY2UgQjM7Ci0KIEFic3RyYWN0SGVhcDo6QWJzdHJhY3RIZWFwKEFi
c3RyYWN0SGVhcCogcGFyZW50LCBjb25zdCBjaGFyKiBoZWFwTmFtZSwgcHRyZGlmZl90IG9mZnNl
dCkKICAgICA6IG1fb2Zmc2V0KG9mZnNldCkKICAgICAsIG1faGVhcE5hbWUoaGVhcE5hbWUpCkBA
IC03Nyw3ICs3NSw3IEBAIHZvaWQgQWJzdHJhY3RIZWFwOjpjb21wdXRlKHVuc2lnbmVkIGJlZ2lu
KQogCiAgICAgaWYgKG1fY2hpbGRyZW4uaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIE11c3Qgc3Bl
Y2lhbC1jYXNlIGxlYXZlcyBzbyB0aGF0IHRoZXkgdXNlIGp1c3Qgb25lIHNsb3Qgb24gdGhlIG51
bWJlciBsaW5lLgotICAgICAgICBtX3JhbmdlID0gSGVhcFJhbmdlKGJlZ2luKTsKKyAgICAgICAg
bV9yYW5nZSA9IEIzOjpIZWFwUmFuZ2UoYmVnaW4pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC04Nyw3ICs4NSw3IEBAIHZvaWQgQWJzdHJhY3RIZWFwOjpjb21wdXRlKHVuc2lnbmVkIGJl
Z2luKQogICAgICAgICBjdXJyZW50ID0gY2hpbGQtPnJhbmdlKCkuZW5kKCk7CiAgICAgfQogCi0g
ICAgbV9yYW5nZSA9IEhlYXBSYW5nZShiZWdpbiwgY3VycmVudCk7CisgICAgbV9yYW5nZSA9IEIz
OjpIZWFwUmFuZ2UoYmVnaW4sIGN1cnJlbnQpOwogfQogCiB2b2lkIEFic3RyYWN0SGVhcDo6c2hh
bGxvd0R1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCmluZGV4IDU5MDNh
OGU1M2VkM2Q1NzUwZTFjNWNkZjAxMThkMjkyMmM1Y2NmOTIuLjQwY2M4YjgxNGMzMGU0MWM1MmNi
YzVjOTdiYjE4OGU0NjIwYzNhNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcApAQCAtNDcsOCArNDcsNiBAQAog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKLXVzaW5nIG5hbWVzcGFjZSBCMzsK
LQogQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeSgpCiAgICAg
OiByb290KG51bGxwdHIsICJqc2NSb290IikKIApAQCAtOTIsNDggKzkwLDQ5IEBAIEFic3RyYWN0
SGVhcFJlcG9zaXRvcnk6On5BYnN0cmFjdEhlYXBSZXBvc2l0b3J5KCkKIHsKIH0KIAotdm9pZCBB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZU1lbW9yeShjb25zdCBBYnN0cmFjdEhlYXAq
IGhlYXAsIFZhbHVlKiB2YWx1ZSkKK3ZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3Jh
dGVNZW1vcnkoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQogewog
ICAgIG1faGVhcEZvck1lbW9yeS5hcHBlbmQoSGVhcEZvclZhbHVlKGhlYXAsIHZhbHVlKSk7CiB9
CiAKLXZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVDQ2FsbFJlYWQoY29uc3Qg
QWJzdHJhY3RIZWFwKiBoZWFwLCBWYWx1ZSogdmFsdWUpCit2b2lkIEFic3RyYWN0SGVhcFJlcG9z
aXRvcnk6OmRlY29yYXRlQ0NhbGxSZWFkKGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwgQjM6OlZh
bHVlKiB2YWx1ZSkKIHsKICAgICBtX2hlYXBGb3JDQ2FsbFJlYWQuYXBwZW5kKEhlYXBGb3JWYWx1
ZShoZWFwLCB2YWx1ZSkpOwogfQogCi12b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29y
YXRlQ0NhbGxXcml0ZShjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIFZhbHVlKiB2YWx1ZSkKK3Zv
aWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVDQ2FsbFdyaXRlKGNvbnN0IEFic3Ry
YWN0SGVhcCogaGVhcCwgQjM6OlZhbHVlKiB2YWx1ZSkKIHsKICAgICBtX2hlYXBGb3JDQ2FsbFdy
aXRlLmFwcGVuZChIZWFwRm9yVmFsdWUoaGVhcCwgdmFsdWUpKTsKIH0KIAotdm9pZCBBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZVBhdGNocG9pbnRSZWFkKGNvbnN0IEFic3RyYWN0SGVh
cCogaGVhcCwgVmFsdWUqIHZhbHVlKQordm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNv
cmF0ZVBhdGNocG9pbnRSZWFkKGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwgQjM6OlZhbHVlKiB2
YWx1ZSkKIHsKICAgICBtX2hlYXBGb3JQYXRjaHBvaW50UmVhZC5hcHBlbmQoSGVhcEZvclZhbHVl
KGhlYXAsIHZhbHVlKSk7CiB9CiAKLXZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3Jh
dGVQYXRjaHBvaW50V3JpdGUoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBWYWx1ZSogdmFsdWUp
Cit2b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlUGF0Y2hwb2ludFdyaXRlKGNv
bnN0IEFic3RyYWN0SGVhcCogaGVhcCwgQjM6OlZhbHVlKiB2YWx1ZSkKIHsKICAgICBtX2hlYXBG
b3JQYXRjaHBvaW50V3JpdGUuYXBwZW5kKEhlYXBGb3JWYWx1ZShoZWFwLCB2YWx1ZSkpOwogfQog
Ci12b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlRmVuY2VSZWFkKGNvbnN0IEFi
c3RyYWN0SGVhcCogaGVhcCwgVmFsdWUqIHZhbHVlKQordm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5OjpkZWNvcmF0ZUZlbmNlUmVhZChjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIEIzOjpWYWx1
ZSogdmFsdWUpCiB7CiAgICAgbV9oZWFwRm9yRmVuY2VSZWFkLmFwcGVuZChIZWFwRm9yVmFsdWUo
aGVhcCwgdmFsdWUpKTsKIH0KIAotdm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0
ZUZlbmNlV3JpdGUoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBWYWx1ZSogdmFsdWUpCit2b2lk
IEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlRmVuY2VXcml0ZShjb25zdCBBYnN0cmFj
dEhlYXAqIGhlYXAsIEIzOjpWYWx1ZSogdmFsdWUpCiB7CiAgICAgbV9oZWFwRm9yRmVuY2VXcml0
ZS5hcHBlbmQoSGVhcEZvclZhbHVlKGhlYXAsIHZhbHVlKSk7CiB9CiAKLXZvaWQgQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5jZWRBY2Nlc3MoY29uc3QgQWJzdHJhY3RIZWFwKiBo
ZWFwLCBWYWx1ZSogdmFsdWUpCit2b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRl
RmVuY2VkQWNjZXNzKGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwgQjM6OlZhbHVlKiB2YWx1ZSkK
IHsKICAgICBtX2hlYXBGb3JGZW5jZWRBY2Nlc3MuYXBwZW5kKEhlYXBGb3JWYWx1ZShoZWFwLCB2
YWx1ZSkpOwogfQogCiB2b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmNvbXB1dGVSYW5nZXNB
bmREZWNvcmF0ZUluc3RydWN0aW9ucygpCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIEIzOwogICAg
IHJvb3QuY29tcHV0ZSgpOwogCiAgICAgaWYgKHZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKaW5kZXggNjc2YjM5MDljODdkMGRh
OTBjNWQ4ZGI2NjA4YWQyMTRjNTk4OTY2OS4uN2MwMTgxZDhkMWU0YjkzOGRlZTcwYWI5MWQ2NjJl
MDg0YzAyOTJhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5r
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCkBAIC00MSwx
MCArNDEsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKLXVzaW5nIG5h
bWVzcGFjZSBERkc7Ci0KIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiB7CisgICAgdXNpbmcgbmFt
ZXNwYWNlIERGRzsKICAgICBHcmFwaCYgZ3JhcGggPSBzdGF0ZS5ncmFwaDsKICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGdyYXBoLm1fY29kZUJsb2NrOwogICAgIFZNJiB2bSA9IGdyYXBoLm1f
dm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3Ry
YWludFNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWlu
dFNldC5jcHAKaW5kZXggMDFjMDZlNzVjNWIwMGVkMTA2OGU3YjRjZjFhNzI4YzU5NGNmOTFlMi4u
YzVhNmM2Njk3NTkyZjc5NDBlZmZhNTU2MTllZjMzYTBkNTAxZDZlZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcApAQCAtMjcs
NiArMjcsNyBAQAogI2luY2x1ZGUgIk1hcmtpbmdDb25zdHJhaW50U2V0LmgiCiAKICNpbmNsdWRl
ICJPcHRpb25zLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1Rp
bWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEwNiwxNSAr
MTA3LDE1IEBAIHZvaWQgTWFya2luZ0NvbnN0cmFpbnRTZXQ6OmRpZFN0YXJ0TWFya2luZygpCiAg
ICAgbV9pdGVyYXRpb24gPSAxOwogfQogCi12b2lkIE1hcmtpbmdDb25zdHJhaW50U2V0OjphZGQo
Q1N0cmluZyBhYmJyZXZpYXRlZE5hbWUsIENTdHJpbmcgbmFtZSwgRnVuY3Rpb248dm9pZChTbG90
VmlzaXRvciYsIGNvbnN0IFZpc2l0aW5nVGltZW91dCYpPiBmdW5jdGlvbiwgQ29uc3RyYWludFZv
bGF0aWxpdHkgdm9sYXRpbGl0eSkKK3ZvaWQgTWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZChDU3Ry
aW5nIGFiYnJldmlhdGVkTmFtZSwgQ1N0cmluZyBuYW1lLCA6OkZ1bmN0aW9uPHZvaWQoU2xvdFZp
c2l0b3ImLCBjb25zdCBWaXNpdGluZ1RpbWVvdXQmKT4gZnVuY3Rpb24sIENvbnN0cmFpbnRWb2xh
dGlsaXR5IHZvbGF0aWxpdHkpCiB7CiAgICAgYWRkKHN0ZDo6bWFrZV91bmlxdWU8TWFya2luZ0Nv
bnN0cmFpbnQ+KFdURk1vdmUoYWJicmV2aWF0ZWROYW1lKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92
ZShmdW5jdGlvbiksIHZvbGF0aWxpdHkpKTsKIH0KIAogdm9pZCBNYXJraW5nQ29uc3RyYWludFNl
dDo6YWRkKAogICAgIENTdHJpbmcgYWJicmV2aWF0ZWROYW1lLCBDU3RyaW5nIG5hbWUsCi0gICAg
RnVuY3Rpb248dm9pZChTbG90VmlzaXRvciYsIGNvbnN0IFZpc2l0aW5nVGltZW91dCYpPiBleGVj
dXRlRnVuY3Rpb24sCi0gICAgRnVuY3Rpb248ZG91YmxlKFNsb3RWaXNpdG9yJik+IHF1aWNrV29y
a0VzdGltYXRlRnVuY3Rpb24sCisgICAgOjpGdW5jdGlvbjx2b2lkKFNsb3RWaXNpdG9yJiwgY29u
c3QgVmlzaXRpbmdUaW1lb3V0Jik+IGV4ZWN1dGVGdW5jdGlvbiwKKyAgICA6OkZ1bmN0aW9uPGRv
dWJsZShTbG90VmlzaXRvciYpPiBxdWlja1dvcmtFc3RpbWF0ZUZ1bmN0aW9uLAogICAgIENvbnN0
cmFpbnRWb2xhdGlsaXR5IHZvbGF0aWxpdHkpCiB7CiAgICAgYWRkKHN0ZDo6bWFrZV91bmlxdWU8
TWFya2luZ0NvbnN0cmFpbnQ+KFdURk1vdmUoYWJicmV2aWF0ZWROYW1lKSwgV1RGTW92ZShuYW1l
KSwgV1RGTW92ZShleGVjdXRlRnVuY3Rpb24pLCBXVEZNb3ZlKHF1aWNrV29ya0VzdGltYXRlRnVu
Y3Rpb24pLCB2b2xhdGlsaXR5KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAKaW5kZXggYWU2ZTE4MzVlMmUyZTdhNDMwMGY3ZGZh
MGExMWIyODZkM2YxZmMzMS4uZjcwNjY2ZDg5NzBmNmM3MzMxNTkwNzgxNzdkM2VhM2M1NTgwYWI3
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0No
aWNrZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dD
aGlja2VuLmNwcApAQCAtMzMsNyArMzMsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFtZXNw
YWNlIFNoYWRvd0NoaWNrZW5JbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7Cit9CiAKIHZvaWQgU2hhZG93Q2hpY2tlbjo6UGFja2V0OjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0CiB7CkBAIC04Niw3ICs4OCw3IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6bG9n
KFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBQYWNrZXQmIHBhY2tldCkKIAogdm9pZCBT
aGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgaWYg
KHZlcmJvc2UpIHsKKyAgICBpZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKSB7CiAg
ICAgICAgIGRhdGFMb2coIlJ1bm5pbmcgdXBkYXRlIG9uOiAiLCAqdGhpcywgIlxuIik7CiAgICAg
ICAgIFdURlJlcG9ydEJhY2t0cmFjZSgpOwogICAgIH0KQEAgLTExMiwxMyArMTE0LDEzIEBAIHZv
aWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgICAg
ICB9CiAgICAgfQogICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlja2Vu
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkhpZ2hlc3QgcG9pbnQgc2luY2Ug
bGFzdCB0aW1lOiAiLCBSYXdQb2ludGVyKGhpZ2hlc3RQb2ludFNpbmNlTGFzdFRpbWUpLCAiXG4i
KTsKICAgICAKICAgICB3aGlsZSAoIW1fc3RhY2suaXNFbXB0eSgpICYmIChtX3N0YWNrLmxhc3Qo
KS5mcmFtZSA8IGhpZ2hlc3RQb2ludFNpbmNlTGFzdFRpbWUgfHwgbV9zdGFjay5sYXN0KCkuaXNU
YWlsRGVsZXRlZCkpCiAgICAgICAgIG1fc3RhY2sucmVtb3ZlTGFzdCgpOwogICAgIAotICAgIGlm
ICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgIGRhdGFMb2coIiAgICBSZXZpc2VkIHN0YWNrOiAiLCBsaXN0RHVtcChtX3N0YWNrKSwgIlxu
Iik7CiAgICAgCiAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSB0b3Agb2Ygc3RhY2sgaXMg
bm93IHRhaWwtZGVsZXRlZC4gVGhlIHN0YWNrIG5vIGxvbmdlciBjb250YWlucyBhbnkKQEAgLTE0
MSw3ICsxNDMsNyBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0
ZSogZXhlYykKICAgICB9CiAKICAgICAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoU2hhZG93
Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCIgICAgUmV2aXNlZCBz
dGFjazogIiwgbGlzdER1bXAobV9zdGFjayksICJcbiIpOwogICAgIAogICAgIC8vIFRoZSBsb2ct
YmFzZWQgYW5kIGV4ZWMtYmFzZWQgcnVsZXMgcmVxdWlyZSB0aGF0IFNoYWRvd0NoaWNrZW4gd2Fz
IGVuYWJsZWQuIFRoZSBwb2ludCBvZgpAQCAtMTY5LDcgKzE3MSw3IEBAIHZvaWQgU2hhZG93Q2hp
Y2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgfSk7CiAg
ICAgICAgIHN0YWNrUmlnaHROb3cucmV2ZXJzZSgpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgU3RhY2sgcmlnaHQgbm93OiAiLCBsaXN0RHVtcChzdGFja1Jp
Z2h0Tm93KSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCBzaGFkb3dJbmRleCA9
IDA7CkBAIC0xOTQsNyArMTk2LDcgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZt
LCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIH0KICAgICAgICAgbV9zdGFjay5yZXNpemUoc2hh
ZG93SW5kZXgpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChT
aGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
UmV2aXNlZCBzdGFjazogIiwgbGlzdER1bXAobV9zdGFjayksICJcbiIpOwogICAgIH0KICAgICAK
QEAgLTIwOCwxNyArMjEwLDE3IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwg
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGlmICh2ZXJib3Nl
KQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFM
b2coIiAgICBIaWdoZXN0IHBvaW50IHNpbmNlIGxhc3QgdGltZTogIiwgUmF3UG9pbnRlcihoaWdo
ZXN0UG9pbnRTaW5jZUxhc3RUaW1lKSwgIlxuIik7CiAgICAgCiAgICAgLy8gU2V0IGV2ZXJ5dGhp
bmcgdXAgc28gdGhhdCB3ZSBrbm93IHdoZXJlIHRoZSB0b3AgZnJhbWUgaXMgaW4gdGhlIGxvZy4K
ICAgICB1bnNpZ25lZCBpbmRleEluTG9nID0gbG9nQ3Vyc29ySW5kZXg7CiAgICAgCiAgICAgYXV0
byBhZHZhbmNlSW5kZXhJbkxvZ1RvID0gWyZdIChDYWxsRnJhbWUqIGZyYW1lLCBKU09iamVjdCog
Y2FsbGVlLCBDYWxsRnJhbWUqIGNhbGxlckZyYW1lKSAtPiBib29sIHsKLSAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgQWR2YW5jaW5nIHRvIGZyYW1lID0gIiwgUmF3UG9pbnRlcihm
cmFtZSksICIgZnJvbSBpbmRleEluTG9nID0gIiwgaW5kZXhJbkxvZywgIlxuIik7CiAgICAgICAg
IGlmIChpbmRleEluTG9nID4gbG9nQ3Vyc29ySW5kZXgpIHsKLSAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGluZy5cbiIpOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0yNDQsNyArMjQ2LDcgQEAgdm9pZCBTaGFkb3dDaGlj
a2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBpZiAocGFj
a2V0LmlzUHJvbG9ndWUoKSAmJiBwYWNrZXQuZnJhbWUgPT0gZnJhbWUKICAgICAgICAgICAgICAg
ICAmJiAoIWNhbGxlZSB8fCBwYWNrZXQuY2FsbGVlID09IGNhbGxlZSkKICAgICAgICAgICAgICAg
ICAmJiAoIWNhbGxlckZyYW1lIHx8IHBhY2tldC5jYWxsZXJGcmFtZSA9PSBjYWxsZXJGcmFtZSkp
IHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoU2hh
ZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgRm91bmQgYXQgaW5kZXhJbkxvZyA9ICIsIGluZGV4SW5Mb2csICJcbiIpOwogICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMjY2LDcgKzI2OCw3IEBA
IHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAg
ICAgICAvLyBJdCBzZWVtcyBsaWtlIHRoZSBsYXR0ZXIgb3B0aW9uIGlzIGxlc3MgaGFybWZ1bCwg
c28gdGhhdCdzIHdoYXQgd2UgZG8uCiAgICAgICAgIGluZGV4SW5Mb2cgPSBvbGRJbmRleEluTG9n
OwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChTaGFkb3dDaGlj
a2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRGlkbid0IGZp
bmQgaXQuXG4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH07CkBAIC0yODYsMTAgKzI4
OCwxMCBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSB2
aXNpdG9yLT5jYWxsRnJhbWUoKTsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAg
ICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgRXhhbWluaW5nICIsIFJhd1BvaW50ZXIoY2FsbEZyYW1lKSwgIlxuIik7CiAg
ICAgICAgICAgICBpZiAoY2FsbEZyYW1lID09IGhpZ2hlc3RQb2ludFNpbmNlTGFzdFRpbWUpIHsK
LSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoU2hhZG93
Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgQmFpbGluZyBhdCAiLCBSYXdQb2ludGVyKGNhbGxGcmFtZSksICIgYmVjYXVzZSBpdCdzIHRo
ZSBoaWdoZXN0IHBvaW50IHNpbmNlIGxhc3QgdGltZS5cbiIpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CiAgICAgICAgICAgICB9CkBAIC0zMTIsNyArMzE0LDcg
QEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgICAgICAgICAgLy8gVGhpcyBjb25kaXRpb24gcHJvdGVjdHMgdXMgZnJvbSB0aGUgY2Fz
ZSB3aGVyZSBhZHZhbmNlSW5kZXhJbkxvZ1RvIGRpZG4ndCBmaW5kCiAgICAgICAgICAgICAgICAg
Ly8gYW55dGhpbmcuCiAgICAgICAgICAgICAgICAgJiYgbV9sb2dbaW5kZXhJbkxvZ10uZnJhbWUg
PT0gdG9QdXNoLmxhc3QoKS5mcmFtZSkgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBHb2luZyB0byBsb29wIHRocm91Z2ggdG8gZmlu
ZCB0YWlsIGRlbGV0ZWQgZnJhbWVzIHdpdGggaW5kZXhJbkxvZyA9ICIsIGluZGV4SW5Mb2csICIg
YW5kIHB1c2gtc3RhY2sgdG9wID0gIiwgdG9QdXNoLmxhc3QoKSwgIlxuIik7CiAgICAgICAgICAg
ICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9sb2dbaW5kZXhJ
bkxvZ10uZnJhbWUgPT0gdG9QdXNoLmxhc3QoKS5mcmFtZSk7CkBAIC0zMzcsNyArMzM5LDcgQEAg
dm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
ICAgICAgICAgICAgICAgIGluZGV4SW5Mb2ctLTsgLy8gU2tpcCBvdmVyIHRoZSB0YWlsIHBhY2tl
dC4KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmICghYWR2YW5j
ZUluZGV4SW5Mb2dUbyh0YWlsUGFja2V0LmZyYW1lLCBudWxscHRyLCBudWxscHRyKSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2coIkNhbid0IGZpbmQgcHJvbG9ndWUgcGFja2V0IGZvciB0YWlsOiAi
LCBSYXdQb2ludGVyKHRhaWxQYWNrZXQuZnJhbWUpLCAiXG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFdlIHdlcmUgdW5hYmxlIHRvIGxvY2F0ZSB0aGUgcHJvbG9ndWUgcGFja2V0IGZv
ciB0aGlzIHRhaWwgcGFja2V0LgogICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBy
YXJlIGJ1dCBjYW4gaGFwcGVuIGluIGEgc2l0dWF0aW9uIGxpa2U6CkBAIC0zNTcsNyArMzU5LDcg
QEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKICAgICAgICAgfSk7CiAK
LSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICBkYXRhTG9nKCIgICAgUHVzaGluZzogIiwgbGlzdER1bXAodG9QdXNoKSwgIlxu
Iik7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gdG9QdXNoLnNpemUoKTsgaS0tOykKQEAg
LTM3Myw3ICszNzUsNyBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNT
dGF0ZSogZXhlYykKICAgICB9IGVsc2UKICAgICAgICAgbV9sb2dDdXJzb3IgPSBtX2xvZzsKIAot
ICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgIGRhdGFMb2coIiAgICBBZnRlciBwdXNoaW5nOiAiLCAqdGhpcywgIlxuIik7CiAK
ICAgICAvLyBSZW1vdmUgdGFpbCBmcmFtZXMgdW50aWwgdGhlIG51bWJlciBvZiB0YWlsIGRlbGV0
ZWQgZnJhbWVzIGlzIHNtYWxsIGVub3VnaC4KQEAgLTM5OSw3ICs0MDEsNyBAQCB2b2lkIFNoYWRv
d0NoaWNrZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgfQogICAg
IH0KIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgICBBZnRlciBjbGVhbi11cDogIiwgKnRoaXMsICJc
biIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0JpbmFyeVN3
aXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0JpbmFyeVN3aXRjaC5jcHAKaW5k
ZXggZjNkZGNmY2E5MjFjOTgxZWYyOGMwYjdkNmQ3YTUxZjVlZmQ1Mzg4Yi4uMGVhYjU2NTE5MjUz
MjllMTdiM2Y1Y2EyNWRiMTM0YWI0ZGQ5YTY3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9CaW5hcnlTd2l0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQmluYXJ5U3dpdGNoLmNwcApAQCAtMzMsNyArMzMsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAorbmFtZXNwYWNlIEJpbmFyeVN3aXRjaEludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZl
cmJvc2UgPSBmYWxzZTsKK30KIAogc3RhdGljIHVuc2lnbmVkIGdsb2JhbENvdW50ZXI7IC8vIFdl
IHVzZSBhIGRpZmZlcmVudCBzZWVkIGV2ZXJ5IHRpbWUgd2UgYXJlIGludm9rZWQuCiAKQEAgLTQ3
LDcgKzQ5LDcgQEAgQmluYXJ5U3dpdGNoOjpCaW5hcnlTd2l0Y2goR1BSUmVnIHZhbHVlLCBjb25z
dCBWZWN0b3I8aW50NjRfdD4mIGNhc2VzLCBUeXBlIHR5cGUKICAgICBpZiAoY2FzZXMuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQmluYXJ5
U3dpdGNoSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIk9yaWdpbmFsIGNhc2Vz
OiAiLCBsaXN0RHVtcChjYXNlcyksICJcbiIpOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBjYXNlcy5zaXplKCk7ICsraSkKQEAgLTU1LDcgKzU3LDcgQEAgQmluYXJ5U3dpdGNo
OjpCaW5hcnlTd2l0Y2goR1BSUmVnIHZhbHVlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGNhc2Vz
LCBUeXBlIHR5cGUKICAgICAKICAgICBzdGQ6OnNvcnQobV9jYXNlcy5iZWdpbigpLCBtX2Nhc2Vz
LmVuZCgpKTsKIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChCaW5hcnlTd2l0Y2hJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiU29ydGVkIGNhc2VzOiAiLCBsaXN0RHVtcCht
X2Nhc2VzKSwgIlxuIik7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IG1fY2Fz
ZXMuc2l6ZSgpOyArK2kpCkBAIC0xMzcsMTEgKzEzOSwxMSBAQCBib29sIEJpbmFyeVN3aXRjaDo6
YWR2YW5jZShNYWNyb0Fzc2VtYmxlciYgaml0KQogCiB2b2lkIEJpbmFyeVN3aXRjaDo6YnVpbGQo
dW5zaWduZWQgc3RhcnQsIGJvb2wgaGFyZFN0YXJ0LCB1bnNpZ25lZCBlbmQpCiB7Ci0gICAgaWYg
KHZlcmJvc2UpCisgICAgaWYgKEJpbmFyeVN3aXRjaEludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICBkYXRhTG9nKCJCdWlsZGluZyB3aXRoIHN0YXJ0ID0gIiwgc3RhcnQsICIsIGhhcmRTdGFydCA9
ICIsIGhhcmRTdGFydCwgIiwgZW5kID0gIiwgZW5kLCAiXG4iKTsKIAogICAgIGF1dG8gYXBwZW5k
ID0gWyZdIChjb25zdCBCcmFuY2hDb2RlJiBjb2RlKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICBpZiAoQmluYXJ5U3dpdGNoSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBk
YXRhTG9nKCI9PT4gIiwgY29kZSwgIlxuIik7CiAgICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKGNv
ZGUpOwogICAgIH07CkBAIC0xNTksNyArMTYxLDcgQEAgdm9pZCBCaW5hcnlTd2l0Y2g6OmJ1aWxk
KHVuc2lnbmVkIHN0YXJ0LCBib29sIGhhcmRTdGFydCwgdW5zaWduZWQgZW5kKQogICAgIGNvbnN0
IHVuc2lnbmVkIGxlYWZUaHJlc2hvbGQgPSAzOwogICAgIAogICAgIGlmIChzaXplIDw9IGxlYWZU
aHJlc2hvbGQpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCaW5hcnlTd2l0
Y2hJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkl0J3MgYSBsZWFmLlxu
Iik7CiAgICAgICAgIAogICAgICAgICAvLyBJdCB0dXJucyBvdXQgdGhhdCBmb3IgZXhhY3RseSB0
aHJlZSBjYXNlcyBvciBsZXNzLCBpdCdzIGJldHRlciB0byBqdXN0IGNvbXBhcmUgZWFjaApAQCAt
MTg2LDcgKzE4OCw3IEBAIHZvaWQgQmluYXJ5U3dpdGNoOjpidWlsZCh1bnNpZ25lZCBzdGFydCwg
Ym9vbCBoYXJkU3RhcnQsIHVuc2lnbmVkIGVuZCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQmluYXJ5U3dpdGNoSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJhbGxDb25zZWN1dGl2ZSA9ICIsIGFsbENv
bnNlY3V0aXZlLCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZCwgMz4g
bG9jYWxDYXNlSW5kaWNlczsKQEAgLTIxNCw3ICsyMTYsNyBAQCB2b2lkIEJpbmFyeVN3aXRjaDo6
YnVpbGQodW5zaWduZWQgc3RhcnQsIGJvb2wgaGFyZFN0YXJ0LCB1bnNpZ25lZCBlbmQpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQmluYXJ5U3dp
dGNoSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkl0J3Mgbm90IGEgbGVhZi5c
biIpOwogICAgICAgICAKICAgICAvLyBUaGVyZSBhcmUgdHdvIGRpZmZlcmVudCBzdHJhdGVnaWVz
IHdlIGNvdWxkIGNvbnNpZGVyIGhlcmU6CkBAIC0zMTQsNyArMzE2LDcgQEAgdm9pZCBCaW5hcnlT
d2l0Y2g6OmJ1aWxkKHVuc2lnbmVkIHN0YXJ0LCBib29sIGhhcmRTdGFydCwgdW5zaWduZWQgZW5k
KQogICAgICAgICAKICAgICB1bnNpZ25lZCBtZWRpYW5JbmRleCA9IChzdGFydCArIGVuZCkgLyAy
OwogCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEJpbmFyeVN3aXRjaEludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICBkYXRhTG9nKCJtZWRpYW5JbmRleCA9ICIsIG1lZGlhbkluZGV4LCAiXG4i
KTsKIAogICAgIC8vIFdlIHdhbnQgbWVkaWFuSW5kZXggdG8gcG9pbnQgdG8gdGhlIHRoaW5nIHdl
IHdpbGwgZG8gYSBsZXNzLXRoYW4gY29tcGFyZSBhZ2FpbnN0LiBXZSB3YW50CkBAIC0zNDcsNyAr
MzQ5LDcgQEAgdm9pZCBCaW5hcnlTd2l0Y2g6OmJ1aWxkKHVuc2lnbmVkIHN0YXJ0LCBib29sIGhh
cmRTdGFydCwgdW5zaWduZWQgZW5kKQogICAgIFJFTEVBU0VfQVNTRVJUKG1lZGlhbkluZGV4ID4g
c3RhcnQpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1lZGlhbkluZGV4ICsgMSA8IGVuZCk7CiAgICAg
ICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChCaW5hcnlTd2l0Y2hJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgZGF0YUxvZygiZml4ZWQgbWVkaWFuSW5kZXggPSAiLCBtZWRpYW5JbmRl
eCwgIlxuIik7CiAKICAgICBhcHBlbmQoQnJhbmNoQ29kZShMZXNzVGhhblRvUHVzaCwgbWVkaWFu
SW5kZXgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERh
dGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXgg
MWU0OWYyZjg1MzI1OGUzOTQxNjFjN2M0NDAwMzk5MzNmYWFhOTIxYy4uYWQ4NjlmMjBlMmU0ZDFi
OWFlMGRhNzg3NDgyZmI2ZmU3ZDI4YWZhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAKQEAgLTIyNSw3ICsyMjUsOSBAQCB2b2lkIERhdGE6OmZpbmFsaXplU3Rh
dHMoKQogfQogCiAjaWYgRU5BQkxFKExMSU5UX1NUQVRTKQorbmFtZXNwYWNlIExMSW50RGF0YUlu
dGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2VTdGF0cyA9IGZhbHNlOworfQogCiBz
dGF0aWMgYm9vbCBjb21wYXJlU3RhdHMoY29uc3QgT3Bjb2RlU3RhdHMmIGEsIGNvbnN0IE9wY29k
ZVN0YXRzJiBiKQogewpAQCAtMjgzLDcgKzI4NSw3IEBAIHZvaWQgRGF0YTo6bG9hZFN0YXRzKCkK
ICAgICB1bnNpZ25lZCBpbmRleDsKICAgICBjaGFyIG9wY29kZU5hbWVbMTAwXTsKICAgICB3aGls
ZSAoZnNjYW5mKGZpbGUsICJbJXVdOiBmYXN0OiV6dSBzbG93OiV6dSBpZDoldSAlc1xuIiwgJmlu
ZGV4LCAmbG9hZGVkLmNvdW50LCAmbG9hZGVkLnNsb3dQYXRoQ291bnQsICZsb2FkZWQuaWQsIG9w
Y29kZU5hbWUpICE9IEVPRikgewotICAgICAgICBpZiAodmVyYm9zZVN0YXRzKQorICAgICAgICBp
ZiAoTExJbnREYXRhSW50ZXJuYWw6OnZlcmJvc2VTdGF0cykKICAgICAgICAgICAgIGRhdGFMb2dG
KCJsb2FkZWQgWyV1XTogZmFzdCAlenUgc2xvdyAlenUgaWQ6JXUgJXNcbiIsIGluZGV4LCBsb2Fk
ZWQuY291bnQsIGxvYWRlZC5zbG93UGF0aENvdW50LCBsb2FkZWQuaWQsIG9wY29kZU5hbWUpOwog
CiAgICAgICAgIE9wY29kZVN0YXRzJiBzdGF0cyA9IG9wY29kZVN0YXRzKGxvYWRlZC5pZCk7CkBA
IC0yOTEsNyArMjkzLDcgQEAgdm9pZCBEYXRhOjpsb2FkU3RhdHMoKQogICAgICAgICBzdGF0cy5z
bG93UGF0aENvdW50ID0gbG9hZGVkLnNsb3dQYXRoQ291bnQ7CiAgICAgfQogCi0gICAgaWYgKHZl
cmJvc2VTdGF0cykgeworICAgIGlmIChMTEludERhdGFJbnRlcm5hbDo6dmVyYm9zZVN0YXRzKSB7
CiAgICAgICAgIGRhdGFMb2dGKCJBZnRlciBsb2FkaW5nIGZyb20gJXMsICIsIGZpbGVuYW1lKTsK
ICAgICAgICAgZHVtcFN0YXRzKCk7CiAgICAgfQpAQCAtMzMwLDcgKzMzMiw3IEBAIHZvaWQgRGF0
YTo6c2F2ZVN0YXRzKCkKICAgICAgICAgaWYgKCFzdGF0cy5jb3VudCAmJiAhc3RhdHMuc2xvd1Bh
dGhDb3VudCkKICAgICAgICAgICAgIGJyZWFrOyAvLyBzdGF0cyBhcmUgc29ydGVkLiBJZiB3ZSBl
bmNvdW50ZXJlZCAwIGNvdW50cywgdGhlbiB0aGVyZSBhcmUgbm8gbW9yZSBub24temVybyBjb3Vu
dHMuCiAKLSAgICAgICAgaWYgKHZlcmJvc2VTdGF0cykKKyAgICAgICAgaWYgKExMSW50RGF0YUlu
dGVybmFsOjp2ZXJib3NlU3RhdHMpCiAgICAgICAgICAgICBkYXRhTG9nRigic2F2ZWQgWyV1XTog
ZmFzdDolenUgc2xvdzolenUgaWQ6JXUgJXNcbiIsIGluZGV4LCBzdGF0cy5jb3VudCwgc3RhdHMu
c2xvd1BhdGhDb3VudCwgc3RhdHMuaWQsIG9wY29kZU5hbWVzW3N0YXRzLmlkXSk7CiAKICAgICAg
ICAgZnByaW50ZihmaWxlLCAiWyV1XTogZmFzdDolenUgc2xvdzolenUgaWQ6JXUgJXNcbiIsIGlu
ZGV4LCBzdGF0cy5jb3VudCwgc3RhdHMuc2xvd1BhdGhDb3VudCwgc3RhdHMuaWQsIG9wY29kZU5h
bWVzW3N0YXRzLmlkXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eVByb3RvdHlwZS5jcHAKaW5kZXggOGY3MTE3YjdmNjE0MmJhMDZhZTcxY2U3Y2U2ZGRmM2ExNjdl
NzcxNy4uM2I3MWEzMDk2N2VhMzk4ZDU5MjkyYjM5OWNiM2VkYjU2MDVhNGIxNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMTM2
Niw3ICsxMzY2LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvUHJp
dmF0ZUZ1bmNBcHBlbmRNZW1jcHkoRXhlY1N0YXRlKiBleGVjKQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLSBBcnJheVByb3RvdHlwZS5jb25zdHJ1Y3RvciBXYXRjaHBvaW50IC0tLS0tLS0tLS0t
LS0tLS0tLQogCituYW1lc3BhY2UgQXJyYXlQcm90b3R5cGVJbnRlcm5hbCB7CiBzdGF0aWMgYm9v
bCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIEFycmF5UHJvdG90eXBlQWRhcHRpdmVJbmZl
cnJlZFByb3BlcnR5V2F0Y2hwb2ludCA6IHB1YmxpYyBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlW
YWx1ZVdhdGNocG9pbnRCYXNlIHsKIHB1YmxpYzoKQEAgLTEzODgsNyArMTM5MCw3IEBAIHZvaWQg
QXJyYXlQcm90b3R5cGU6OnRyeUluaXRpYWxpemVTcGVjaWVzV2F0Y2hwb2ludChFeGVjU3RhdGUq
IGV4ZWMpCiAKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQXJyYXlQcm90b3R5cGVJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgZGF0YUxvZygiSW5pdGlhbGl6aW5nIEFycmF5IHNwZWNpZXMgd2F0Y2hwb2ludHMg
Zm9yIEFycmF5LnByb3RvdHlwZTogIiwgcG9pbnRlckR1bXAodGhpcyksICIgd2l0aCBzdHJ1Y3R1
cmU6ICIsIHBvaW50ZXJEdW1wKHRoaXMtPnN0cnVjdHVyZSgpKSwgIlxuYW5kIEFycmF5OiAiLCBw
b2ludGVyRHVtcCh0aGlzLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlDb25zdHJ1Y3RvcigpKSwgIiB3
aXRoIHN0cnVjdHVyZTogIiwgcG9pbnRlckR1bXAodGhpcy0+Z2xvYmFsT2JqZWN0KCktPmFycmF5
Q29uc3RydWN0b3IoKS0+c3RydWN0dXJlKCkpLCAiXG4iKTsKICAgICAvLyBGaXJzdCB3ZSBuZWVk
IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBBcnJheS5wcm90b3R5cGUuY29uc3RydWN0b3IgcHJvcGVy
dHkgcG9pbnRzIHRvIEFycmF5CiAgICAgLy8gYW5kIHRoYXQgQXJyYXlbU3ltYm9sLnNwZWNpZXNd
IGlzIHRoZSBwcmltb3JkaWFsIEdldHRlclNldHRlci4KQEAgLTE0NjYsNyArMTQ2OCw3IEBAIHZv
aWQgQXJyYXlQcm90b3R5cGVBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlXYXRjaHBvaW50OjpoYW5k
bGVGaXJlKGNvbnN0IEZpcmVEZXRhCiAKICAgICBTdHJpbmdGaXJlRGV0YWlsIHN0cmluZ0RldGFp
bChvdXQudG9DU3RyaW5nKCkuZGF0YSgpKTsKIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChB
cnJheVByb3RvdHlwZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBXVEY6OmRhdGFMb2coc3Ry
aW5nRGV0YWlsLCAiXG4iKTsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2FycmF5UHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKaW5kZXggNTQ5M2Y4ZjcwYTM1NzMyMWYxNjdk
ZTFjNTJiNGYzNTI5OTg4MDQ4Yy4uZmM4Yjg0ODJiZWZkNmIwYzA3NGI0ZWU4ZmQyN2JhYTIyMjU4
YjA4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0
YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5j
ZS5jcHAKQEAgLTEwOCw0MSArMTA4LDYgQEAgc3RhdGljIHZvaWQgYXBwZW5kU291cmNlVG9FcnJv
cihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRXJyb3JJbnN0YW5jZSogZXhjZXB0aW9uLAogCiB9CiAK
LWNsYXNzIEZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3IgewotcHVibGlj
OgotICAgIEZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3IoQ2FsbEZyYW1l
KiBzdGFydENhbGxGcmFtZSkKLSAgICAgICAgOiBtX3N0YXJ0Q2FsbEZyYW1lKHN0YXJ0Q2FsbEZy
YW1lKQotICAgICAgICAsIG1fZm91bmRDYWxsRnJhbWUobnVsbHB0cikKLSAgICAgICAgLCBtX2Zv
dW5kU3RhcnRDYWxsRnJhbWUoZmFsc2UpCi0gICAgICAgICwgbV9pbmRleCgwKQotICAgIHsgfQot
Ci0gICAgU3RhY2tWaXNpdG9yOjpTdGF0dXMgb3BlcmF0b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0
b3IpCi0gICAgewotICAgICAgICBpZiAoIW1fZm91bmRTdGFydENhbGxGcmFtZSAmJiAodmlzaXRv
ci0+Y2FsbEZyYW1lKCkgPT0gbV9zdGFydENhbGxGcmFtZSkpCi0gICAgICAgICAgICBtX2ZvdW5k
U3RhcnRDYWxsRnJhbWUgPSB0cnVlOwotCi0gICAgICAgIGlmIChtX2ZvdW5kU3RhcnRDYWxsRnJh
bWUpIHsKLSAgICAgICAgICAgIGlmICh2aXNpdG9yLT5jYWxsRnJhbWUoKS0+Y29kZUJsb2NrKCkp
IHsKLSAgICAgICAgICAgICAgICBtX2ZvdW5kQ2FsbEZyYW1lID0gdmlzaXRvci0+Y2FsbEZyYW1l
KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIG1faW5kZXgrKzsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVy
biBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwotICAgIH0KLQotICAgIENhbGxGcmFtZSogZm91bmRD
YWxsRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZvdW5kQ2FsbEZyYW1lOyB9Ci0gICAgdW5zaWdu
ZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9Ci0KLXByaXZhdGU6Ci0gICAgQ2Fs
bEZyYW1lKiBtX3N0YXJ0Q2FsbEZyYW1lOwotICAgIENhbGxGcmFtZSogbV9mb3VuZENhbGxGcmFt
ZTsKLSAgICBib29sIG1fZm91bmRTdGFydENhbGxGcmFtZTsKLSAgICB1bnNpZ25lZCBtX2luZGV4
OwotfTsKLQogdm9pZCBFcnJvckluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIFZNJiB2bSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBib29sIHVzZUN1cnJlbnRGcmFtZSkK
IHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAppbmRleCA3ZWYwMDA4ZDgz
N2NjZjkxMzcxNGYzYTM1YzM5NTUxOTk4YjZmOTdmLi5hYzc2OTc3YTk1NWY2YmM5ZDZlYzAyMDdi
MjI0MjVjMWE5YmI5NTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKQEAgLTQ5LDcgKzQ5LDEwIEBAIG5hbWVzcGFjZSBK
U0MgewogCiBjb25zdCBDbGFzc0luZm8gSW50bERhdGVUaW1lRm9ybWF0OjpzX2luZm8gPSB7ICJP
YmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEludGxEYXRlVGltZUZvcm1hdCkgfTsKIAorbmFtZXNwYWNlIEludGxEVEZJbnRlcm5hbCB7
CiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgcmVsZXZhbnRFeHRlbnNpb25LZXlzWzJdID0geyAi
Y2EiLCAibnUiIH07Cit9CisKIHN0YXRpYyBjb25zdCBzaXplX3QgaW5kZXhPZkV4dGVuc2lvbktl
eUNhID0gMDsKIHN0YXRpYyBjb25zdCBzaXplX3QgaW5kZXhPZkV4dGVuc2lvbktleU51ID0gMTsK
IApAQCAtNDUwLDcgKzQ1Myw3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXpl
RGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIGxvY2FsCiAgICAgLy8gMTEu
IExldCBsb2NhbGVEYXRhIGJlIHRoZSB2YWx1ZSBvZiAlRGF0ZVRpbWVGb3JtYXQlLltbbG9jYWxl
RGF0YV1dLgogICAgIC8vIDEyLiBMZXQgciBiZSBSZXNvbHZlTG9jYWxlKCAlRGF0ZVRpbWVGb3Jt
YXQlLltbYXZhaWxhYmxlTG9jYWxlc11dLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHQsICVEYXRlVGlt
ZUZvcm1hdCUuW1tyZWxldmFudEV4dGVuc2lvbktleXNdXSwgbG9jYWxlRGF0YSkuCiAgICAgY29u
c3QgSGFzaFNldDxTdHJpbmc+IGF2YWlsYWJsZUxvY2FsZXMgPSBleGVjLmpzQ2FsbGVlKCktPmds
b2JhbE9iamVjdCgpLT5pbnRsRGF0ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCk7Ci0gICAg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcmVzb2x2ZWQgPSByZXNvbHZlTG9jYWxlKGV4ZWMsIGF2
YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGxvY2FsZU9wdCwgcmVsZXZhbnRFeHRl
bnNpb25LZXlzLCBXVEZfQVJSQVlfTEVOR1RIKHJlbGV2YW50RXh0ZW5zaW9uS2V5cyksIGxvY2Fs
ZURhdGEpOworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHJlc29sdmVkID0gcmVzb2x2ZUxv
Y2FsZShleGVjLCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBsb2NhbGVPcHQs
IEludGxEVEZJbnRlcm5hbDo6cmVsZXZhbnRFeHRlbnNpb25LZXlzLCBXVEZfQVJSQVlfTEVOR1RI
KEludGxEVEZJbnRlcm5hbDo6cmVsZXZhbnRFeHRlbnNpb25LZXlzKSwgbG9jYWxlRGF0YSk7CiAK
ICAgICAvLyAxMy4gU2V0IGRhdGVUaW1lRm9ybWF0LltbbG9jYWxlXV0gdG8gdGhlIHZhbHVlIG9m
IHIuW1tsb2NhbGVdXS4KICAgICBtX2xvY2FsZSA9IHJlc29sdmVkLmdldCh2bS5wcm9wZXJ0eU5h
bWVzLT5sb2NhbGUuc3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5jcHAKaW5kZXggMGFiYzUzMDg2
OTdlYjI1MzQxZmFkMTJmMDNkZTA4YzBhMWYxNWY0NS4uNzhjOWU2NDA0ZjFiZjFkMzlkNTY0OGNk
NGE0OWVjNDZjMmEwNjAwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCisjdW5kZWYgTUFLRV9TX0lORk8KICNkZWZpbmUgTUFLRV9T
X0lORk8odHlwZSkgXAogICAgIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTIyN0eXBlIyND
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyJGdW5jdGlvbiIsICZKUyMjdHlwZSMjQ29uc3RydWN0b3I6
OkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKUyMj
dHlwZSMjQ29uc3RydWN0b3IpfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGVkQXJyYXlQcm90b3R5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwCmluZGV4IDY2ZDc0ZTY5ZWNhNGYx
NzI1ZTgyYzEyZWFkM2FkZGUyNGJlOTI5ZmEuLmIxNDM0NTViMGQxMWNkMzkyZTUyMWMwYjhiMGE4
MmEwMzJhODRiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZWRBcnJheVByb3RvdHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogY29uc3QgQ2xhc3NJbmZvIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU6OnNfaW5m
byA9IHsiUHJvdG90eXBlIiwgJkpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU6OkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwKICAgICBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGUpfTsKIAorI3VuZGVmIE1BS0VfU19JTkZPCiAjZGVmaW5lIE1BS0VfU19J
TkZPKHR5cGUpIFwKICAgICB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKUyMjdHlwZSMjUHJv
dG90eXBlOjpzX2luZm8gPSB7I3R5cGUgIlByb3RvdHlwZSIsICZKUyMjdHlwZSMjUHJvdG90eXBl
OjpCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlMj
I3R5cGUjI1Byb3RvdHlwZSl9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcAppbmRleCAzZGNhZWFhZmU1YjM4ZmJhNWJh
OGFmOTc2NjBmNTFiYzY1OWZkMjQ1Li4wODc4MDQ2OTVjZGYzNWE3NDk0YmJkNTg5NDQyOTA0ZWI5
Y2E3MDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNl
RGVmZXJyZWRUaW1lci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
bWlzZURlZmVycmVkVGltZXIuY3BwCkBAIC0zNCw3ICszNCw5IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCituYW1lc3BhY2UgUHJvbWlzZURlZmVycmVkVGltZXJJbnRlcm5hbCB7CiBzdGF0aWMgY29u
c3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIFByb21pc2VEZWZlcnJlZFRpbWVyOjpQcm9t
aXNlRGVmZXJyZWRUaW1lcihWTSYgdm0pCiAgICAgOiBCYXNlKCZ2bSkKQEAgLTU1LDcgKzU3LDcg
QEAgdm9pZCBQcm9taXNlRGVmZXJyZWRUaW1lcjo6ZG9Xb3JrKCkKICAgICAgICAgSlNQcm9taXNl
RGVmZXJyZWQqIHRpY2tldDsKICAgICAgICAgVGFzayB0YXNrOwogICAgICAgICBzdGQ6OnRpZSh0
aWNrZXQsIHRhc2spID0gbV90YXNrcy50YWtlTGFzdCgpOwotICAgICAgICBkYXRhTG9nTG5JZih2
ZXJib3NlLCAiRG9pbmcgd29yayBvbiBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwor
ICAgICAgICBkYXRhTG9nTG5JZihQcm9taXNlRGVmZXJyZWRUaW1lckludGVybmFsOjp2ZXJib3Nl
LCAiRG9pbmcgd29yayBvbiBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwogCiAgICAg
ICAgIC8vIFdlIG1heSBoYXZlIGFscmVhZHkgY2FuY2VsZWQgdGhlc2UgcHJvbWlzZXMuCiAgICAg
ICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5jb250YWlucyh0aWNrZXQpKSB7CkBAIC0xMDUsMTEg
KzEwNywxMSBAQCB2b2lkIFByb21pc2VEZWZlcnJlZFRpbWVyOjphZGRQZW5kaW5nUHJvbWlzZShK
U1Byb21pc2VEZWZlcnJlZCogdGlja2V0LCBWZWN0b3I8UwogCiAgICAgYXV0byByZXN1bHQgPSBt
X3BlbmRpbmdQcm9taXNlcy5hZGQodGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+KCkpOwog
ICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3Nl
LCAiQWRkaW5nIG5ldyBwZW5kaW5nIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7Cisg
ICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VEZWZlcnJlZFRpbWVySW50ZXJuYWw6OnZlcmJvc2Us
ICJBZGRpbmcgbmV3IHBlbmRpbmcgcHJvbWlzZTogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKICAg
ICAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPigqbV92bSwgdGlja2V0KSk7
CiAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGRlcGVuZGVuY2llcyk7
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIkFkZGluZyBuZXcg
ZGVwZW5kZW5jaWVzIGZvciBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworICAgICAg
ICBkYXRhTG9nTG5JZihQcm9taXNlRGVmZXJyZWRUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQWRk
aW5nIG5ldyBkZXBlbmRlbmNpZXMgZm9yIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7
CiAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kVmVjdG9yKGRlcGVuZGVuY2ll
cyk7CiAgICAgfQogCkBAIC0xMjQsNyArMTI2LDcgQEAgYm9vbCBQcm9taXNlRGVmZXJyZWRUaW1l
cjo6Y2FuY2VsUGVuZGluZ1Byb21pc2UoSlNQcm9taXNlRGVmZXJyZWQqIHRpY2tldCkKICAgICBi
b29sIHJlc3VsdCA9IG1fcGVuZGluZ1Byb21pc2VzLnJlbW92ZSh0aWNrZXQpOwogCiAgICAgaWYg
KHJlc3VsdCkKLSAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIkNhbmNlbGluZyBwcm9taXNl
OiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworICAgICAgICBkYXRhTG9nTG5JZihQcm9taXNlRGVm
ZXJyZWRUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQ2FuY2VsaW5nIHByb21pc2U6ICIsIFJhd1Bv
aW50ZXIodGlja2V0KSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlci5jcHAKaW5kZXggZTMxNWM0MTJiOTMzMzBi
MDVhZjY2NDA3MGNhMTE2Y2Q1M2U5MmRiNy4uMGY4NWVmODgyODVjMmU4YjgxZDVmZjAwYmNhYTJi
OTljZjZkYzgwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlw
ZVByb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJv
ZmlsZXIuY3BwCkBAIC0zMiw3ICszMiw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCituYW1lc3Bh
Y2UgVHlwZVByb2ZpbGVySW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZh
bHNlOworfQogCiBUeXBlUHJvZmlsZXI6OlR5cGVQcm9maWxlcigpCiAgICAgOiBtX25leHRVbmlx
dWVWYXJpYWJsZUlEKDEpCkBAIC01OSw3ICs2MSw3IEBAIHZvaWQgVHlwZVByb2ZpbGVyOjpsb2dU
eXBlc0ZvclR5cGVMb2NhdGlvbihUeXBlTG9jYXRpb24qIGxvY2F0aW9uLCBWTSYgdm0pCiAKIHZv
aWQgVHlwZVByb2ZpbGVyOjppbnNlcnROZXdMb2NhdGlvbihUeXBlTG9jYXRpb24qIGxvY2F0aW9u
KQogewotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChUeXBlUHJvZmlsZXJJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgZGF0YUxvZ0YoIlJlZ2lzdGVyaW5nIGxvY2F0aW9uOjogZGl2b3RTdGFy
dDoldSwgZGl2b3RFbmQ6JXVcbiIsIGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQsIGxvY2F0aW9uLT5t
X2Rpdm90RW5kKTsKIAogICAgIGlmICghbV9idWNrZXRNYXAuY29udGFpbnMobG9jYXRpb24tPm1f
c291cmNlSUQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
eXBlUHJvZmlsZXJMb2cuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVBy
b2ZpbGVyTG9nLmNwcAppbmRleCA4NWM0OWQwNDZiYWZlYWM3YzJmZGVhMjE1MjU4ZDNjNDRlZmNk
MTE1Li41M2Q3M2U4OGIxNGUzODZiNzM3OGI4ODI0N2I3NzY5NjRmNmI1N2VmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHAKQEAgLTM3
LDcgKzM3LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK25hbWVzcGFjZSBUeXBlUHJvZmlsZXJM
b2dJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIHZv
aWQgVHlwZVByb2ZpbGVyTG9nOjppbml0aWFsaXplTG9nKCkKIHsKQEAgLTU2LDcgKzU4LDcgQEAg
VHlwZVByb2ZpbGVyTG9nOjp+VHlwZVByb2ZpbGVyTG9nKCkKIHZvaWQgVHlwZVByb2ZpbGVyTG9n
Ojpwcm9jZXNzTG9nRW50cmllcyhjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKICAgICBkb3VibGUg
YmVmb3JlID0gMDsKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChUeXBlUHJvZmlsZXJMb2dJ
bnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICBkYXRhTG9nKCJQcm9jZXNzIGNhbGxlcjonIiwg
cmVhc29uLCAiJyIpOwogICAgICAgICBiZWZvcmUgPSBjdXJyZW50VGltZU1TKCk7CiAgICAgfQpA
QCAtOTUsNyArOTcsNyBAQCB2b2lkIFR5cGVQcm9maWxlckxvZzo6cHJvY2Vzc0xvZ0VudHJpZXMo
Y29uc3QgU3RyaW5nJiByZWFzb24pCiAgICAgLy8gcGF1c2VzIGFuZCBjYXVzZXMgdGhlIGNvbGxl
Y3RvciB0byBtYXJrIHRoZSBsb2cuCiAgICAgbV9jdXJyZW50TG9nRW50cnlQdHIgPSBtX2xvZ1N0
YXJ0UHRyOwogCi0gICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoVHlwZVByb2ZpbGVyTG9nSW50
ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZG91YmxlIGFmdGVyID0gY3VycmVudFRpbWVNUygp
OwogICAgICAgICBkYXRhTG9nRigiIFByb2Nlc3NpbmcgdGhlIGxvZyB0b29rOiAnJWYnIG1zXG4i
LCBhZnRlciAtIGJlZm9yZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IDAwYWMzYzFhZGJkN2FjODJkMjE1OTBmNjAx
MjhiOTRhNDAwYzYyOGUuLmFkN2Q2MjFlYzg3ODg1YWMwMzZkODEzMTNkNWIwZmEwOTFhNGVmOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5j
cHAKQEAgLTc2LDcgKzc2LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIHVz
aW5nIG5hbWVzcGFjZSBCMzsKIAogbmFtZXNwYWNlIHsKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZh
bHNlOworbmFtZXNwYWNlIFdhc21CM0lSR2VuZXJhdG9ySW50ZXJuYWwgeworc3RhdGljIGNvbnN0
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogfQogCiBjbGFzcyBCM0lSR2VuZXJhdG9yIHsKQEAg
LTE1NjYsOSArMTU2OCw5IEBAIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0
aW9uPiwgU3RyaW5nPiBwYXJzZUFuZENvbXBpbGUoQ29tcGlsYXRpb25DCiAgICAgaWYgKCFBU1NF
UlRfRElTQUJMRUQpCiAgICAgICAgIHZhbGlkYXRlKHByb2NlZHVyZSwgIkFmdGVyIHBhcnNpbmc6
XG4iKTsKIAotICAgIGRhdGFMb2dJZih2ZXJib3NlLCAiUHJlIFNTQTogIiwgcHJvY2VkdXJlKTsK
KyAgICBkYXRhTG9nSWYoV2FzbUIzSVJHZW5lcmF0b3JJbnRlcm5hbDo6dmVyYm9zZSwgIlByZSBT
U0E6ICIsIHByb2NlZHVyZSk7CiAgICAgZml4U1NBKHByb2NlZHVyZSk7Ci0gICAgZGF0YUxvZ0lm
KHZlcmJvc2UsICJQb3N0IFNTQTogIiwgcHJvY2VkdXJlKTsKKyAgICBkYXRhTG9nSWYoV2FzbUIz
SVJHZW5lcmF0b3JJbnRlcm5hbDo6dmVyYm9zZSwgIlBvc3QgU1NBOiAiLCBwcm9jZWR1cmUpOwog
ICAgIAogICAgIHsKICAgICAgICAgQjM6OnByZXBhcmVGb3JHZW5lcmF0aW9uKHByb2NlZHVyZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKaW5kZXggNTBmZWI3
MzBiMDBmZGQ5ZDBmMDE2ZTM2NjkwODEwNzIyZGJhZGIxNS4uMjJlZGQxNjAxM2U1MTk2ZmU3NGFi
ZGQ4NDBjNmU0YmNjOTc1MGQwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUJCUVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21C
QlFQbGFuLmNwcApAQCAtNDksNyArNDksOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IFdhc20gewogCituYW1lc3BhY2UgV2FzbUJCUVBsYW5JbnRlcm5hbCB7CiBzdGF0aWMgY29uc3Qg
Ym9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIEJCUVBsYW46OkJCUVBsYW4oVk0qIHZtLCBSZWY8
TW9kdWxlSW5mb3JtYXRpb24+IGluZm8sIEFzeW5jV29yayB3b3JrLCBDb21wbGV0aW9uVGFzayYm
IHRhc2spCiAgICAgOiBCYXNlKHZtLCBXVEZNb3ZlKGluZm8pLCBXVEZNb3ZlKHRhc2spKQpAQCAt
ODYsNyArODgsNyBAQCBjb25zdCBjaGFyKiBCQlFQbGFuOjpzdGF0ZVN0cmluZyhTdGF0ZSBzdGF0
ZSkKIHZvaWQgQkJRUGxhbjo6bW92ZVRvU3RhdGUoU3RhdGUgc3RhdGUpCiB7CiAgICAgQVNTRVJU
KHN0YXRlID49IG1fc3RhdGUpOwotICAgIGRhdGFMb2dMbklmKHZlcmJvc2UgJiYgc3RhdGUgIT0g
bV9zdGF0ZSwgIm1vdmluZyB0byBzdGF0ZTogIiwgc3RhdGVTdHJpbmcoc3RhdGUpLCAiIGZyb20g
c3RhdGU6ICIsIHN0YXRlU3RyaW5nKG1fc3RhdGUpKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtQkJR
UGxhbkludGVybmFsOjp2ZXJib3NlICYmIHN0YXRlICE9IG1fc3RhdGUsICJtb3ZpbmcgdG8gc3Rh
dGU6ICIsIHN0YXRlU3RyaW5nKHN0YXRlKSwgIiBmcm9tIHN0YXRlOiAiLCBzdGF0ZVN0cmluZyht
X3N0YXRlKSk7CiAgICAgbV9zdGF0ZSA9IHN0YXRlOwogfQogCkBAIC05NSw5ICs5Nyw5IEBAIGJv
b2wgQkJRUGxhbjo6cGFyc2VBbmRWYWxpZGF0ZU1vZHVsZSgpCiAgICAgaWYgKG1fc3RhdGUgIT0g
U3RhdGU6OkluaXRpYWwpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgZGF0YUxvZ0xuSWYo
dmVyYm9zZSwgInN0YXJ0aW5nIHZhbGlkYXRpb24iKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtQkJR
UGxhbkludGVybmFsOjp2ZXJib3NlLCAic3RhcnRpbmcgdmFsaWRhdGlvbiIpOwogICAgIE1vbm90
b25pY1RpbWUgc3RhcnRUaW1lOwotICAgIGlmICh2ZXJib3NlIHx8IE9wdGlvbnM6OnJlcG9ydENv
bXBpbGVUaW1lcygpKQorICAgIGlmIChXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlIHx8IE9w
dGlvbnM6OnJlcG9ydENvbXBpbGVUaW1lcygpKQogICAgICAgICBzdGFydFRpbWUgPSBNb25vdG9u
aWNUaW1lOjpub3coKTsKIAogICAgIHsKQEAgLTExMSw3ICsxMTMsNyBAQCBib29sIEJCUVBsYW46
OnBhcnNlQW5kVmFsaWRhdGVNb2R1bGUoKQogCiAgICAgY29uc3QgYXV0byYgZnVuY3Rpb25Mb2Nh
dGlvbnMgPSBtX21vZHVsZUluZm9ybWF0aW9uLT5mdW5jdGlvbkxvY2F0aW9uSW5CaW5hcnk7CiAg
ICAgZm9yICh1bnNpZ25lZCBmdW5jdGlvbkluZGV4ID0gMDsgZnVuY3Rpb25JbmRleCA8IGZ1bmN0
aW9uTG9jYXRpb25zLnNpemUoKTsgKytmdW5jdGlvbkluZGV4KSB7Ci0gICAgICAgIGRhdGFMb2dM
bklmKHZlcmJvc2UsICJQcm9jZXNzaW5nIGZ1bmN0aW9uIHN0YXJ0aW5nIGF0OiAiLCBmdW5jdGlv
bkxvY2F0aW9uc1tmdW5jdGlvbkluZGV4XS5zdGFydCwgIiBhbmQgZW5kaW5nIGF0OiAiLCBmdW5j
dGlvbkxvY2F0aW9uc1tmdW5jdGlvbkluZGV4XS5lbmQpOworICAgICAgICBkYXRhTG9nTG5JZihX
YXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlLCAiUHJvY2Vzc2luZyBmdW5jdGlvbiBzdGFydGlu
ZyBhdDogIiwgZnVuY3Rpb25Mb2NhdGlvbnNbZnVuY3Rpb25JbmRleF0uc3RhcnQsICIgYW5kIGVu
ZGluZyBhdDogIiwgZnVuY3Rpb25Mb2NhdGlvbnNbZnVuY3Rpb25JbmRleF0uZW5kKTsKICAgICAg
ICAgY29uc3QgdWludDhfdCogZnVuY3Rpb25TdGFydCA9IG1fc291cmNlICsgZnVuY3Rpb25Mb2Nh
dGlvbnNbZnVuY3Rpb25JbmRleF0uc3RhcnQ7CiAgICAgICAgIHNpemVfdCBmdW5jdGlvbkxlbmd0
aCA9IGZ1bmN0aW9uTG9jYXRpb25zW2Z1bmN0aW9uSW5kZXhdLmVuZCAtIGZ1bmN0aW9uTG9jYXRp
b25zW2Z1bmN0aW9uSW5kZXhdLnN0YXJ0OwogICAgICAgICBBU1NFUlQoZnVuY3Rpb25MZW5ndGgg
PD0gbV9zb3VyY2VMZW5ndGgpOwpAQCAtMTIwLDcgKzEyMiw3IEBAIGJvb2wgQkJRUGxhbjo6cGFy
c2VBbmRWYWxpZGF0ZU1vZHVsZSgpCiAKICAgICAgICAgYXV0byB2YWxpZGF0aW9uUmVzdWx0ID0g
dmFsaWRhdGVGdW5jdGlvbihmdW5jdGlvblN0YXJ0LCBmdW5jdGlvbkxlbmd0aCwgc2lnbmF0dXJl
LCBtX21vZHVsZUluZm9ybWF0aW9uLmdldCgpKTsKICAgICAgICAgaWYgKCF2YWxpZGF0aW9uUmVz
dWx0KSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgaWYgKFdhc21C
QlFQbGFuSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZnVuY3Rpb25MZW5ndGg7ICsraSkKICAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZyhSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uU3RhcnRbaV0p
KSwgIiwgIik7CiAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCk7CkBAIC0xMzAsNyArMTMyLDcg
QEAgYm9vbCBCQlFQbGFuOjpwYXJzZUFuZFZhbGlkYXRlTW9kdWxlKCkKICAgICAgICAgfQogICAg
IH0KIAotICAgIGlmICh2ZXJib3NlIHx8IE9wdGlvbnM6OnJlcG9ydENvbXBpbGVUaW1lcygpKQor
ICAgIGlmIChXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlIHx8IE9wdGlvbnM6OnJlcG9ydENv
bXBpbGVUaW1lcygpKQogICAgICAgICBkYXRhTG9nTG4oIlRvb2sgIiwgKE1vbm90b25pY1RpbWU6
Om5vdygpIC0gc3RhcnRUaW1lKS5taWNyb3NlY29uZHMoKSwgIiB1cyB0byB2YWxpZGF0ZSBtb2R1
bGUiKTsKIAogICAgIG1vdmVUb1N0YXRlKFN0YXRlOjpWYWxpZGF0ZWQpOwpAQCAtMTQyLDcgKzE0
NCw3IEBAIGJvb2wgQkJRUGxhbjo6cGFyc2VBbmRWYWxpZGF0ZU1vZHVsZSgpCiB2b2lkIEJCUVBs
YW46OnByZXBhcmUoKQogewogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpWYWxpZGF0ZWQp
OwotICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJTdGFydGluZyBwcmVwYXJhdGlvbiIpOworICAg
IGRhdGFMb2dMbklmKFdhc21CQlFQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJTdGFydGluZyBwcmVw
YXJhdGlvbiIpOwogCiAgICAgYXV0byB0cnlSZXNlcnZlQ2FwYWNpdHkgPSBbdGhpc10gKGF1dG8m
IHZlY3Rvciwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIHdoYXQpIHsKICAgICAgICAgaWYgKFVO
TElLRUxZKCF2ZWN0b3IudHJ5UmVzZXJ2ZUNhcGFjaXR5KHNpemUpKSkgewpAQCAtMTc0LDcgKzE3
Niw3IEBAIHZvaWQgQkJRUGxhbjo6cHJlcGFyZSgpCiAgICAgICAgIGlmIChpbXBvcnQtPmtpbmQg
IT0gRXh0ZXJuYWxLaW5kOjpGdW5jdGlvbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB1bnNpZ25lZCBpbXBvcnRGdW5jdGlvbkluZGV4ID0gbV93YXNtVG9XYXNtRXhpdFN0dWJzLnNp
emUoKTsKLSAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIlByb2Nlc3NpbmcgaW1wb3J0IGZ1
bmN0aW9uIG51bWJlciAiLCBpbXBvcnRGdW5jdGlvbkluZGV4LCAiOiAiLCBtYWtlU3RyaW5nKGlt
cG9ydC0+bW9kdWxlKSwgIjogIiwgbWFrZVN0cmluZyhpbXBvcnQtPmZpZWxkKSk7CisgICAgICAg
IGRhdGFMb2dMbklmKFdhc21CQlFQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJQcm9jZXNzaW5nIGlt
cG9ydCBmdW5jdGlvbiBudW1iZXIgIiwgaW1wb3J0RnVuY3Rpb25JbmRleCwgIjogIiwgbWFrZVN0
cmluZyhpbXBvcnQtPm1vZHVsZSksICI6ICIsIG1ha2VTdHJpbmcoaW1wb3J0LT5maWVsZCkpOwog
ICAgICAgICBhdXRvIGJpbmRpbmcgPSB3YXNtVG9XYXNtKGltcG9ydEZ1bmN0aW9uSW5kZXgpOwog
ICAgICAgICBpZiAoVU5MSUtFTFkoIWJpbmRpbmcpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGJp
bmRpbmcuZXJyb3IoKSkgewpAQCAtMjMwLDcgKzIzMiw3IEBAIHB1YmxpYzoKIHZvaWQgQkJRUGxh
bjo6Y29tcGlsZUZ1bmN0aW9ucyhDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiB7CiAgICAgQVNT
RVJUKG1fc3RhdGUgPj0gU3RhdGU6OlByZXBhcmVkKTsKLSAgICBkYXRhTG9nTG5JZih2ZXJib3Nl
LCAiU3RhcnRpbmcgY29tcGlsYXRpb24iKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtQkJRUGxhbklu
dGVybmFsOjp2ZXJib3NlLCAiU3RhcnRpbmcgY29tcGlsYXRpb24iKTsKIAogICAgIGlmICghaGFz
V29yaygpKQogICAgICAgICByZXR1cm47CkBAIC0yOTQsNyArMjk2LDcgQEAgdm9pZCBCQlFQbGFu
Ojpjb21waWxlRnVuY3Rpb25zKENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKIHZvaWQgQkJRUGxh
bjo6Y29tcGxldGUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlcikKIHsKICAgICBBU1NFUlQo
bV9zdGF0ZSAhPSBTdGF0ZTo6Q29tcGlsZWQgfHwgbV9jdXJyZW50SW5kZXggPj0gbV9tb2R1bGVJ
bmZvcm1hdGlvbi0+ZnVuY3Rpb25Mb2NhdGlvbkluQmluYXJ5LnNpemUoKSk7Ci0gICAgZGF0YUxv
Z0xuSWYodmVyYm9zZSwgIlN0YXJ0aW5nIENvbXBsZXRpb24iKTsKKyAgICBkYXRhTG9nTG5JZihX
YXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlLCAiU3RhcnRpbmcgQ29tcGxldGlvbiIpOwogCiAg
ICAgaWYgKCFmYWlsZWQoKSAmJiBtX3N0YXRlID09IFN0YXRlOjpDb21waWxlZCkgewogICAgICAg
ICBmb3IgKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXggPSAwOyBmdW5jdGlvbkluZGV4IDwgbV9tb2R1
bGVJbmZvcm1hdGlvbi0+ZnVuY3Rpb25Mb2NhdGlvbkluQmluYXJ5LnNpemUoKTsgZnVuY3Rpb25J
bmRleCsrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1
bHRTaWduYWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVs
dFNpZ25hbEhhbmRsZXIuY3BwCmluZGV4IGU4NmZkNDc5OTBlODg4OGQyNmZkZGZhNzM5NGU0NzZh
YmNjODAxODQuLjJiMWQ4MjhlMjdjNzUzNTBmZGQ5NGZjMTk1Y2U2NGQ3YzFlYzVhNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRs
ZXIuY3BwCkBAIC00Miw4ICs0MiwxMCBAQAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNt
IHsKIAogbmFtZXNwYWNlIHsKK25hbWVzcGFjZSBXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJu
YWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogfQorfQogCiBzdGF0aWMg
U3RhdGljTG9jayBjb2RlTG9jYXRpb25zTG9jazsKIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8
SGFzaFNldDxzdGQ6OnR1cGxlPHZvaWQqLCB2b2lkKj4+PiBjb2RlTG9jYXRpb25zOyAvLyAoc3Rh
cnQsIGVuZCkKQEAgLTU1LDMzICs1NywzMyBAQCBzdGF0aWMgYm9vbCBmYXN0SGFuZGxlckluc3Rh
bGxlZCB7IGZhbHNlIH07CiBzdGF0aWMgU2lnbmFsQWN0aW9uIHRyYXBIYW5kbGVyKFNpZ25hbCwg
U2lnSW5mbyYgc2lnSW5mbywgUGxhdGZvcm1SZWdpc3RlcnMmIGNvbnRleHQpCiB7CiAgICAgdm9p
ZCogZmF1bHRpbmdJbnN0cnVjdGlvbiA9IE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50
ZXIoY29udGV4dCk7Ci0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgInN0YXJ0aW5nIGhhbmRsZXIg
Zm9yIGZhdWx0IGF0OiAiLCBSYXdQb2ludGVyKGZhdWx0aW5nSW5zdHJ1Y3Rpb24pKTsKKyAgICBk
YXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJzdGFy
dGluZyBoYW5kbGVyIGZvciBmYXVsdCBhdDogIiwgUmF3UG9pbnRlcihmYXVsdGluZ0luc3RydWN0
aW9uKSk7CiAKLSAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiSklUIG1lbW9yeSBzdGFydDogIiwg
UmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihzdGFydE9mRml4ZWRFeGVjdXRhYmxl
TWVtb3J5UG9vbCkpLCAiIGVuZDogIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQq
PihlbmRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2wpKSk7CisgICAgZGF0YUxvZ0xuSWYoV2Fz
bUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAiSklUIG1lbW9yeSBzdGFydDog
IiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihzdGFydE9mRml4ZWRFeGVjdXRh
YmxlTWVtb3J5UG9vbCkpLCAiIGVuZDogIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZv
aWQqPihlbmRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2wpKSk7CiAgICAgLy8gRmlyc3Qgd2Ug
bmVlZCB0byBtYWtlIHN1cmUgd2UgYXJlIGluIEpJVCBjb2RlIGJlZm9yZSB3ZSBjYW4gYXF1aXJl
IGFueSBsb2Nrcy4gT3RoZXJ3aXNlLAogICAgIC8vIHdlIG1pZ2h0IGhhdmUgY3Jhc2hlZCBpbiBj
b2RlIHRoYXQgaXMgYWxyZWFkeSBob2xkaW5nIG9uZSBvZiB0aGUgbG9ja3Mgd2Ugd2FudCB0byBh
cXVpcmUuCiAgICAgaWYgKGlzSklUUEMoZmF1bHRpbmdJbnN0cnVjdGlvbikpIHsKICAgICAgICAg
Ym9vbCBmYXVsdGVkSW5BY3RpdmVGYXN0TWVtb3J5ID0gZmFsc2U7CiAgICAgICAgIHsKICAgICAg
ICAgICAgIHZvaWQqIGZhdWx0aW5nQWRkcmVzcyA9IHNpZ0luZm8uZmF1bHRpbmdBZGRyZXNzOwot
ICAgICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgImNoZWNraW5nIGZhdWx0aW5nIGFkZHJl
c3M6ICIsIFJhd1BvaW50ZXIoZmF1bHRpbmdBZGRyZXNzKSwgIiBpcyBpbiBhbiBhY3RpdmUgZmFz
dCBtZW1vcnkiKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRs
ZXJJbnRlcm5hbDo6dmVyYm9zZSwgImNoZWNraW5nIGZhdWx0aW5nIGFkZHJlc3M6ICIsIFJhd1Bv
aW50ZXIoZmF1bHRpbmdBZGRyZXNzKSwgIiBpcyBpbiBhbiBhY3RpdmUgZmFzdCBtZW1vcnkiKTsK
ICAgICAgICAgICAgIGZhdWx0ZWRJbkFjdGl2ZUZhc3RNZW1vcnkgPSBXYXNtOjpNZW1vcnk6OmFk
ZHJlc3NJc0luQWN0aXZlRmFzdE1lbW9yeShmYXVsdGluZ0FkZHJlc3MpOwogICAgICAgICB9CiAg
ICAgICAgIGlmIChmYXVsdGVkSW5BY3RpdmVGYXN0TWVtb3J5KSB7Ci0gICAgICAgICAgICBkYXRh
TG9nTG5JZih2ZXJib3NlLCAiZm91bmQgYWN0aXZlIGZhc3QgbWVtb3J5IGZvciBmYXVsdGluZyBh
ZGRyZXNzIik7CisgICAgICAgICAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVy
SW50ZXJuYWw6OnZlcmJvc2UsICJmb3VuZCBhY3RpdmUgZmFzdCBtZW1vcnkgZm9yIGZhdWx0aW5n
IGFkZHJlc3MiKTsKICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGNvZGVMb2NhdGlvbnNM
b2NrKTsKICAgICAgICAgICAgIGZvciAoYXV0byByYW5nZSA6IGNvZGVMb2NhdGlvbnMuZ2V0KCkp
IHsKICAgICAgICAgICAgICAgICB2b2lkKiBzdGFydDsKICAgICAgICAgICAgICAgICB2b2lkKiBl
bmQ7CiAgICAgICAgICAgICAgICAgc3RkOjp0aWUoc3RhcnQsIGVuZCkgPSByYW5nZTsKLSAgICAg
ICAgICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiZnVuY3Rpb24gc3RhcnQ6ICIsIFJhd1Bv
aW50ZXIoc3RhcnQpLCAiIGVuZDogIiwgUmF3UG9pbnRlcihlbmQpKTsKKyAgICAgICAgICAgICAg
ICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJm
dW5jdGlvbiBzdGFydDogIiwgUmF3UG9pbnRlcihzdGFydCksICIgZW5kOiAiLCBSYXdQb2ludGVy
KGVuZCkpOwogICAgICAgICAgICAgICAgIGlmIChzdGFydCA8PSBmYXVsdGluZ0luc3RydWN0aW9u
ICYmIGZhdWx0aW5nSW5zdHJ1Y3Rpb24gPCBlbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZ0xuSWYodmVyYm9zZSwgImZvdW5kIG1hdGNoIik7CisgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZvdW5k
IG1hdGNoIik7CiAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBleGNl
cHRpb25TdHViID0gVGh1bmtzOjpzaW5nbGV0b24oKS5leGlzdGluZ1N0dWIodGhyb3dFeGNlcHRp
b25Gcm9tV2FzbVRodW5rR2VuZXJhdG9yKTsKICAgICAgICAgICAgICAgICAgICAgLy8gSWYgZm9y
IHdoYXRldmVyIHJlYXNvbiB3ZSBkb24ndCBoYXZlIGEgc3R1YiB0aGVuIHdlIHNob3VsZCBqdXN0
IHRyZWF0IHRoaXMgbGlrZSBhIHJlZ3VsYXIgY3Jhc2guCiAgICAgICAgICAgICAgICAgICAgIGlm
ICghZXhjZXB0aW9uU3R1YikKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiZm91bmQgc3R1YjogIiwgUmF3UG9p
bnRlcihleGNlcHRpb25TdHViLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6
dmVyYm9zZSwgImZvdW5kIHN0dWI6ICIsIFJhd1BvaW50ZXIoZXhjZXB0aW9uU3R1Yi5jb2RlKCku
ZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAgICAgICAgICAgICAgICBNYWNoaW5lQ29udGV4
dDo6YXJndW1lbnRQb2ludGVyPDE+KGNvbnRleHQpID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
RXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNNZW1vcnlBY2Nlc3MpOwogICAgICAgICAgICAgICAg
ICAgICBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRleHQpID0gZXhjZXB0
aW9uU3R1Yi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFNpZ25hbEFjdGlvbjo6SGFuZGxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21PTUdQbGFuLmNwcAppbmRleCA1OTE4ZjkyYmI4MGJiZGVlNTQwMTA0NzEzMWQ4MzJiZDE5
NmJmNzViLi43NGNmNjUzNDk3NTI1Y2UyNjFkNDBjNzJjNDYyM2FjZDgwZjY1Y2U1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCkBAIC00Nyw3ICs0Nyw5IEBA
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKK25hbWVzcGFjZSBXYXNtT01H
UGxhbkludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAog
T01HUGxhbjo6T01HUGxhbihSZWY8TW9kdWxlPiBtb2R1bGUsIHVpbnQzMl90IGZ1bmN0aW9uSW5k
ZXgsIE1lbW9yeU1vZGUgbW9kZSwgQ29tcGxldGlvblRhc2smJiB0YXNrKQogICAgIDogQmFzZShu
dWxscHRyLCBtYWtlUmVmKGNvbnN0X2Nhc3Q8TW9kdWxlSW5mb3JtYXRpb24mPihtb2R1bGUtPm1v
ZHVsZUluZm9ybWF0aW9uKCkpKSwgV1RGTW92ZSh0YXNrKSkKQEAgLTU4LDcgKzYwLDcgQEAgT01H
UGxhbjo6T01HUGxhbihSZWY8TW9kdWxlPiBtb2R1bGUsIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgs
IE1lbW9yeU1vZGUgbW9kZSwgQ28KICAgICBzZXRNb2RlKG1vZGUpOwogICAgIEFTU0VSVChtX2Nv
ZGVCbG9jay0+cnVubmFibGUoKSk7CiAgICAgQVNTRVJUKG1fY29kZUJsb2NrLnB0cigpID09IG1f
bW9kdWxlLT5jb2RlQmxvY2tGb3IobV9tb2RlKSk7Ci0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwg
IlN0YXJ0aW5nIE9NRyBwbGFuIGZvciAiLCBmdW5jdGlvbkluZGV4LCAiIG9mIG1vZHVsZTogIiwg
UmF3UG9pbnRlcigmbV9tb2R1bGUuZ2V0KCkpKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtT01HUGxh
bkludGVybmFsOjp2ZXJib3NlLCAiU3RhcnRpbmcgT01HIHBsYW4gZm9yICIsIGZ1bmN0aW9uSW5k
ZXgsICIgb2YgbW9kdWxlOiAiLCBSYXdQb2ludGVyKCZtX21vZHVsZS5nZXQoKSkpOwogfQogCiB2
b2lkIE9NR1BsYW46OndvcmsoQ29tcGlsYXRpb25FZmZvcnQpCkBAIC0xMzgsOSArMTQwLDkgQEAg
dm9pZCBPTUdQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogCiAgICAgICAgIGF1dG8gcmVw
YXRjaENhbGxzID0gWyZdIChjb25zdCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mICBj
YWxsc2l0ZXMpIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgY2FsbCA6IGNhbGxzaXRlcykgewot
ICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJDb25zaWRlcmluZyByZXBhdGNo
aW5nIGNhbGwgYXQ6ICIsIFJhd1BvaW50ZXIoY2FsbC5jYWxsTG9jYXRpb24uZGF0YUxvY2F0aW9u
KCkpLCAiIHRoYXQgdGFyZ2V0cyAiLCBjYWxsLmZ1bmN0aW9uSW5kZXhTcGFjZSk7CisgICAgICAg
ICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbU9NR1BsYW5JbnRlcm5hbDo6dmVyYm9zZSwgIkNvbnNp
ZGVyaW5nIHJlcGF0Y2hpbmcgY2FsbCBhdDogIiwgUmF3UG9pbnRlcihjYWxsLmNhbGxMb2NhdGlv
bi5kYXRhTG9jYXRpb24oKSksICIgdGhhdCB0YXJnZXRzICIsIGNhbGwuZnVuY3Rpb25JbmRleFNw
YWNlKTsKICAgICAgICAgICAgICAgICBpZiAoY2FsbC5mdW5jdGlvbkluZGV4U3BhY2UgPT0gZnVu
Y3Rpb25JbmRleFNwYWNlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKHZlcmJv
c2UsICJSZXBhdGNoaW5nIGNhbGwgYXQ6ICIsIFJhd1BvaW50ZXIoY2FsbC5jYWxsTG9jYXRpb24u
ZGF0YUxvY2F0aW9uKCkpLCAiIHRvICIsIFJhd1BvaW50ZXIoZW50cnlwb2ludCkpOworICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nTG5JZihXYXNtT01HUGxhbkludGVybmFsOjp2ZXJib3NlLCAi
UmVwYXRjaGluZyBjYWxsIGF0OiAiLCBSYXdQb2ludGVyKGNhbGwuY2FsbExvY2F0aW9uLmRhdGFM
b2NhdGlvbigpKSwgIiB0byAiLCBSYXdQb2ludGVyKGVudHJ5cG9pbnQpKTsKICAgICAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hOZWFyQ2FsbChjYWxsLmNhbGxMb2NhdGlv
biwgQ29kZUxvY2F0aW9uTGFiZWwoZW50cnlwb2ludCkpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KQEAgLTE1Niw3ICsxNTgsNyBAQCB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGls
YXRpb25FZmZvcnQpCiAgICAgICAgIHJlcGF0Y2hDYWxscyh1bmxpbmtlZENhbGxzKTsKICAgICB9
CiAKLSAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiRmluaXNoZWQgd2l0aCB0aWVyIHVwIGNvdW50
IGF0OiAiLCBtX2NvZGVCbG9jay0+dGllclVwQ291bnQobV9mdW5jdGlvbkluZGV4KS5jb3VudCgp
KTsKKyAgICBkYXRhTG9nTG5JZihXYXNtT01HUGxhbkludGVybmFsOjp2ZXJib3NlLCAiRmluaXNo
ZWQgd2l0aCB0aWVyIHVwIGNvdW50IGF0OiAiLCBtX2NvZGVCbG9jay0+dGllclVwQ291bnQobV9m
dW5jdGlvbkluZGV4KS5jb3VudCgpKTsKICAgICBjb21wbGV0ZShob2xkTG9jayhtX2xvY2spKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwCmluZGV4IDE0ODNhYzc0
ODkyYjJmMTY0MmE2Y2IzNjBiYzY0OTg3YmNmNWYxMWYuLmJhMjdjZjlmOTZmNTU1MGYyZjQ4MTJl
MDkxMjRiNWJmODEwMDVhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21QbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5j
cHAKQEAgLTQ3LDcgKzQ3LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsK
IAorbmFtZXNwYWNlIFdhc21QbGFuSW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9z
ZSA9IGZhbHNlOworfQogCiBQbGFuOjpQbGFuKFZNKiB2bSwgUmVmPE1vZHVsZUluZm9ybWF0aW9u
PiBpbmZvLCBDb21wbGV0aW9uVGFzayYmIHRhc2spCiAgICAgOiBtX21vZHVsZUluZm9ybWF0aW9u
KFdURk1vdmUoaW5mbykpCkBAIC0xMjgsNyArMTMwLDcgQEAgYm9vbCBQbGFuOjp0cnlSZW1vdmVW
TUFuZENhbmNlbElmTGFzdChWTSYgdm0pCiAKIHZvaWQgUGxhbjo6ZmFpbChjb25zdCBBYnN0cmFj
dExvY2tlciYgbG9ja2VyLCBTdHJpbmcmJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgZGF0YUxvZ0xu
SWYodmVyYm9zZSwgImZhaWxpbmcgd2l0aCBtZXNzYWdlOiAiLCBlcnJvck1lc3NhZ2UpOworICAg
IGRhdGFMb2dMbklmKFdhc21QbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJmYWlsaW5nIHdpdGggbWVz
c2FnZTogIiwgZXJyb3JNZXNzYWdlKTsKICAgICBtX2Vycm9yTWVzc2FnZSA9IFdURk1vdmUoZXJy
b3JNZXNzYWdlKTsKICAgICBjb21wbGV0ZShsb2NrZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAppbmRleCBiMjI5OGQ2NWNiYWI4ZDUwYmU4N2Uw
MjJkYTQzYmI2MjJjNThmZTdiLi44YjYwMGVkMzg2NDQzMTI4ODJmMTNjNWY0OWZjOGZkOWU2Nzky
OTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcApA
QCAtMzYsNyArMzYsOSBAQAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAogbmFt
ZXNwYWNlIHsKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIFdhc21TaWdu
YXR1cmVJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiB9
CiAKIFN0cmluZyBTaWduYXR1cmU6OnRvU3RyaW5nKCkgY29uc3QKQEAgLTEwMyw3ICsxMDUsNyBA
QCBzdGQ6OnBhaXI8U2lnbmF0dXJlSW5kZXgsIFJlZjxTaWduYXR1cmU+PiBTaWduYXR1cmVJbmZv
cm1hdGlvbjo6YWRvcHQoUmVmPFNpZ25hdAogICAgICAgICArK2luZm8ubV9uZXh0SW5kZXg7CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZm8ubV9uZXh0SW5kZXggPiBuZXh0VmFsdWUpOyAvLyBj
cmFzaCBvbiBvdmVyZmxvdy4KICAgICAgICAgQVNTRVJUKG5leHRWYWx1ZSA9PSBhZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlKTsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChXYXNt
U2lnbmF0dXJlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nTG4oIkFkb3B0
IG5ldyBzaWduYXR1cmUgIiwgc2lnbmF0dXJlLmdldCgpLCAiIHdpdGggaW5kZXggIiwgYWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSwgIiBoYXNoOiAiLCBzaWduYXR1cmUtPmhhc2goKSk7CiAKICAg
ICAgICAgYXV0byBhZGRSZXN1bHQgPSBpbmZvLm1faW5kZXhNYXAuYWRkKG5leHRWYWx1ZSwgc2ln
bmF0dXJlLmNvcHlSZWYoKSk7CkBAIC0xMTEsNyArMTEzLDcgQEAgc3RkOjpwYWlyPFNpZ25hdHVy
ZUluZGV4LCBSZWY8U2lnbmF0dXJlPj4gU2lnbmF0dXJlSW5mb3JtYXRpb246OmFkb3B0KFJlZjxT
aWduYXQKICAgICAgICAgQVNTRVJUKGluZm8ubV9pbmRleE1hcC5zaXplKCkgPT0gaW5mby5tX3Np
Z25hdHVyZU1hcC5zaXplKCkpOwogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIobmV4dFZh
bHVlLCBXVEZNb3ZlKHNpZ25hdHVyZSkpOwogICAgIH0KLSAgICBpZiAodmVyYm9zZSkKKyAgICBp
ZiAoV2FzbVNpZ25hdHVyZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nTG4oIkV4
aXN0aW5nIHNpZ25hdHVyZSAiLCBzaWduYXR1cmUuZ2V0KCksICIgd2l0aCBpbmRleCAiLCBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLCAiIGhhc2g6ICIsIHNpZ25hdHVyZS0+aGFzaCgpKTsKICAg
ICBBU1NFUlQoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSAhPSBTaWduYXR1cmU6OmludmFsaWRJ
bmRleCk7CiAgICAgQVNTRVJUKGluZm8ubV9pbmRleE1hcC5jb250YWlucyhhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtV29ya2xpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0
LmNwcAppbmRleCA3NmE4N2FjMWI0NzM2ZjNjZjM3YzM1MzlkYmM5NjFmNjc4NmEwMTM0Li45YzVi
Njg0NGM0NmI3NGYwMjZlMGQ4NTZiNDE5Y2U5NzVjNjAwOTJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKQEAgLTMzLDcgKzMzLDkgQEAKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAorbmFtZXNwYWNlIFdhc21Xb3JrbGlzdEludGVy
bmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogY29uc3QgY2hh
ciogV29ya2xpc3Q6OnByaW9yaXR5U3RyaW5nKFByaW9yaXR5IHByaW9yaXR5KQogewpAQCAtMTQ0
LDcgKzE0Niw3IEBAIHZvaWQgV29ya2xpc3Q6OmVucXVldWUoUmVmPFBsYW4+IHBsYW4pCiAgICAg
ICAgICAgICBBU1NFUlRfVU5VU0VEKGVsZW1lbnQsIGVsZW1lbnQucGxhbi5nZXQoKSAhPSAmcGxh
bi5nZXQoKSk7CiAgICAgfQogCi0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIkVucXVldWluZyBw
bGFuIik7CisgICAgZGF0YUxvZ0xuSWYoV2FzbVdvcmtsaXN0SW50ZXJuYWw6OnZlcmJvc2UsICJF
bnF1ZXVpbmcgcGxhbiIpOwogICAgIG1fcXVldWUuZW5xdWV1ZSh7IFByaW9yaXR5OjpQcmVwYXJh
dGlvbiwgbmV4dFRpY2tldCgpLCAgV1RGTW92ZShwbGFuKSB9KTsKICAgICBtX3BsYW5FbnF1ZXVl
ZC0+bm90aWZ5T25lKGxvY2tlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Bc3Nl
cnRpb25zLmggYi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgKaW5kZXggM2IwNDM3OTlhMGE0
ZTRiZGUwYWZkZjUwYzJhZDA2MGUxNTkyOTYzYS4uMTc5ZjUxOGVkNjRlOGI1MmQwYTNjZDdmZGNl
ZGZlYzdlM2MyN2ZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaApAQCAtNTM1LDE4ICs1MzUsMjIgQEAgaW5s
aW5lIHZvaWQgY29tcGlsZXJGZW5jZUZvckNyYXNoKCkKICNlbmRpZgogfQogCi0jaWZuZGVmIENS
QVNIX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fQU5EX0lORk8KKyNpZm5kZWYgQ1JBU0hfV0lU
SF9JTkZPCiAvLyBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgYXJlIGdvaW5nIHRvIHN0dWZmIGRhdGEg
aW50byByZWdpc3RlcnMgYmVmb3JlIGNyYXNoaW5nLiBMaWtlIHRoZSBjcmFzaFdpdGhJbmZvIGZ1
bmN0aW9ucyBiZWxvdy4uLgogLy8gR0NDIGRvZXNuJ3QgbGlrZSB0aGUgIyNfX1ZBX0FSR1NfXyBo
ZXJlIHNpbmNlIHRoaXMgbWFjcm8gaXMgY2FsbGVkIGZyb20gYW5vdGhlciBtYWNybyBzbyB3ZSBq
dXN0IENSQVNIIGluc3RlYWQgdGhlcmUuCiAjaWYgQ09NUElMRVIoQ0xBTkcpIHx8IENPTVBJTEVS
KE1TVkMpCi0jZGVmaW5lIENSQVNIX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fQU5EX0lORk8o
Li4uKSBkbyB7IFwKKyNkZWZpbmUgQ1JBU0hfV0lUSF9JTkZPKC4uLikgZG8geyBcCiAgICAgICAg
IFdURjo6aXNJbnRlZ3JhbFR5cGUoX19WQV9BUkdTX18pOyBcCiAgICAgICAgIGNvbXBpbGVyRmVu
Y2VGb3JDcmFzaCgpOyBcCiAgICAgICAgIFdURkNyYXNoV2l0aEluZm8oX19MSU5FX18sIF9fRklM
RV9fLCBXVEZfUFJFVFRZX0ZVTkNUSU9OLCBfX0NPVU5URVJfXywgIyNfX1ZBX0FSR1NfXyk7IFwK
ICAgICB9IHdoaWxlIChmYWxzZSkKICNlbHNlCi0jZGVmaW5lIENSQVNIX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT05fQU5EX0lORk8oLi4uKSBDUkFTSCgpCisjZGVmaW5lIENSQVNIX1dJVEhfSU5G
TyguLi4pIENSQVNIKCkKICNlbmRpZgorI2VuZGlmIC8vIENSQVNIX1dJVEhfSU5GTworCisjaWZu
ZGVmIENSQVNIX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fQU5EX0lORk8KKyNkZWZpbmUgQ1JB
U0hfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTl9BTkRfSU5GTyBDUkFTSF9XSVRIX0lORk8KICNl
bmRpZiAvLyBDUkFTSF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OX0FORF9JTkZPCiAKICNlbmRp
ZiAvLyBfX2NwbHVzcGx1cwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320524</attachid>
            <date>2017-09-12 00:10:30 -0700</date>
            <delta_ts>2017-09-12 09:26:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176076-20170912001029.patch</filename>
            <type>text/plain</type>
            <size>236842</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxODU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YmNjZWFjYzVkY2IxNTdmMjAzMDNkYzUzODlmOGMzNzk0YWQwMTlmLi45NTcxZjcyMzZlZjU5NDY3
MzBmYTFlZmU3YzA5MGYyZDM4MGExMzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NzMgQEAKKzIwMTctMDktMTEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgRG8gdW5pZmllZCBzb3VyY2UgYnVpbGRzIGZvciBKU0MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjA3NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggc3dp
dGNocyB0aGUgQ01ha2UgSmF2YVNjcmlwdENvcmUgYnVpbGQgdG8gdXNlIHVuaWZpZWQgc291cmNl
cy4KKyAgICAgICAgVGhlIFhjb2RlIGJ1aWxkIHdpbGwgYmUgdXBncmFkZWQgaW4gYSBmb2xsb3cg
dXAgcGF0Y2guCisKKyAgICAgICAgTW9zdCBvZiB0aGUgc291cmNlIGNoYW5nZXMgaW4gdGhpcyBw
YXRjaCBhcmUgZml4aW5nIHN0YXRpYworICAgICAgICB2YXJpYWJsZS9mdW5jdGlvbnMgbmFtZSBj
b2xsaXNpb25zLiBUaGUgbW9zdCBjb21tb24gY29sbGlzaW9ucworICAgICAgICB3ZXJlIGZyb20g
b3VyIHVzZSBvZiAic3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSIgYW5kICJ1c2luZworICAgICAg
ICBuYW1lc3BhY2UgLi4uIi4gSSBmaXhlZCBhbGwgdGhlIHZlcmJvc2UgY2FzZXMgYW5kIGZpeGVk
IHRoZSAidXNpbmcKKyAgICAgICAgbmFtZXNwYWNlIiBpc3N1ZXMgdGhhdCBvY2N1cnJlZCB1bmRl
ciB0aGUgY3VycmVudCBidW5kbGluZworICAgICAgICBzdHJhdGVneS4gSXQncyBsaWtlbHkgdGhh
dCBtb3JlIG9mIHRoZSAidXNpbmcgbmFtZXNwYWNlIiBpc3N1ZXMKKyAgICAgICAgd2lsbCBuZWVk
IHRvIGJlIHJlc29sdmVkIGluIHRoZSBmdXR1cmUsIHBhcnRpY3VsYXJseSBpbiB0aGUgRlRMLgor
CisgICAgICAgIEkgZG9uJ3QgZXhwZWN0IGVpdGhlciBvZiB0aGVzZSBwcm9ibGVtcyB3aWxsIGFw
cGx5IHRvIG90aGVyIHBhcnRzCisgICAgICAgIG9mIHRoZSBwcm9qZWN0IG5lYXJseSBhcyBtdWNo
IGFzIGluIEpTQy4gVXNpbmcgYSB2ZXJib3NlIHZhcmlhYmxlCisgICAgICAgIGlzIGEgSlNDIGlk
aW9tIGFuZCBKU0MgdGVuZHMgdXNlIHRoZSBzYW1lLCBjYW5vbmljYWwsIGNsYXNzIG5hbWUKKyAg
ICAgICAgaW4gbXVsdGlwbGUgcGFydHMgb2YgdGhlIGVuZ2luZS4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIGIzL0IzQ2hlY2tTcGVjaWFsLmNwcDoKKyAgICAgICAgKEpT
Qzo6QjM6OkNoZWNrU3BlY2lhbDo6Zm9yRWFjaEFyZyk6CisgICAgICAgIChKU0M6OkIzOjpDaGVj
a1NwZWNpYWw6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6bnVtQjNBcmdzKTog
RGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM0R1cGxpY2F0ZVRhaWxzLmNwcDoKKyAgICAgICAgKiBi
My9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcDoKKyAgICAgICAgKiBiMy9CM0Zp
eFNTQS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpkZW1vdGVWYWx1ZXMpOgorICAgICAgICAqIGIz
L0IzRm9sZFBhdGhDb25zdGFudHMuY3BwOgorICAgICAgICAqIGIzL0IzSW5mZXJTd2l0Y2hlcy5j
cHA6CisgICAgICAgICogYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHA6Cisg
ICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Okxvd2VyVG9BaXIpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpydW4pOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzaG91bGRDb3B5UHJvcGFnYXRlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6QXJnUHJvbWlz
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21p
c2U6OnN3YXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpB
cmdQcm9taXNlOjpvcGVyYXRvcj0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpBcmdQcm9taXNlOjp+QXJnUHJvbWlzZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OnNldFRyYXBzKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6dG1wKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6b3Bl
cmF0b3IgYm9vbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6OkFyZ1Byb21pc2U6OmtpbmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjpwZWVrIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6Y29uc3VtZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6Omlu
c3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0bXApOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0bXBQcm9taXNlKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y2FuQmVJbnRlcm5h
bCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNvbW1pdElu
dGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3Jv
c3Nlc0ludGVyZmVyZW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6OnNjYWxlRm9yU2hsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6ZWZmZWN0aXZlQWRkcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okxvd2VyVG9BaXI6OmFkZHIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjp0cmFwcGluZ0luc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpsb2FkUHJvbWlzZUFueU9wY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmxvYWRQcm9taXNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6aW1tKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6TG93ZXJUb0Fpcjo6Yml0SW1tKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6Yml0SW1tNjQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjppbW1PclRtcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okxvd2VyVG9BaXI6OnRyeU9wY29kZUZvclR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpMb3dlclRvQWlyOjpvcGNvZGVGb3JUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kVW5PcCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnByZWZlclJpZ2h0Rm9yUmVzdWx0KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kQmluT3ApOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRTaGlmdCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyeUFwcGVuZFN0b3JlVW5P
cCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyeUFwcGVu
ZFN0b3JlQmluT3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
OjpjcmVhdGVTdG9yZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OnN0b3JlT3Bjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJU
b0Fpcjo6YXBwZW5kU3RvcmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjptb3ZlRm9yVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6OnJlbGF4ZWRNb3ZlRm9yVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OnByaW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6YXBwZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
TG93ZXJUb0Fpcjo6YXBwZW5kVHJhcHBpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpMb3dlclRvQWlyOjpmaW5pc2hBcHBlbmRpbmdJbnN0cnVjdGlvbnMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpuZXdCbG9jayk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnNwbGl0QmxvY2spOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjplbnN1cmVTcGVjaWFsKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6ZW5zdXJlQ2hlY2tTcGVjaWFs
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6ZmlsbFN0YWNr
bWFwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRl
R2VuZXJpY0NvbXBhcmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRv
QWlyOjpjcmVhdGVCcmFuY2gpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpjcmVhdGVDb21wYXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
TG93ZXJUb0Fpcjo6Y3JlYXRlU2VsZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6dHJ5QXBwZW5kTGVhKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kWDg2RGl2KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kWDg2VURpdik6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmxvYWRMaW5rT3Bjb2RlKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6c3RvcmVDb25kT3Bjb2RlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kQ0FTKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kVm9pZEF0b21pYyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZEdlbmVyYWxB
dG9taWMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpsb3dl
cik6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHA6CisgICAg
ICAgIChKU0M6OkIzOjpQYXRjaHBvaW50U3BlY2lhbDo6Z2VuZXJhdGUpOgorICAgICAgICAqIGIz
L0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpyZWR1Y2VEb3Vi
bGVUb0Zsb2F0KToKKyAgICAgICAgKiBiMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcDoKKyAgICAgICAg
KiBiMy9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5jcHA6CisgICAgICAgICogYjMvQjNTdGFj
a21hcFNwZWNpYWwuY3BwOgorICAgICAgICAoSlNDOjpCMzo6U3RhY2ttYXBTcGVjaWFsOjpyZXBz
SW1wbCk6CisgICAgICAgIChKU0M6OkIzOjpTdGFja21hcFNwZWNpYWw6OnJlcEZvckFyZyk6Cisg
ICAgICAgICogYjMvYWlyL0FpckFsbG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcuY3BwOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjphbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nKToKKyAgICAg
ICAgKiBiMy9haXIvQWlyRW1pdFNodWZmbGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpl
bWl0U2h1ZmZsZSk6CisgICAgICAgICogYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwOgor
ICAgICAgICAqIGIzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpsb3dlckFmdGVyUmVnQWxsb2MpOgorICAgICAgICAqIGIzL2Fpci9BaXJTdGFj
a0FsbG9jYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjphdHRlbXB0QXNzaWdubWVu
dCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmFzc2lnbik6CisgICAgICAgICogYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6
CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZURGR1N0YXR1c2VzKToKKyAgICAgICAgKiBieXRlY29kZS9H
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZTo6ZW1pdERPTUpJVEdldHRlcik6CisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKToKKyAg
ICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgorICAgICAgICAqIGJ5
dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlDb25k
aXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50IGNvbnN0
KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHA6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKToKKyAgICAgICAgKiBkZmcvREZH
QXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6RGVsYXllZFNl
dExvY2FsOjpEZWxheWVkU2V0TG9jYWwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjppbmxpbmluZ0Nvc3QpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpp
bmxpbmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRv
SW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGxhbkxvYWQpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpzdG9yZSk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpsaW5rQmxvY2tzKToKKyAgICAgICAgKiBkZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAg
ICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
SW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKToKKyAgICAgICAgKiBkZmcvREZHSW50ZWdlckNo
ZWNrQ29tYmluaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkludGVnZXJDaGVja0Nv
bWJpbmluZ1BoYXNlOjpoYW5kbGVCbG9jayk6CisgICAgICAgICogZGZnL0RGR0ludGVnZXJSYW5n
ZU9wdGltaXphdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHTW92SGludFJlbW92YWxQ
aGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2Uu
Y3BwOgorICAgICAgICAqIGRmZy9ERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAqIGRmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0
b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHVmFyYXJnc0Zv
cndhcmRpbmdQaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwOjpjb21wdXRlKToKKyAgICAgICAgKiBmdGwv
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVNZW1vcnkpOgorICAgICAgICAoSlNDOjpGVEw6OkFi
c3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlQ0NhbGxSZWFkKToKKyAgICAgICAgKEpTQzo6
RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUNDYWxsV3JpdGUpOgorICAgICAg
ICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlUGF0Y2hwb2ludFJl
YWQpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRl
UGF0Y2hwb2ludFdyaXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5OjpkZWNvcmF0ZUZlbmNlUmVhZCk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFw
UmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5jZVdyaXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUZlbmNlZEFjY2Vzcyk6CisgICAgICAgIChKU0M6
OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6Y29tcHV0ZVJhbmdlc0FuZERlY29yYXRlSW5z
dHJ1Y3Rpb25zKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6bGluayk6CisgICAgICAgICogaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHA6CisgICAg
ICAgIChKU0M6Ok1hcmtpbmdDb25zdHJhaW50U2V0OjphZGQpOgorICAgICAgICAqIGludGVycHJl
dGVyL1NoYWRvd0NoaWNrZW4uY3BwOgorICAgICAgICAoSlNDOjpTaGFkb3dDaGlja2VuOjp1cGRh
dGUpOgorICAgICAgICAqIGppdC9CaW5hcnlTd2l0Y2guY3BwOgorICAgICAgICAoSlNDOjpCaW5h
cnlTd2l0Y2g6OkJpbmFyeVN3aXRjaCk6CisgICAgICAgIChKU0M6OkJpbmFyeVN3aXRjaDo6YnVp
bGQpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50
OjpEYXRhOjpsb2FkU3RhdHMpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6c2F2ZVN0YXRz
KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
QXJyYXlQcm90b3R5cGU6OnRyeUluaXRpYWxpemVTcGVjaWVzV2F0Y2hwb2ludCk6CisgICAgICAg
IChKU0M6OkFycmF5UHJvdG90eXBlQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5V2F0Y2hwb2ludDo6
aGFuZGxlRmlyZSk6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2NrRnVuY3Rvcjo6RmluZEZp
cnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2NrRnVuY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3I6Om9wZXJhdG9yKCkp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGaW5kRmlyc3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxv
Y2tGdW5jdG9yOjpmb3VuZENhbGxGcmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3I6OmluZGV4IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAg
ICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KToK
KyAgICAgICAgKiBydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6UHJvbWlzZURlZmVycmVkVGltZXI6OmRvV29yayk6CisgICAgICAgIChKU0M6OlByb21pc2VE
ZWZlcnJlZFRpbWVyOjphZGRQZW5kaW5nUHJvbWlzZSk6CisgICAgICAgIChKU0M6OlByb21pc2VE
ZWZlcnJlZFRpbWVyOjpjYW5jZWxQZW5kaW5nUHJvbWlzZSk6CisgICAgICAgICogcnVudGltZS9U
eXBlUHJvZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXI6Omluc2VydE5ld0xv
Y2F0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHA6CisgICAgICAg
IChKU0M6OlR5cGVQcm9maWxlckxvZzo6cHJvY2Vzc0xvZ0VudHJpZXMpOgorICAgICAgICAqIHJ1
bnRpbWUvV2Vha01hcFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtN
YXBEZWxldGUpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwR2V0KToKKyAgICAgICAg
KEpTQzo6cHJvdG9GdW5jV2Vha01hcEhhcyk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtN
YXBTZXQpOgorICAgICAgICAoSlNDOjpnZXRXZWFrTWFwRGF0YSk6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6cHJvdG9GdW5j
V2Vha1NldERlbGV0ZSk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtTZXRIYXMpOgorICAg
ICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrU2V0QWRkKToKKyAgICAgICAgKEpTQzo6Z2V0V2Vha01h
cERhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHRlc3RSZWdFeHAuY3BwOgorICAgICAgICAodGVz
dE9uZVJlZ0V4cCk6CisgICAgICAgIChydW5Gcm9tRmlsZXMpOgorICAgICAgICAqIHdhc20vV2Fz
bUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpwYXJzZUFuZENvbXBpbGUp
OgorICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpC
QlFQbGFuOjptb3ZlVG9TdGF0ZSk6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OnBhcnNl
QW5kVmFsaWRhdGVNb2R1bGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpwcmVwYXJl
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9ucyk6CisgICAg
ICAgIChKU0M6Oldhc206OkJCUVBsYW46OmNvbXBsZXRlKToKKyAgICAgICAgKiB3YXNtL1dhc21G
YXVsdFNpZ25hbEhhbmRsZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp0cmFwSGFuZGxlcik6
CisgICAgICAgICogd2FzbS9XYXNtT01HUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok9N
R1BsYW46Ok9NR1BsYW4pOgorICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAg
ICAgICAgKiB3YXNtL1dhc21QbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGxhbjo6ZmFp
bCk6CisgICAgICAgICogd2FzbS9XYXNtU2lnbmF0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6U2lnbmF0dXJlSW5mb3JtYXRpb246OmFkb3B0KToKKyAgICAgICAgKiB3YXNtL1dhc21Xb3Jr
bGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjplbnF1ZXVlKToKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIGIzL0IzQ2hlY2tTcGVjaWFsLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OkNoZWNrU3BlY2lhbDo6Zm9yRWFjaEFyZyk6CisgICAgICAgIChK
U0M6OkIzOjpDaGVja1NwZWNpYWw6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
bnVtQjNBcmdzKTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM0R1cGxpY2F0ZVRhaWxzLmNwcDoK
KyAgICAgICAgKiBiMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcDoKKyAgICAg
ICAgKiBiMy9CM0ZpeFNTQS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpkZW1vdGVWYWx1ZXMpOgor
ICAgICAgICAqIGIzL0IzRm9sZFBhdGhDb25zdGFudHMuY3BwOgorICAgICAgICAqIGIzL0IzSW5m
ZXJTd2l0Y2hlcy5jcHA6CisgICAgICAgICogYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0
aW9ucy5jcHA6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fp
ci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Okxvd2VyVG9BaXIpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpydW4pOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzaG91bGRDb3B5UHJvcGFnYXRl
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlz
ZTo6QXJnUHJvbWlzZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OkFyZ1Byb21pc2U6OnN3YXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpBcmdQcm9taXNlOjpvcGVyYXRvcj0pOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjp+QXJnUHJvbWlzZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OnNldFRyYXBz
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlz
ZTo6dG1wKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJn
UHJvbWlzZTo6b3BlcmF0b3IgYm9vbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OmtpbmQgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjpwZWVrIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6
Y29uc3VtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFy
Z1Byb21pc2U6Omluc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRv
QWlyOjp0bXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0
bXBQcm9taXNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
Y2FuQmVJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OmNvbW1pdEludGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6Y3Jvc3Nlc0ludGVyZmVyZW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OnNjYWxlRm9yU2hsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6ZWZmZWN0aXZlQWRkcik6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFkZHIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpMb3dlclRvQWlyOjp0cmFwcGluZ0luc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpMb3dlclRvQWlyOjpsb2FkUHJvbWlzZUFueU9wY29kZSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmxvYWRQcm9taXNlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6aW1tKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Yml0SW1tKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Yml0SW1tNjQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjppbW1PclRtcCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyeU9wY29kZUZvclR5cGUpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpvcGNvZGVGb3JUeXBlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kVW5PcCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnByZWZlclJpZ2h0Rm9yUmVzdWx0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kQmlu
T3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRT
aGlmdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyeUFw
cGVuZFN0b3JlVW5PcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OnRyeUFwcGVuZFN0b3JlQmluT3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjpjcmVhdGVTdG9yZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6OnN0b3JlT3Bjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kU3RvcmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpMb3dlclRvQWlyOjptb3ZlRm9yVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnJlbGF4ZWRNb3ZlRm9yVHlwZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnByaW50KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kVHJhcHBpbmcpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpmaW5pc2hBcHBlbmRpbmdJbnN0cnVjdGlvbnMp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpuZXdCbG9jayk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnNwbGl0QmxvY2sp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjplbnN1cmVTcGVj
aWFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6ZW5zdXJl
Q2hlY2tTcGVjaWFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fp
cjo6ZmlsbFN0YWNrbWFwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJU
b0Fpcjo6Y3JlYXRlR2VuZXJpY0NvbXBhcmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpMb3dlclRvQWlyOjpjcmVhdGVCcmFuY2gpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpMb3dlclRvQWlyOjpjcmVhdGVDb21wYXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRlU2VsZWN0KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJ5QXBwZW5kTGVhKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kWDg2RGl2KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kWDg2VURpdik6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmxvYWRMaW5rT3Bjb2RlKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6c3RvcmVDb25kT3Bjb2Rl
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kQ0FT
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kVm9p
ZEF0b21pYyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFw
cGVuZEdlbmVyYWxBdG9taWMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpsb3dlcik6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNQYXRjaHBvaW50U3BlY2lh
bC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQYXRjaHBvaW50U3BlY2lhbDo6Z2VuZXJhdGUpOgor
ICAgICAgICAqIGIzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHA6CisgICAgICAgIChKU0M6OkIz
OjpyZWR1Y2VEb3VibGVUb0Zsb2F0KToKKyAgICAgICAgKiBiMy9CM1JlZHVjZVN0cmVuZ3RoLmNw
cDoKKyAgICAgICAgKiBiMy9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5jcHA6CisgICAgICAg
ICogYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwOgorICAgICAgICAoSlNDOjpCMzo6U3RhY2ttYXBT
cGVjaWFsOjpyZXBzSW1wbCk6CisgICAgICAgIChKU0M6OkIzOjpTdGFja21hcFNwZWNpYWw6OnJl
cEZvckFyZyk6CisgICAgICAgICogYjMvYWlyL0FpckFsbG9jYXRlU3RhY2tCeUdyYXBoQ29sb3Jp
bmcuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjphbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9y
aW5nKToKKyAgICAgICAgKiBiMy9haXIvQWlyRW1pdFNodWZmbGUuY3BwOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjplbWl0U2h1ZmZsZSk6CisgICAgICAgICogYjMvYWlyL0FpckZpeE9idmlvdXNT
cGlsbHMuY3BwOgorICAgICAgICAqIGIzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwOgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpsb3dlckFmdGVyUmVnQWxsb2MpOgorICAgICAgICAqIGIz
L2Fpci9BaXJTdGFja0FsbG9jYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjphdHRl
bXB0QXNzaWdubWVudCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmFzc2lnbik6CisgICAgICAg
ICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Omdl
bmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAg
ICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZURGR1N0YXR1c2VzKToKKyAgICAgICAg
KiBieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0
dGVyU2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdERPTUpJVEdldHRlcik6CisgICAgICAgICogYnl0ZWNv
ZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1Bv
bHltb3JwaGljQWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OmFk
ZENhc2VzKToKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRj
aHBvaW50IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHA6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKToKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RIZWFwLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5h
bCk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgorICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OkRlbGF5ZWRTZXRMb2NhbDo6RGVsYXllZFNldExvY2FsKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lubGluZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OnBsYW5Mb2FkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
c3RvcmUpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2Nrcyk6CisgICAgICAgICogZGZnL0RG
R0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZSk6CisgICAg
ICAgICogZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZTo6aGFuZGxlQmxvY2spOgorICAgICAg
ICAqIGRmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHA6CisgICAgICAgICog
ZGZnL0RGR01vdkhpbnRSZW1vdmFsUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdPYmplY3RB
bGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHUGhhbnRvbUluc2Vy
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3Bw
OgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAg
ICAgICogZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwOgorICAgICAgICAqIGZ0bC9G
VExBYnN0cmFjdEhlYXAuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcDo6Y29t
cHV0ZSk6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlTWVtb3J5KToK
KyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUNDYWxs
UmVhZCk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3Jh
dGVDQ2FsbFdyaXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
OjpkZWNvcmF0ZVBhdGNocG9pbnRSZWFkKToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5OjpkZWNvcmF0ZVBhdGNocG9pbnRXcml0ZSk6CisgICAgICAgIChKU0M6OkZU
TDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5jZVJlYWQpOgorICAgICAgICAo
SlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlRmVuY2VXcml0ZSk6Cisg
ICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5jZWRB
Y2Nlc3MpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmNvbXB1
dGVSYW5nZXNBbmREZWNvcmF0ZUluc3RydWN0aW9ucyk6CisgICAgICAgICogZnRsL0ZUTEpJVEZp
bmFsaXplci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6SklURmluYWxpemVyOjpKSVRGaW5hbGl6
ZXIpOgorICAgICAgICAqIGZ0bC9GVExMaW5rLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpsaW5r
KToKKyAgICAgICAgKiBmdGwvRlRMT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
b3BlcmF0aW9uUG9wdWxhdGVPYmplY3RJbk9TUik6CisgICAgICAgIChKU0M6OkZUTDo6b3BlcmF0
aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUik6CisgICAgICAgICogaGVhcC9NYXJraW5nQ29uc3Ry
YWludFNldC5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtpbmdDb25zdHJhaW50U2V0OjphZGQpOgor
ICAgICAgICAqIGludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwOgorICAgICAgICAoSlNDOjpT
aGFkb3dDaGlja2VuOjp1cGRhdGUpOgorICAgICAgICAqIGppdC9CaW5hcnlTd2l0Y2guY3BwOgor
ICAgICAgICAoSlNDOjpCaW5hcnlTd2l0Y2g6OkJpbmFyeVN3aXRjaCk6CisgICAgICAgIChKU0M6
OkJpbmFyeVN3aXRjaDo6YnVpbGQpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpsb2FkU3RhdHMpOgorICAgICAgICAoSlNDOjpMTElu
dDo6RGF0YTo6c2F2ZVN0YXRzKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OnRyeUluaXRpYWxpemVTcGVjaWVzV2F0
Y2hwb2ludCk6CisgICAgICAgIChKU0M6OkFycmF5UHJvdG90eXBlQWRhcHRpdmVJbmZlcnJlZFBy
b3BlcnR5V2F0Y2hwb2ludDo6aGFuZGxlRmlyZSk6CisgICAgICAgICogcnVudGltZS9FcnJvcklu
c3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJs
b2NrRnVuY3Rvcjo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2NrRnVuY3Rvcik6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1
bmN0b3I6Om9wZXJhdG9yKCkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGaW5kRmlyc3RDYWxs
ZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjpmb3VuZENhbGxGcmFtZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0
b3I6OmluZGV4IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6
ZURhdGVUaW1lRm9ybWF0KToKKyAgICAgICAgKEpTQzo6bG9jYWxlRGF0YSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OnRvRGF0ZVRpbWVPcHRpb25zQW55RGF0ZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE51bWJl
ckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdCk6CisgICAgICAgIChKU0M6OmxvY2FsZURh
dGEpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5Q29uc3RydWN0b3Jz
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5cy5jcHA6CisgICAgICAgICogcnVudGltZS9OdWxs
R2V0dGVyRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpOdWxsR2V0dGVyRnVuY3Rpb246Omdl
dENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6Y2FsbFJldHVyblVuZGVmaW5lZCk6IERlbGV0ZWQu
CisgICAgICAgICogcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlND
OjpOdWxsU2V0dGVyRnVuY3Rpb246OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6Y2FsbFJl
dHVyblVuZGVmaW5lZCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Qcm9taXNlRGVmZXJy
ZWRUaW1lci5jcHA6CisgICAgICAgIChKU0M6OlByb21pc2VEZWZlcnJlZFRpbWVyOjpkb1dvcmsp
OgorICAgICAgICAoSlNDOjpQcm9taXNlRGVmZXJyZWRUaW1lcjo6YWRkUGVuZGluZ1Byb21pc2Up
OgorICAgICAgICAoSlNDOjpQcm9taXNlRGVmZXJyZWRUaW1lcjo6Y2FuY2VsUGVuZGluZ1Byb21p
c2UpOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
VHlwZVByb2ZpbGVyOjppbnNlcnROZXdMb2NhdGlvbik6CisgICAgICAgICogcnVudGltZS9UeXBl
UHJvZmlsZXJMb2cuY3BwOgorICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXJMb2c6OnByb2Nlc3NM
b2dFbnRyaWVzKToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlKToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQ
bGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6bW92ZVRvU3RhdGUpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpwYXJzZUFuZFZhbGlkYXRlTW9kdWxlKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6cHJlcGFyZSk6CisgICAgICAgIChKU0M6Oldhc206OkJC
UVBsYW46OmNvbXBpbGVGdW5jdGlvbnMpOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpj
b21wbGV0ZSk6CisgICAgICAgICogd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6dHJhcEhhbmRsZXIpOgorICAgICAgICAqIHdhc20vV2FzbU9NR1Bs
YW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjpPTUdQbGFuKToKKyAgICAgICAg
KEpTQzo6V2FzbTo6T01HUGxhbjo6d29yayk6CisgICAgICAgICogd2FzbS9XYXNtUGxhbi5jcHA6
CisgICAgICAgIChKU0M6Oldhc206OlBsYW46OmZhaWwpOgorICAgICAgICAqIHdhc20vV2FzbVNp
Z25hdHVyZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjph
ZG9wdCk6CisgICAgICAgICogd2FzbS9XYXNtV29ya2xpc3QuY3BwOgorICAgICAgICAoSlNDOjpX
YXNtOjpXb3JrbGlzdDo6ZW5xdWV1ZSk6CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBiMy9CM0NoZWNrU3BlY2lhbC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpDaGVja1Nw
ZWNpYWw6OmZvckVhY2hBcmcpOgorICAgICAgICAoSlNDOjpCMzo6Q2hlY2tTcGVjaWFsOjpnZW5l
cmF0ZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Om51bUIzQXJncyk6IERlbGV0ZWQuCisgICAg
ICAgICogYjMvQjNEdXBsaWNhdGVUYWlscy5jcHA6CisgICAgICAgICogYjMvQjNFbGltaW5hdGVD
b21tb25TdWJleHByZXNzaW9ucy5jcHA6CisgICAgICAgICogYjMvQjNGaXhTU0EuY3BwOgorICAg
ICAgICAoSlNDOjpCMzo6ZGVtb3RlVmFsdWVzKToKKyAgICAgICAgKiBiMy9CM0ZvbGRQYXRoQ29u
c3RhbnRzLmNwcDoKKyAgICAgICAgKiBiMy9CM0luZmVyU3dpdGNoZXMuY3BwOgorICAgICAgICAq
IGIzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwOgorICAgICAgICAoKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpMb3dlclRvQWlyOjpMb3dlclRvQWlyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6TG93ZXJUb0Fpcjo6cnVuKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
TG93ZXJUb0Fpcjo6c2hvdWxkQ29weVByb3BhZ2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OkFyZ1Byb21pc2UpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjpzd2FwKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6b3Bl
cmF0b3I9KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJn
UHJvbWlzZTo6fkFyZ1Byb21pc2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpBcmdQcm9taXNlOjpzZXRUcmFwcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OnRtcCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6Om9wZXJhdG9yIGJvb2wgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9t
aXNlOjpraW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJU
b0Fpcjo6QXJnUHJvbWlzZTo6cGVlayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OmNvbnN1bWUpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjppbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dG1wKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dG1wUHJvbWlzZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNhbkJlSW50ZXJuYWwpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpjb21taXRJbnRlcm5hbCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyb3NzZXNJbnRlcmZlcmVu
Y2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzY2FsZUZv
clNobCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmVmZmVj
dGl2ZUFkZHIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjph
ZGRyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJhcHBp
bmdJbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG9h
ZFByb21pc2VBbnlPcGNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpsb2FkUHJvbWlzZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6OmltbSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OmJpdEltbSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OmJpdEltbTY0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
aW1tT3JUbXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0
cnlPcGNvZGVGb3JUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJU
b0Fpcjo6b3Bjb2RlRm9yVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6OmFwcGVuZFVuT3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpwcmVmZXJSaWdodEZvclJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZEJpbk9wKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kU2hpZnQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0cnlBcHBlbmRTdG9yZVVuT3ApOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0cnlBcHBlbmRTdG9yZUJpbk9wKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRlU3RvcmUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzdG9yZU9wY29k
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFN0
b3JlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bW92ZUZv
clR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpyZWxh
eGVkTW92ZUZvclR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRv
QWlyOjpwcmludCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OmFwcGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFw
cGVuZFRyYXBwaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fp
cjo6ZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bmV3QmxvY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpMb3dlclRvQWlyOjpzcGxpdEJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6ZW5zdXJlU3BlY2lhbCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmVuc3VyZUNoZWNrU3BlY2lhbCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmZpbGxTdGFja21hcCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZUdlbmVyaWNDb21wYXJl
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRlQnJh
bmNoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRl
Q29tcGFyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNy
ZWF0ZVNlbGVjdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OnRyeUFwcGVuZExlYSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OmFwcGVuZFg4NkRpdik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6OmFwcGVuZFg4NlVEaXYpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpsb2FkTGlua09wY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6OnN0b3JlQ29uZE9wY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZENBUyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFZvaWRBdG9taWMpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRHZW5lcmFsQXRvbWljKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG93ZXIpOiBEZWxldGVkLgor
ICAgICAgICAqIGIzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwOgorICAgICAgICAoSlNDOjpCMzo6
UGF0Y2hwb2ludFNwZWNpYWw6OmdlbmVyYXRlKToKKyAgICAgICAgKiBiMy9CM1JlZHVjZURvdWJs
ZVRvRmxvYXQuY3BwOgorICAgICAgICAoSlNDOjpCMzo6cmVkdWNlRG91YmxlVG9GbG9hdCk6Cisg
ICAgICAgICogYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHA6CisgICAgICAgICogYjMvQjNTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMuY3BwOgorICAgICAgICAqIGIzL0IzU3RhY2ttYXBTcGVjaWFsLmNw
cDoKKyAgICAgICAgKEpTQzo6QjM6OlN0YWNrbWFwU3BlY2lhbDo6cmVwc0ltcGwpOgorICAgICAg
ICAoSlNDOjpCMzo6U3RhY2ttYXBTcGVjaWFsOjpyZXBGb3JBcmcpOgorICAgICAgICAqIGIzL2Fp
ci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6YWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZyk6CisgICAgICAgICogYjMvYWlyL0Fp
ckVtaXRTaHVmZmxlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6ZW1pdFNodWZmbGUpOgor
ICAgICAgICAqIGIzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcDoKKyAgICAgICAgKiBiMy9h
aXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6bG93
ZXJBZnRlclJlZ0FsbG9jKToKKyAgICAgICAgKiBiMy9haXIvQWlyU3RhY2tBbGxvY2F0aW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6YXR0ZW1wdEFzc2lnbm1lbnQpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjphc3NpZ24pOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVERkdTdGF0dXNlcyk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRE
T01KSVRHZXR0ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0LmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAg
ICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcyk6CisgICAgICAgIChKU0M6OlBv
bHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Qcm9wZXJ0
eUNvbmRpdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxs
VmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCBjb25zdCk6CisgICAgICAgICog
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVT
dHViSW5mbzo6YWRkQWNjZXNzQ2FzZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SGVhcC5j
cHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGRmZy9ERkdBcmd1
bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpEZWxheWVkU2V0TG9j
YWw6OkRlbGF5ZWRTZXRMb2NhbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmlubGluaW5nQ29zdCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGlu
ZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9Jbmxp
bmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5p
bmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwbGFuTG9hZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnN0b3JlKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmxpbmtCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmxpbmtCbG9ja3MpOgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5jcHA6CisgICAgICAgICog
ZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBs
YWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UpOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyQ2hlY2tD
b21iaW5pbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW50ZWdlckNoZWNrQ29tYmlu
aW5nUGhhc2U6OmhhbmRsZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHSW50ZWdlclJhbmdlT3B0
aW1pemF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdNb3ZIaW50UmVtb3ZhbFBoYXNl
LmNwcDoKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHA6
CisgICAgICAgICogZGZnL0RGR1BoYW50b21JbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICog
ZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3RvcmVC
YXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdWYXJhcmdzRm9yd2Fy
ZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXA6OmNvbXB1dGUpOgorICAgICAgICAqIGZ0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5OjpkZWNvcmF0ZU1lbW9yeSk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVDQ2FsbFJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6
OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlQ0NhbGxXcml0ZSk6CisgICAgICAgIChK
U0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVQYXRjaHBvaW50UmVhZCk6
CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVQYXRj
aHBvaW50V3JpdGUpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6
OmRlY29yYXRlRmVuY2VSZWFkKToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5OjpkZWNvcmF0ZUZlbmNlV3JpdGUpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0
SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlRmVuY2VkQWNjZXNzKToKKyAgICAgICAgKEpTQzo6RlRM
OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Ojpjb21wdXRlUmFuZ2VzQW5kRGVjb3JhdGVJbnN0cnVj
dGlvbnMpOgorICAgICAgICAqIGZ0bC9GVExKSVRGaW5hbGl6ZXIuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OkpJVEZpbmFsaXplcjo6SklURmluYWxpemVyKToKKyAgICAgICAgKiBmdGwvRlRMTGlu
ay5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICogZnRsL0ZUTE9wZXJh
dGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5P
U1IpOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1Ip
OgorICAgICAgICAqIGhlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwOgorICAgICAgICAoSlND
OjpNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9TaGFk
b3dDaGlja2VuLmNwcDoKKyAgICAgICAgKEpTQzo6U2hhZG93Q2hpY2tlbjo6dXBkYXRlKToKKyAg
ICAgICAgKiBqaXQvQmluYXJ5U3dpdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6QmluYXJ5U3dpdGNo
OjpCaW5hcnlTd2l0Y2gpOgorICAgICAgICAoSlNDOjpCaW5hcnlTd2l0Y2g6OmJ1aWxkKToKKyAg
ICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6
bG9hZFN0YXRzKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnNhdmVTdGF0cyk6CisgICAg
ICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFycmF5UHJv
dG90eXBlOjp0cnlJbml0aWFsaXplU3BlY2llc1dhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpB
cnJheVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ6OmhhbmRsZUZp
cmUpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6
OkZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3I6OkZpbmRGaXJzdENhbGxl
ckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGaW5k
Rmlyc3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjpvcGVyYXRvcigpKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2NrRnVuY3Rv
cjo6Zm91bmRDYWxsRnJhbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGaW5kRmly
c3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjppbmRleCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlND
OjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCk6CisgICAgICAg
IChKU0M6OmxvY2FsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjp0b0RhdGVUaW1lT3B0
aW9uc0FueURhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJG
b3JtYXQpOgorICAgICAgICAoSlNDOjpsb2NhbGVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0pTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgICogcnVudGltZS9K
U1R5cGVkQXJyYXlQcm90b3R5cGVzLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZWRBcnJh
eXMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvTnVsbEdldHRlckZ1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6TnVsbEdldHRlckZ1bmN0aW9uOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6
OmNhbGxSZXR1cm5VbmRlZmluZWQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvTnVsbFNl
dHRlckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6TnVsbFNldHRlckZ1bmN0aW9uOjpnZXRD
YWxsRGF0YSk6CisgICAgICAgIChKU0M6OmNhbGxSZXR1cm5VbmRlZmluZWQpOiBEZWxldGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvbWlzZURlZmVycmVkVGltZXIuY3BwOgorICAgICAgICAoSlND
OjpQcm9taXNlRGVmZXJyZWRUaW1lcjo6ZG9Xb3JrKToKKyAgICAgICAgKEpTQzo6UHJvbWlzZURl
ZmVycmVkVGltZXI6OmFkZFBlbmRpbmdQcm9taXNlKToKKyAgICAgICAgKEpTQzo6UHJvbWlzZURl
ZmVycmVkVGltZXI6OmNhbmNlbFBlbmRpbmdQcm9taXNlKToKKyAgICAgICAgKiBydW50aW1lL1R5
cGVQcm9maWxlci5jcHA6CisgICAgICAgIChKU0M6OlR5cGVQcm9maWxlcjo6aW5zZXJ0TmV3TG9j
YXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcDoKKyAgICAgICAg
KEpTQzo6VHlwZVByb2ZpbGVyTG9nOjpwcm9jZXNzTG9nRW50cmllcyk6CisgICAgICAgICogd2Fz
bS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OnBhcnNlQW5kQ29t
cGlsZSk6CisgICAgICAgICogd2FzbS9XYXNtQkJRUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OkJCUVBsYW46Om1vdmVUb1N0YXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6
cGFyc2VBbmRWYWxpZGF0ZU1vZHVsZSk6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OnBy
ZXBhcmUpOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpjb21waWxlRnVuY3Rpb25zKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6Y29tcGxldGUpOgorICAgICAgICAqIHdhc20v
V2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OnRyYXBIYW5k
bGVyKToKKyAgICAgICAgKiB3YXNtL1dhc21PTUdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6T01HUGxhbjo6T01HUGxhbik6CisgICAgICAgIChKU0M6Oldhc206Ok9NR1BsYW46Ondvcmsp
OgorICAgICAgICAqIHdhc20vV2FzbVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpQbGFu
OjpmYWlsKToKKyAgICAgICAgKiB3YXNtL1dhc21TaWduYXR1cmUuY3BwOgorICAgICAgICAoSlND
OjpXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6YWRvcHQpOgorICAgICAgICAqIHdhc20vV2Fz
bVdvcmtsaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6V29ya2xpc3Q6OmVucXVldWUpOgor
CiAyMDE3LTA5LTAzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAg
ICAgICAgIFtERkddIE9wdGltaXplIFdlYWtNYXA6OmdldCBieSBhZGRpbmcgaW50cmluc2ljIGFu
ZCBmaXh1cApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwppbmRleCBhZjg1ZjVmM2NkNDU3YTQ0ZTk5MjVhOWFjZjM2ZjFjMTlmMzlkYTI3Li42
MGYyZGUxODUxZTIzMWQ2YWJmN2FjODRkOGFmMDcwMWE0YmExZThmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3
IEBACisyMDE3LTA5LTExICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgor
CisgICAgICAgIERvIHVuaWZpZWQgc291cmNlIGJ1aWxkcyBmb3IgSlNDCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYwNzYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBzY3Jp
cHQgdGhhdCB3aWxsIGF1dG9tYXRpY2FsbHkgYnVuZGxlIHNvdXJjZQorICAgICAgICBmaWxlcywg
d2hpY2ggaXMgY3VycmVudGx5IG9ubHkgdXNlZCBieSB0aGUgQ01ha2UgYnVpbGQuIEl0J3MKKyAg
ICAgICAgaW1wb3J0YW50IHRoYXQgd2UgdXNlIHRoZSBzYW1lIHNjcmlwdCB0byBnZW5lcmF0ZSB0
aGUgdGhlIGJ1bmRsZXMKKyAgICAgICAgZm9yIHRoZSBDTWFrZSBidWlsZCBhcyB0aGUgWGNvZGUg
YnVpbGQuIElmIHdlIGRpZG4ndCBkbyB0aGlzIHRoZW4KKyAgICAgICAgaXQncyBsaWtlbHkgdGhh
dCB0aGVyZSB3b3VsZCBiZSBidWlsZCBlcnJvcnMgdGhhdCBvY2N1ciBpbiBvbmx5CisgICAgICAg
IG9uZSBidWlsZCBzeXN0ZW0uIE9uIHRoZSBzYW1lIG5vdGUsIHdlIGFsc28gbmVlZCB0byBiZSBj
YXJlZnVsIHRvCisgICAgICAgIG5vdCBidW5kbGUgcGxhdGZvcm0gc3BlY2lmaWMgc291cmNlIGZp
bGVzIHdpdGggcGxhdGZvcm0KKyAgICAgICAgaW5kZXBlbmRlbnQgb25lcy4gVGhlcmUgYXJlIGEg
Y291cGxlIG9mIHRoaW5ncyB0aGUgc2NyaXB0IGRvZXMgbm90CisgICAgICAgIGN1cnJlbnRseSBo
YW5kbGUgYnV0IGFyZSBub3QgZXNzZW50aWFsIGZvciB0aGUgQ01ha2UgYnVpbGQuIEZpcnN0LAor
ICAgICAgICBpdCBkb2VzIG5vdCBoYW5kbGUgdGhlIG1heCBidW5kbGUgc2l6ZSByZXN0cmljdGlv
bnMgdGhhdCB0aGUgWGNvZGUKKyAgICAgICAgYnVpbGQgd2lsbCByZXF1aXJlLiBJdCBhbHNvIGRv
ZXMgbm90IGhhbmRsZSBDIGZpbGVzLgorCisgICAgICAgIFRoZSB1bmlmaWVkIHNvdXJjZSBnZW5l
cmF0b3Igc2NyaXB0IHdvcmtzIGJ5IGNvbGxlY3RpbmcgZ3JvdXBzIG9mCisgICAgICAgIHVwIHRv
IDggZmlsZXMgZnJvbSB0aGUgc2FtZSBkaXJlY3RvcnkuIFdlIGRvbid0IGJ1bmRsZSBmaWxlcyBm
cm9tCisgICAgICAgIGFjcm9zcyBkaXJlY3RvcmllcyBzaW5jZSBJIGRpZG4ndCBzZWUgYSBzcGVl
ZHVwIGZyb20gZG9pbmcKKyAgICAgICAgc28uIEFkZGl0aW9uYWxseSwgc3BsaXR0aW5nIGF0IHRo
ZSBkaXJlY3RvcnkgYm91bmRhcnkgbWVhbnMgdGhhdAorICAgICAgICBpdCBpcyBsZXNzIGxpa2Vs
eSB0aGF0IGFkZGluZyBhIG5ldyBmaWxlIHdpbGwgZm9yY2UgYSAiY2xlYW4iCisgICAgICAgIGJ1
aWxkLiBUaGlzIHdvdWxkIGhhcHBlbiBiZWNhdXNlIHRoZSBuZXcgZmlsZSB3aWxsIHNoaWZ0IGV2
ZXJ5CisgICAgICAgIHN1YnNlcXVlbnQgZmlsZSBpbnRvIHRoZSBuZXh0IHVuaWZpZWQgc291cmNl
IGJ1bmRsZS4KKworICAgICAgICBVc2luZyB1bmlmaWVkIHNvdXJjZXMgYXBwZWFycyB0byBiZSBh
IHJvdWdobHkgMy41eCBidWlsZCB0aW1lCisgICAgICAgIHNwZWVkIHVwIGZvciBjbGVhbiBidWls
ZHMgb24gbXkgTUJQIGFuZCBhcHBlYXJzIHRvIGhhdmUgYQorICAgICAgICBuZWdsaWdpYmxlIGVm
ZmVjdCBpbiBpbmNyZW1lbnRhbCBidWlsZHMuCisKKyAgICAgICAgKiBnZW5lcmF0ZS11bmlmaWVk
LXNvdXJjZS1idW5kbGVzLnJiOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvQXNzZXJ0aW9ucy5oOgor
CiAyMDE3LTA5LTAzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAg
ICAgICAgIFtERkddIE9wdGltaXplIFdlYWtNYXA6OmdldCBieSBhZGRpbmcgaW50cmluc2ljIGFu
ZCBmaXh1cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGRhMWJhMWQ5YmUx
NTdiNTgzYzgxMDc4YmFkYmVmZGVhZDViYjIwZmEuLjMwMDUxMmQ0ZjMwZWE5ZGIzYmQ5NDA3MzI5
NGM4NmNiY2Q2NDkwN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTQ2
LDcgKzQ2LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7SUNVX0lOQ0xVREVfRElSU30iCiApCiAKLXNldChKYXZhU2NyaXB0Q29yZV9TT1VS
Q0VTCitzZXQoSmF2YVNjcmlwdENvcmVfT0dfU09VUkNFUwogICAgIEFQSS9KU0Jhc2UuY3BwCiAg
ICAgQVBJL0pTQ1Rlc3RSdW5uZXJVdGlscy5jcHAKICAgICBBUEkvSlNDYWxsYmFja0NvbnN0cnVj
dG9yLmNwcApAQCAtODc5LDcgKzg3OSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAg
ICAgcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcAogICAgIHJ1bnRpbWUvUHJvdG90eXBlTWFwLmNw
cAogICAgIHJ1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAKLSAgICBydW50aW1lL1Byb3h5T2Jq
ZWN0LmNwcAogICAgIHJ1bnRpbWUvUHJveHlSZXZva2UuY3BwCiAgICAgcnVudGltZS9SZWZsZWN0
T2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvUmVnRXhwLmNwcApAQCAtMTAxNyw2ICsxMDE2LDExIEBA
IHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgeWFyci9ZYXJyU3ludGF4Q2hlY2tlci5j
cHAKICkKIAorIyBUaGVzZSBhcmUgc3BlY2lhbCBmaWxlcyB0aGF0IHdlIGNhbid0IG9yIGRvbid0
IHdhbnQgdG8gdW5pZmllZCBzb3VyY2UgY29tcGlsZQorbGlzdChBUFBFTkQgSmF2YVNjcmlwdENv
cmVfU09VUkNFUworICAgIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwCispCisKICMgRXh0cmEgZmxh
Z3MgZm9yIGNvbXBpbGUgc291cmNlcyBjYW4gZ28gaGVyZS4KIGlmIChOT1QgTVNWQykKICAgICBz
ZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMocnVudGltZS9Qcm94eU9iamVjdC5jcHAgUFJPUEVS
VElFUyBDT01QSUxFX0ZMQUdTIC1mbm8tb3B0aW1pemUtc2libGluZy1jYWxscykKQEAgLTEzMzYs
NiArMTM0MCw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBNQUlOX0RFUEVOREVOQ1kgJHtD
TUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2NyZWF0ZV9yZWdleF90YWJsZXMKICAgICBDT01NQU5E
ICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9jcmVhdGVf
cmVnZXhfdGFibGVzID4gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9SZWdF
eHBKaXRUYWJsZXMuaAogICAgIFZFUkJBVElNKQorbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVf
SEVBREVSUyAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L1JlZ0V4cEppdFRh
Ymxlcy5oKQogV0VCS0lUX0FERF9TT1VSQ0VfREVQRU5ERU5DSUVTKCR7Q01BS0VfQ1VSUkVOVF9T
T1VSQ0VfRElSfS95YXJyL1lhcnJQYXR0ZXJuLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L1JlZ0V4cEppdFRhYmxlcy5oKQogCiBhZGRfY3VzdG9tX2NvbW1hbmQoCkBA
IC0xMzQ1LDcgKzEzNTAsNyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgQ09NTUFORCAke1BZ
VEhPTl9FWEVDVVRBQkxFfSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZ2VuZXJhdGVZYXJyQ2Fub25p
Y2FsaXplVW5pY29kZSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vdWNkL0Nhc2VGb2xkaW5nLnR4dCAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L1lhcnJDYW5vbmljYWxpemVVbmlj
b2RlLmNwcAogICAgIFZFUkJBVElNKQogCi1saXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TT1VS
Q0VTCitsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9PR19TT1VSQ0VTCiAgICAgJHtERVJJVkVE
X1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9ZYXJyQ2Fub25pY2FsaXplVW5pY29kZS5jcHAK
ICkKIApAQCAtMTM1Niw2ICsxMzYxLDcgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAgIERFUEVO
RFMgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3BhcnNlci9LZXl3b3Jkcy50YWJsZQogICAg
IENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9
L0tleXdvcmRMb29rdXBHZW5lcmF0b3IucHkgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3Bh
cnNlci9LZXl3b3Jkcy50YWJsZSA+ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vS2V5d29yZExvb2t1cC5oCiAgICAgVkVSQkFUSU0pCitsaXN0KEFQUEVORCBKYXZhU2NyaXB0
Q29yZV9IRUFERVJTICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vS2V5d29y
ZExvb2t1cC5oKQogV0VCS0lUX0FERF9TT1VSQ0VfREVQRU5ERU5DSUVTKCR7Q01BS0VfQ1VSUkVO
VF9TT1VSQ0VfRElSfS9wYXJzZXIvTGV4ZXIuY3BwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vS2V5d29yZExvb2t1cC5oKQogCiAKQEAgLTE1MDMsNyArMTUwOSw3IEBAIGFk
ZF9jdXN0b21fY29tbWFuZCgKICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke0RFUklWRURfU09VUkNF
U19KQVZBU0NSSVBUQ09SRV9ESVJ9CiApCiAKLWxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKK2xpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMKICAgICAke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0Fpck9wY29kZS5oCiAgICAgJHtERVJJVkVEX1NP
VVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9BaXJPcGNvZGVHZW5lcmF0ZWQuaAogKQpAQCAtMTUx
NSw3ICsxNTIxLDcgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAgIENPTU1BTkQgJHtQWVRIT05f
RVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJhdGUtanMtYnVp
bHRpbnMucHkgLS1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLS1vdXRwdXQtZGlyZWN0b3J5ICR7
REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0gLS1jb21iaW5lZCAke0phdmFTY3Jp
cHRDb3JlX0JVSUxUSU5TX1NPVVJDRVN9CiAgICAgVkVSQkFUSU0pCiAKLWxpc3QoQVBQRU5EIEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMKK2xpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX09HX1NPVVJD
RVMKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFW
QVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVycy5j
cHAKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9J
bnNwZWN0b3JQcm90b2NvbE9iamVjdHMuY3BwCkBAIC0xNTY1LDYgKzE1NzEsMjUgQEAgZWxzZSAo
KQogICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIlVua25vd24gQ1BVIikKIGVuZGlmICgpCiAKK2Zv
cmVhY2ggKF9zb3VyY2VGaWxlIElOIExJU1RTIEphdmFTY3JpcHRDb3JlX09HX1NPVVJDRVMpCisg
ICAgaWYgKE5PVCAoJHtfc291cmNlRmlsZX0gTUFUQ0hFUyAiLipjJCIpKQorICAgICAgICBzZXRf
c291cmNlX2ZpbGVzX3Byb3BlcnRpZXMoJHtfc291cmNlRmlsZX0gUFJPUEVSVElFUyBIRUFERVJf
RklMRV9PTkxZIE9OKQorICAgICAgICBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJT
ICR7X3NvdXJjZUZpbGV9KQorICAgIGVuZGlmICgpCitlbmRmb3JlYWNoICgpCisKK2V4ZWN1dGVf
cHJvY2VzcyhDT01NQU5EICR7UlVCWV9FWEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRfU09VUkNF
X0RJUn0vLi4vV1RGL2dlbmVyYXRlLXVuaWZpZWQtc291cmNlLWJ1bmRsZXMucmIKKyAgIi0tZGVy
aXZlZC1zb3VyY2VzLXBhdGgiICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0g
JHtKYXZhU2NyaXB0Q29yZV9PR19TT1VSQ0VTfQorICBSRVNVTFRfVkFSSUFCTEUgZ2VuZXJhdGVV
bmlmaWVkU291cmNlc1Jlc3VsdAorICBPVVRQVVRfVkFSSUFCTEUgZ2VuZXJhdGVVbmlmaWVkU291
cmNlc091dHB1dAorKQorCitpZiAoJHtnZW5lcmF0ZVVuaWZpZWRTb3VyY2VzUmVzdWx0fSkKKyAg
ICBtZXNzYWdlKCJXYXJuaW5nIHVuaWZpZWQtc291cmNlLWJ1bmRsZXIucmIgZXhpdGVkIHdpdGgg
bm9uLXplcm8gc3RhdHVzIG5vdCBhcHBlbmRpbmcgcmVzdWx0cyIpCitlbHNlICgpCisgICAgbGlz
dChBUFBFTkQgSmF2YVNjcmlwdENvcmVfU09VUkNFUyAke2dlbmVyYXRlVW5pZmllZFNvdXJjZXNP
dXRwdXR9KQorZW5kaWYgKCkKKwogV0VCS0lUX0ZSQU1FV09SS19ERUNMQVJFKEphdmFTY3JpcHRD
b3JlKQogV0VCS0lUX0lOQ0xVREVfQ09ORklHX0ZJTEVTX0lGX0VYSVNUUygpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuY3BwCmluZGV4IGJlYjg3OTI4NTg4ZmQ1
YjZkNzMxMGY3ZjM0ODViYzE3NWJhM2RiZmYuLjdjNTM3MmFjNWUyNzExNDE5OTNmNzhiZTE2ODNl
MDkzMTg1M2M4OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNr
U3BlY2lhbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFs
LmNwcApAQCAtMzYsMTEgKzM2LDEzIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMg
ewogCi11c2luZyBuYW1lc3BhY2UgQWlyOwordXNpbmcgSW5zdCA9IEFpcjo6SW5zdDsKK3VzaW5n
IEFyZyA9IEFpcjo6QXJnOwordXNpbmcgR2VuZXJhdGlvbkNvbnRleHQgPSBBaXI6OkdlbmVyYXRp
b25Db250ZXh0OwogCiBuYW1lc3BhY2UgewogCi11bnNpZ25lZCBudW1CM0FyZ3MoQjM6OktpbmQg
a2luZCkKK3Vuc2lnbmVkIG51bUIzQXJncyhLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5k
Lm9wY29kZSgpKSB7CiAgICAgY2FzZSBDaGVja0FkZDoKQEAgLTEwOCw2ICsxMTAsNyBAQCBJbnN0
IENoZWNrU3BlY2lhbDo6aGlkZGVuQnJhbmNoKGNvbnN0IEluc3QmIGluc3QpIGNvbnN0CiAKIHZv
aWQgQ2hlY2tTcGVjaWFsOjpmb3JFYWNoQXJnKEluc3QmIGluc3QsIGNvbnN0IFNjb3BlZExhbWJk
YTxJbnN0OjpFYWNoQXJnQ2FsbGJhY2s+JiBjYWxsYmFjaykKIHsKKyAgICB1c2luZyBuYW1lc3Bh
Y2UgQWlyOwogICAgIHN0ZDo6b3B0aW9uYWw8V2lkdGg+IG9wdGlvbmFsRGVmQXJnV2lkdGg7CiAg
ICAgSW5zdCBoaWRkZW4gPSBoaWRkZW5CcmFuY2goaW5zdCk7CiAgICAgaGlkZGVuLmZvckVhY2hB
cmcoCkBAIC0xNTYsNiArMTU5LDcgQEAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gQ2hlY2tTcGVj
aWFsOjpzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0JiBpbnN0KQogCiBDQ2FsbEhlbHBlcnM6Okp1
bXAgQ2hlY2tTcGVjaWFsOjpnZW5lcmF0ZShJbnN0JiBpbnN0LCBDQ2FsbEhlbHBlcnMmIGppdCwg
R2VuZXJhdGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsK
ICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZmFpbCA9IGhpZGRlbkJyYW5jaChpbnN0KS5nZW5lcmF0
ZShqaXQsIGNvbnRleHQpOwogICAgIEFTU0VSVChmYWlsLmlzU2V0KCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNEdXBsaWNhdGVUYWlscy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNEdXBsaWNhdGVUYWlscy5jcHAKaW5kZXggZmQ2NTc5MGU5OWMy
ZmVhZDRmNWZiYjllYWY2MGMxYTc1YzkzMjI1NS4uY2ZmNDRhNGMxZTAwOTFlYmE0YTc4M2IzOGYz
NWEzYmRjZWQxYmNmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRHVw
bGljYXRlVGFpbHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0R1cGxpY2F0
ZVRhaWxzLmNwcApAQCAtNDQsNyArNDQsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIz
IHsKIAogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3Bh
Y2UgQjNEdXBsaWNhdGVUYWlsc0ludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2Ug
PSBmYWxzZTsKK30KIAogY2xhc3MgRHVwbGljYXRlVGFpbHMgewogcHVibGljOgpAQCAtOTQsNyAr
OTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZGVtb3Rl
VmFsdWVzKG1fcHJvYywgdmFsdWVzVG9EZW1vdGUpOwotICAgICAgICBpZiAodmVyYm9zZSkgewor
ICAgICAgICBpZiAoQjNEdXBsaWNhdGVUYWlsc0ludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAg
ICAgICBkYXRhTG9nKCJQcm9jZWR1cmUgYWZ0ZXIgdmFsdWUgZGVtb3Rpb246XG4iKTsKICAgICAg
ICAgICAgIGRhdGFMb2cobV9wcm9jKTsKICAgICAgICAgfQpAQCAtMTE2LDcgKzExOCw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIC8vIHBvaW50LgogICAgICAgICAgICAgY2FuZGlkYXRlcy5yZW1v
dmUoYmxvY2spOwogCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChC
M0R1cGxpY2F0ZVRhaWxzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiRHVwbGljYXRpbmcgIiwgKnRhaWwsICIgaW50byAiLCAqYmxvY2ssICJcbiIpOwogCiAgICAg
ICAgICAgICBibG9jay0+cmVtb3ZlTGFzdChtX3Byb2MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3Bw
CmluZGV4IDFhZTQzNTU2MTUxN2U5MWMwOWU2NjhjNjllYWZjMTU0YTc0OGJkZTYuLjlhMmU5OGFh
NDM4NTYyODAwOWYxMmE0NDUyNGE0ZDFhZmY1NWY5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5j
cHAKQEAgLTUzLDcgKzUzLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5h
bWVzcGFjZSB7CiAKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEIzRWxp
bWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2
ZXJib3NlID0gZmFsc2U7Cit9CiAKIC8vIEZJWE1FOiBXZSBjb3VsZCB0cmVhdCBQYXRjaHBvaW50
cyB3aXRoIGEgbm9uLWVtcHR5IHNldCBvZiByZWFkcyBhcyBhICJtZW1vcnkgdmFsdWUiIGFuZCBz
b21laG93CiAvLyBlbGltaW5hdGUgcmVkdW5kYW50IG9uZXMuIFdlIHdvdWxkIG5lZWQgc29tZSB3
YXkgb2YgZGV0ZXJtaW5pbmcgaWYgdHdvIHBhdGNocG9pbnRzIGFyZSByZXBsYWNhYmxlLgpAQCAt
MTYwLDcgKzE2Miw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9u
c0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQjMgYmVmb3JlIENTRTpc
biIsIG1fcHJvYyk7CiAgICAgICAgIAogICAgICAgICBtX3Byb2MucmVzZXRWYWx1ZU93bmVycygp
OwpAQCAtMTg4LDcgKzE5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgZGF0YS5t
ZW1vcnlWYWx1ZXNBdFRhaWwuYWRkKG1lbW9yeSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhw
cmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJCbG9j
ayAiLCAqYmxvY2ssICI6ICIsIGRhdGEsICJcbiIpOwogICAgICAgICB9CiAKQEAgLTE5Niw3ICsx
OTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gcG9zdE9yZGVyID0g
bV9wcm9jLmJsb2Nrc0luUG9zdE9yZGVyKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHBv
c3RPcmRlci5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIG1fYmxvY2sgPSBwb3N0T3JkZXJb
aV07Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0VsaW1pbmF0
ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiTG9va2luZyBhdCAiLCAqbV9ibG9jaywgIjpcbiIpOwogCiAgICAgICAgICAgICBt
X2RhdGEgPSBJbXB1cmVCbG9ja0RhdGEoKTsKQEAgLTIyMiw3ICsyMjQsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKICAgICAgICAgfQogCi0g
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHBy
ZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQjMgYWZ0ZXIg
Q1NFOlxuIiwgbV9wcm9jKTsKIAogICAgICAgICByZXR1cm4gbV9jaGFuZ2VkOwpAQCAtNDg3LDcg
KzQ4OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGV4cGVuc2l2ZSwgYnV0IGluIHRoZSBvdmVy
d2hlbG1pbmcgbWFqb3JpdHkgb2YgY2FzZXMgaXQgd2lsbCBhbG1vc3QgaW1tZWRpYXRlbHkgaGl0
IGFuIAogICAgICAgICAvLyBvcGVyYXRpb24gdGhhdCBpbnRlcmZlcmVzLgogCi0gICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0lu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygqbV92YWx1ZSwgIjogbG9va2lu
ZyBmb3J3YXJkIGZvciBzdG9yZXMgdG8gIiwgKnB0ciwgIi4uLlxuIik7CiAKICAgICAgICAgLy8g
Rmlyc3Qgc2VhcmNoIGZvcndhcmQgaW4gdGhpcyBiYXNpYyBibG9jay4KQEAgLTU1Nyw3ICs1NTks
NyBAQCBwcml2YXRlOgogICAgICAgICBpZiAobWF0Y2hlcy5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCM0Vs
aW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICBkYXRhTG9nKCJFbGltaW5hdGluZyAiLCAqbV92YWx1ZSwgIiBkdWUgdG8gIiwgcG9pbnRlckxp
c3REdW1wKG1hdGNoZXMpLCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIG1fY2hhbmdlZCA9IHRy
dWU7CkBAIC01NjYsNyArNTY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIE1lbW9yeVZhbHVl
KiBkb21pbmF0aW5nTWF0Y2ggPSBtYXRjaGVzWzBdOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQobV9kb21pbmF0b3JzLmRvbWluYXRlcyhkb21pbmF0aW5nTWF0Y2gtPm93bmVyLCBtX2Jsb2Nr
KSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAg
aWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRWxpbWluYXRpbmcgdXNpbmcgIiwgKmRvbWluYXRp
bmdNYXRjaCwgIlxuIik7CiAgICAgICAgICAgICBWZWN0b3I8VmFsdWUqPiBleHRyYVZhbHVlczsK
ICAgICAgICAgICAgIGlmIChWYWx1ZSogdmFsdWUgPSByZXBsYWNlKGRvbWluYXRpbmdNYXRjaCwg
ZXh0cmFWYWx1ZXMpKSB7CkBAIC01OTAsNyArNTkyLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBW
YXJpYWJsZVZhbHVlKiBnZXQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFyaWFibGVWYWx1ZT4o
CiAgICAgICAgICAgICBtX2luZGV4LCBHZXQsIG1fdmFsdWUtPm9yaWdpbigpLCB2YXJpYWJsZSk7
Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJl
eHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIElu
c2VydGluZyBnZXQgb2YgdmFsdWU6ICIsICpnZXQsICJcbiIpOwogICAgICAgICBtX3ZhbHVlLT5y
ZXBsYWNlV2l0aElkZW50aXR5KGdldCk7CiAgICAgICAgICAgICAKQEAgLTYxNSwyMyArNjE3LDIz
IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyPgogICAgIE1lbW9yeU1h
dGNoZXMgZmluZE1lbW9yeVZhbHVlKFZhbHVlKiBwdHIsIEhlYXBSYW5nZSByYW5nZSwgY29uc3Qg
RmlsdGVyJiBmaWx0ZXIpCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYg
KEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgIGRhdGFMb2coKm1fdmFsdWUsICI6IGxvb2tpbmcgYmFja3dhcmQgZm9yICIsICpwdHIs
ICIuLi5cbiIpOwogICAgICAgICAKICAgICAgICAgaWYgKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVl
PigpLT5oYXNGZW5jZSgpKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAg
IGlmIChCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEdpdmluZyB1cCBiZWNhdXNlIGZlbmNlcy5cbiIp
OwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
aWYgKE1lbW9yeVZhbHVlKiBtYXRjaCA9IG1fZGF0YS5tZW1vcnlWYWx1ZXNBdFRhaWwuZmluZChw
dHIsIGZpbHRlcikpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYg
KEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgRm91bmQgIiwgKm1hdGNoLCAiIGxvY2FsbHkuXG4iKTsK
ICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoIH07CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
bV9kYXRhLndyaXRlcy5vdmVybGFwcyhyYW5nZSkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1
c2Ugb2Ygd3JpdGVzLlxuIik7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CkBA
IC02NDIsMjcgKzY0NCwyNyBAQCBwcml2YXRlOgogICAgICAgICBNZW1vcnlNYXRjaGVzIG1hdGNo
ZXM7CiAKICAgICAgICAgd2hpbGUgKEJhc2ljQmxvY2sqIGJsb2NrID0gd29ya2xpc3QucG9wKCkp
IHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRl
Q29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgTG9va2luZyBhdCAiLCAqYmxvY2ssICJcbiIpOwogCiAgICAgICAgICAgICBJ
bXB1cmVCbG9ja0RhdGEmIGRhdGEgPSBtX2ltcHVyZUJsb2NrRGF0YVtibG9ja107CiAKICAgICAg
ICAgICAgIE1lbW9yeVZhbHVlKiBtYXRjaCA9IGRhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmZpbmQo
cHRyLCBmaWx0ZXIpOwogICAgICAgICAgICAgaWYgKG1hdGNoICYmIG1hdGNoICE9IG1fdmFsdWUp
IHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQjNF
bGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgRm91bmQgbWF0Y2g6ICIsICptYXRjaCwgIlxuIik7CiAg
ICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQobWF0Y2gpOwogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoZGF0YS53cml0ZXMub3Zl
cmxhcHMocmFuZ2UpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAg
ICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEdpdmluZyB1cCBiZWNhdXNlIG9m
IHdyaXRlcy5cbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIGlmICghYmxvY2stPm51bVByZWRlY2Vzc29ycygpKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29t
bW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiICAgIEdpdmluZyB1cCBiZWNhdXNlIGl0J3MgbGl2ZSBhdCByb290LlxuIik7CiAg
ICAgICAgICAgICAgICAgLy8gVGhpcyBlc3NlbnRpYWxseSBwcm92ZXMgdGhhdCB0aGlzIGlzIGxp
dmUgYXQgdGhlIHByb2xvZ3VlLiBUaGF0IG1lYW5zIHRoYXQgd2UKICAgICAgICAgICAgICAgICAv
LyBjYW5ub3QgcmVsaWFibHkgb3B0aW1pemUgdGhpcyBjYXNlLgpAQCAtNjcyLDcgKzY3NCw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICB3b3JrbGlzdC5wdXNoQWxsKGJsb2NrLT5wcmVkZWNlc3Nv
cnMoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEIz
RWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgIGRhdGFMb2coIiAgICBHb3QgbWF0Y2hlczogIiwgcG9pbnRlckxpc3REdW1wKG1hdGNoZXMp
LCAiXG4iKTsKICAgICAgICAgcmV0dXJuIG1hdGNoZXM7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRml4U1NBLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0ZpeFNTQS5jcHAKaW5kZXggZDIwMzgxZDIwMjJmYTA0ZjI2M2E4N2VmYjFiM2NkOTIw
MmU2NzU4YS4uYjI4ZjIxZjExMDdjODI2ZmFmNjJiM2Y4MzcwNjI1ODM2ODdlMzdmNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRml4U1NBLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNGaXhTU0EuY3BwCkBAIC00OCw3ICs0OCw5IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBuYW1lc3BhY2UgewogCi1jb25zdCBib29sIHZlcmJv
c2UgPSBmYWxzZTsKK25hbWVzcGFjZSBCM0ZpeFNTQUludGVybmFsIHsKK3N0YXRpYyBjb25zdCBi
b29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogdm9pZCBraWxsRGVhZFZhcmlhYmxlcyhQcm9jZWR1
cmUmIHByb2MpCiB7CkBAIC0xNTcsNyArMTU5LDcgQEAgdm9pZCBmaXhTU0FHbG9iYWxseShQcm9j
ZWR1cmUmIHByb2MpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIFZhbHVlKiBwaGkgPSBwcm9jLmFkZDxWYWx1ZT4o
UGhpLCB2YXJpYWJsZS0+dHlwZSgpLCBibG9jay0+YXQoMCktPm9yaWdpbigpKTsKLSAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgICAgIGlmIChCM0ZpeFNTQUludGVy
bmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAg
ICAgICAgICAgICAgICAiQWRkaW5nIFBoaSBmb3IgIiwgcG9pbnRlckR1bXAodmFyaWFibGUpLCAi
IGF0ICIsICpibG9jaywgIjogIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGRlZXBEdW1wKHBy
b2MsIHBoaSksICJcbiIpOwpAQCAtMjMxLDcgKzIzMyw3IEBAIHZvaWQgZml4U1NBR2xvYmFsbHko
UHJvY2VkdXJlJiBwcm9jKQogICAgICAgICAgICAgICAgIFZhcmlhYmxlKiB2YXJpYWJsZSA9IGNh
bGNWYXJUb1ZhcmlhYmxlW2NhbGNWYXItPmluZGV4KCldOwogCiAgICAgICAgICAgICAgICAgVmFs
dWUqIG1hcHBlZFZhbHVlID0gZW5zdXJlTWFwcGluZyh2YXJpYWJsZSwgdXBzaWxvbkluc2VydGlv
blBvaW50LCB1cHNpbG9uT3JpZ2luKTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkgewor
ICAgICAgICAgICAgICAgIGlmIChCM0ZpeFNTQUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAiTWFwcGVkIHZh
bHVlIGZvciAiLCAqdmFyaWFibGUsICIgd2l0aCBzdWNjZXNzb3IgUGhpICIsICpwaGksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAiIGF0IGVuZCBvZiAiLCAqYmxvY2ssICI6ICIsIHBvaW50ZXJE
dW1wKG1hcHBlZFZhbHVlKSwgIlxuIik7CkBAIC0yNDUsNyArMjQ3LDcgQEAgdm9pZCBmaXhTU0FH
bG9iYWxseShQcm9jZWR1cmUmIHByb2MpCiAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJs
b2NrKTsKICAgICB9CiAKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChCM0ZpeFNTQUludGVy
bmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2coIkIzIGFmdGVyIFNTQSBjb252ZXJzaW9u
OlxuIik7CiAgICAgICAgIGRhdGFMb2cocHJvYyk7CiAgICAgfQpAQCAtMjY2LDcgKzI2OCw3IEBA
IHZvaWQgZGVtb3RlVmFsdWVzKFByb2NlZHVyZSYgcHJvYywgY29uc3QgSW5kZXhTZXQ8VmFsdWUq
PiYgdmFsdWVzKQogICAgICAgICAgICAgcGhpTWFwLmFkZCh2YWx1ZSwgcHJvYy5hZGRWYXJpYWJs
ZSh2YWx1ZS0+dHlwZSgpKSk7CiAgICAgfQogCi0gICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAo
QjNGaXhTU0FJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICBkYXRhTG9nKCJEZW1vdGluZyB2
YWx1ZXMgYXMgZm9sbG93czpcbiIpOwogICAgICAgICBkYXRhTG9nKCIgICBtYXAgPSAiKTsKICAg
ICAgICAgQ29tbWFQcmludGVyIGNvbW1hOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzRm9sZFBhdGhDb25zdGFudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzRm9sZFBhdGhDb25zdGFudHMuY3BwCmluZGV4IGI5YmRjOGQ0ZjI4OGI4MmM2MzMxZWYzMTBk
MzMzZTNhNTY0N2UwNGQuLjIyMjUwY2JjN2YzNWM0Y2ZjZjk5MTZhNWFiMmVlNzI2YWZjNGFkNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZvbGRQYXRoQ29uc3RhbnRz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGb2xkUGF0aENvbnN0YW50cy5j
cHAKQEAgLTQxLDcgKzQxLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5h
bWVzcGFjZSB7CiAKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEIzRm9s
ZFBhdGhDb25zdGFudHNJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFs
c2U7Cit9CiAKIGNsYXNzIEZvbGRQYXRoQ29uc3RhbnRzIHsKIHB1YmxpYzoKQEAgLTU1LDcgKzU3
LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAKLSAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCM0ZvbGRQYXRoQ29uc3RhbnRzSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJCMyBiZWZvcmUgZm9sZGluZyBwYXRo
IGNvbnN0YW50czogXG4iLCBtX3Byb2MsICJcbiIpOwogICAgICAgICAKICAgICAgICAgLy8gRmlu
ZCBhbGwgb2YgdGhlIHZhbHVlcyB0aGF0IGFyZSB0aGUgc3ViamVjdCBvZiBhIGJyYW5jaCBvciBz
d2l0Y2guIEZvciBhbnkgc3VjY2Vzc29yCkBAIC04MCw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChvdGhlck92ZXJyaWRlLCBvdGhlck92ZXJyaWRl
LmJsb2NrICE9IG92ZXJyaWRlLmJsb2NrKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNGb2xkUGF0aENvbnN0YW50c0ludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIk92ZXJyaWRpbmcgIiwgKnZhbHVl
LCAiIGZyb20gIiwgKmZyb20sICI6ICIsIG92ZXJyaWRlLCAiXG4iKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgZm9yVmFsdWUuYXBwZW5kKG92ZXJyaWRlKTsKQEAgLTE0OSw3ICsxNTEsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG92ZXJyaWRlOwogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0Zv
bGRQYXRoQ29uc3RhbnRzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiSW4gYmxvY2sgIiwgKmJsb2NrLCAiIGdldHRpbmcgb3ZlcnJpZGUgZm9yICIsICp2YWx1ZSwg
IjogIiwgcmVzdWx0LCAiXG4iKTsKIAogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luZmVyU3dpdGNoZXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5mZXJTd2l0Y2hlcy5jcHAKaW5kZXggZjI5ZjRmMDk1
NGIyYWU3MjAwNWExMzAyZWZmY2NkNGUzNGRmYjg3OC4uZWU2MTJmZWYyOGM2YTc3YWFjMTVjOThh
OTdhYzkzOTJiMTNjNWFkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
SW5mZXJTd2l0Y2hlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5mZXJT
d2l0Y2hlcy5jcHAKQEAgLTQyLDcgKzQyLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7CiAKIG5hbWVzcGFjZSB7CiAKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNw
YWNlIEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2Ug
PSBmYWxzZTsKK30KIAogY2xhc3MgSW5mZXJTd2l0Y2hlcyB7CiBwdWJsaWM6CkBAIC01NSw3ICs1
Nyw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIHJ1bigpCiAgICAgewotICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgZGF0YUxvZygiQjMgYmVmb3JlIGluZmVyU3dpdGNoZXM6XG4iLCBtX3Byb2Mp
OwogICAgICAgICAKICAgICAgICAgYm9vbCBjaGFuZ2VkID0gdHJ1ZTsKQEAgLTYzLDcgKzY1LDcg
QEAgcHVibGljOgogICAgICAgICB3aGlsZSAoY2hhbmdlZCkgewogICAgICAgICAgICAgY2hhbmdl
ZCA9IGZhbHNlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJQZXJmb3JtaW5nIGZpeHBvaW50IGl0ZXJhdGlvbjpcbiIpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jKQpAQCAt
NzgsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fcHJvYy5k
ZWxldGVPcnBoYW5zKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgICAgIGRhdGFMb2coIkIzIGFmdGVyIGluZmVyU3dpdGNoZXM6XG4iLCBtX3Byb2MpOwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTk2LDEwICs5OCwxMCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKICAgICAgICAgU3dp
dGNoRGVzY3JpcHRpb24gZGVzY3JpcHRpb24gPSBkZXNjcmliZShibG9jayk7Ci0gICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICBpZiAoQjNJbmZlclN3aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICBkYXRhTG9nKCJEZXNjcmlwdGlvbiBvZiBwcmltYXJ5IGJsb2NrICIsICpi
bG9jaywgIjogIiwgZGVzY3JpcHRpb24sICJcbiIpOwogICAgICAgICBpZiAoIWRlc2NyaXB0aW9u
KSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0luZmVyU3dp
dGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQmFp
bGluZyBiZWNhdXNlIG5vdCBzd2l0Y2gtbGlrZS5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CkBAIC0xMTUsMTcgKzExNywxNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKHZhbHVlID09IGRlc2NyaXB0aW9uLmJy
YW5jaCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICAgICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICAgICAgICAgIGRhdGFMb2coIiAgICBCYWlsaW5nIGJlY2F1c2Ugb2YgIiwgZGVlcER1bXAo
bV9wcm9jLCB2YWx1ZSksICJcbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGJsb2NrLT5w
cmVkZWNlc3NvcigwKTsKICAgICAgICAgU3dpdGNoRGVzY3JpcHRpb24gcHJlZGVjZXNzb3JEZXNj
cmlwdGlvbiA9IGRlc2NyaWJlKHByZWRlY2Vzc29yKTsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBEZXNjcmlwdGlvbiBvZiBwcmVkZWNlc3NvciBibG9jayAiLCAqcHJlZGVj
ZXNzb3IsICI6ICIsIHByZWRlY2Vzc29yRGVzY3JpcHRpb24sICJcbiIpOwogICAgICAgICBpZiAo
IXByZWRlY2Vzc29yRGVzY3JpcHRpb24pIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICAgICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgICAgIGRhdGFMb2coIiAgICBCYWlsaW5nIGJlY2F1c2Ugbm90IHN3aXRjaC1saWtlLlxuIik7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTEzMyw3ICsxMzUsNyBA
QCBwcml2YXRlOgogICAgICAgICAvLyBCb3RoIHVzIGFuZCB0aGUgcHJlZGVjZXNzb3IgYXJlIHN3
aXRjaC1saWtlLCBidXQgdGhhdCBkb2Vzbid0IG1lYW4gdGhhdCB3ZSdyZSBjb21wYXRpYmxlLgog
ICAgICAgICAvLyBXZSBtYXkgYmUgc3dpdGNoaW5nIG9uIGRpZmZlcmVudCB2YWx1ZXMhCiAgICAg
ICAgIGlmIChkZXNjcmlwdGlvbi5zb3VyY2UgIT0gcHJlZGVjZXNzb3JEZXNjcmlwdGlvbi5zb3Vy
Y2UpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzSW5mZXJT
d2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBC
YWlsaW5nIGJlY2F1c2Ugc291cmNlcyBkb24ndCBtYXRjaC5cbiIpOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0xNDMsNyArMTQ1LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgLy8ganVzdCB0b3RhbGx5IHJlZHVuZGFudCBhbmQgd2Ugc2hvdWxkIGJlIGdldHRpbmcgcmlk
IG9mIGl0LiBCdXQgd2UgZG9uJ3QgaGFuZGxlIHRoYXQgaGVyZSwKICAgICAgICAgLy8geWV0Lgog
ICAgICAgICBpZiAocHJlZGVjZXNzb3JEZXNjcmlwdGlvbi5mYWxsVGhyb3VnaC5ibG9jaygpICE9
IGJsb2NrKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0lu
ZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgQmFpbGluZyBiZWNhdXNlIGZhbGwtdGhyb3VnaCBvZiBwcmVkZWNlc3NvciBpcyBub3QgdGhl
IHByaW1hcnkgYmxvY2suXG4iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQpAQCAtMTUxLDE0ICsxNTMsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gTWFrZSBzdXJlIHRo
YXQgdGhlcmUgYWluJ3Qgbm8gbG9vcHMuCiAgICAgICAgIGlmIChkZXNjcmlwdGlvbi5mYWxsVGhy
b3VnaC5ibG9jaygpID09IGJsb2NrCiAgICAgICAgICAgICB8fCBkZXNjcmlwdGlvbi5mYWxsVGhy
b3VnaC5ibG9jaygpID09IHByZWRlY2Vzc29yKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGluZyBiZWNhdXNlIG9mIGZhbGwtdGhyb3VnaCBs
b29wLlxuIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAg
Zm9yIChTd2l0Y2hDYXNlIHN3aXRjaENhc2UgOiBkZXNjcmlwdGlvbi5jYXNlcykgewogICAgICAg
ICAgICAgaWYgKHN3aXRjaENhc2UudGFyZ2V0QmxvY2soKSA9PSBibG9jawogICAgICAgICAgICAg
ICAgIHx8IHN3aXRjaENhc2UudGFyZ2V0QmxvY2soKSA9PSBwcmVkZWNlc3NvcikgewotICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChCM0luZmVyU3dpdGNo
ZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEJh
aWxpbmcgYmVjYXVzZSBvZiBsb29wIGluIHByaW1hcnkgY2FzZXMuXG4iKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CkBAIC0xNjYsMTMgKzE2OCwxMyBAQCBw
cml2YXRlOgogICAgICAgICBmb3IgKFN3aXRjaENhc2Ugc3dpdGNoQ2FzZSA6IHByZWRlY2Vzc29y
RGVzY3JpcHRpb24uY2FzZXMpIHsKICAgICAgICAgICAgIGlmIChzd2l0Y2hDYXNlLnRhcmdldEJs
b2NrKCkgPT0gYmxvY2sKICAgICAgICAgICAgICAgICB8fCBzd2l0Y2hDYXNlLnRhcmdldEJsb2Nr
KCkgPT0gcHJlZGVjZXNzb3IpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgICAgICAgICBpZiAoQjNJbmZlclN3aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2coIiAgICBCYWlsaW5nIGJlY2F1c2Ugb2YgbG9vcCBpbiBwcmVk
ZWNlc3NvciBjYXNlcy5cbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRh
dGFMb2coIiAgICBEb2luZyBpdCFcbiIpOwogICAgICAgICAvLyBXZSdyZSBjb21taXR0ZWQgdG8g
ZG9pbmcgdGhlIHRoaW5nLgogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAppbmRleCA5
NjNjMTBlZGM1ZTQ5MzlmNWZiZTJlZDQyNTY0ZGQzZDdlMDc2M2RkLi4xNDU2N2ZjYzViZGFjOWUw
ZjhlNzE4MTY4ZDZmZjI3NzBjNjQ4ZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQWlyQXJnLmgi
CiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tJbnNl
cnRpb25TZXQuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKQEAgLTM5LDExICs0MCwxNSBA
QAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAordXNpbmcgQXJnID0gQWlyOjpB
cmc7Cit1c2luZyBDb2RlID0gQWlyOjpDb2RlOwordXNpbmcgVG1wID0gQWlyOjpUbXA7CisKIG5h
bWVzcGFjZSB7CiAKLWNsYXNzIExvd2VyTWFjcm9zIHsKK2NsYXNzIExvd2VyTWFjcm9zQWZ0ZXJP
cHRpbWl6YXRpb25zIHsKIHB1YmxpYzoKLSAgICBMb3dlck1hY3JvcyhQcm9jZWR1cmUmIHByb2Mp
CisgICAgTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMoUHJvY2VkdXJlJiBwcm9jKQogICAg
ICAgICA6IG1fcHJvYyhwcm9jKQogICAgICAgICAsIG1fYmxvY2tJbnNlcnRpb25TZXQocHJvYykK
ICAgICAgICAgLCBtX2luc2VydGlvblNldChwcm9jKQpAQCAtMTgzLDcgKzE4OCw3IEBAIHByaXZh
dGU6CiAKIGJvb2wgbG93ZXJNYWNyb3NJbXBsKFByb2NlZHVyZSYgcHJvYykKIHsKLSAgICBMb3dl
ck1hY3JvcyBsb3dlck1hY3Jvcyhwcm9jKTsKKyAgICBMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0
aW9ucyBsb3dlck1hY3Jvcyhwcm9jKTsKICAgICByZXR1cm4gbG93ZXJNYWNyb3MucnVuKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggMTQ4OWMz
MTFjNjNlZTAwMmZhOTFhNzYxYjFkNjA2MGNhZjRlMjkzMS4uNzY0ZGI0Y2JkODY4ZGQ4NTBiZDhh
M2FiZDE0ODJhZmE0MjM4NDJkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJU
b0Fpci5jcHAKQEAgLTY5LDIxICs2OSwyNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsKIAotdXNpbmcgbmFtZXNwYWNlIEFpcjsKLQogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9v
bCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgQjNMb3dlclRvQWlySW50ZXJuYWwgeworc3Rh
dGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQorCit1c2luZyBBcmcgPSBBaXI6OkFy
ZzsKK3VzaW5nIEluc3QgPSBBaXI6Okluc3Q7Cit1c2luZyBDb2RlID0gQWlyOjpDb2RlOwordXNp
bmcgVG1wID0gQWlyOjpUbXA7CiAKIC8vIEZJWE1FOiBXZSB3b3VsZG4ndCBuZWVkIHRoaXMgaWYg
QWlyIHN1cHBvcnRlZCBXaWR0aCBtb2RpZmllcnMgaW4gQWlyOjpLaW5kLgogLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTI0NwogI2RlZmluZSBPUENPREVfRk9S
X1dJRFRIKG9wY29kZSwgd2lkdGgpICggXAotICAgICh3aWR0aCkgPT0gV2lkdGg4ID8gb3Bjb2Rl
ICMjIDggOiBcCi0gICAgKHdpZHRoKSA9PSBXaWR0aDE2ID8gb3Bjb2RlICMjIDE2IDogXAotICAg
ICh3aWR0aCkgPT0gV2lkdGgzMiA/IG9wY29kZSAjIyAzMiA6IFwKLSAgICBvcGNvZGUgIyMgNjQp
CisgICAgKHdpZHRoKSA9PSBXaWR0aDggPyBBaXI6Om9wY29kZSAjIyA4IDogXAorICAgICh3aWR0
aCkgPT0gV2lkdGgxNiA/IEFpcjo6b3Bjb2RlICMjIDE2IDogICAgXAorICAgICh3aWR0aCkgPT0g
V2lkdGgzMiA/IEFpcjo6b3Bjb2RlICMjIDMyIDogICAgXAorICAgIEFpcjo6b3Bjb2RlICMjIDY0
KQogI2RlZmluZSBPUENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChvcGNvZGUsIHdpZHRoKSAoIFwK
LSAgICAod2lkdGgpID09IFdpZHRoNjQgPyBvcGNvZGUgIyMgNjQgOiBvcGNvZGUgIyMgMzIpCisg
ICAgKHdpZHRoKSA9PSBXaWR0aDY0ID8gQWlyOjpvcGNvZGUgIyMgNjQgOiBBaXI6Om9wY29kZSAj
IyAzMikKIAogY2xhc3MgTG93ZXJUb0FpciB7CiBwdWJsaWM6CkBAIC0xMDcsNiArMTEyLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBydW4oKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNl
IEFpcjsKICAgICAgICAgZm9yIChCMzo6QmFzaWNCbG9jayogYmxvY2sgOiBtX3Byb2NlZHVyZSkK
ICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXSA9IG1fY29kZS5hZGRCbG9jayhibG9j
ay0+ZnJlcXVlbmN5KCkpOwogICAgICAgICAKQEAgLTExNCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBzd2l0Y2ggKHZhbHVlLT5vcGNvZGUoKSkgewogICAgICAgICAgICAgY2FzZSBQ
aGk6IHsKICAgICAgICAgICAgICAgICBtX3BoaVRvVG1wW3ZhbHVlXSA9IG1fY29kZS5uZXdUbXAo
dmFsdWUtPnJlc3VsdEJhbmsoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgICAgICAgICAgaWYgKEIzTG93ZXJUb0FpckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJQaGkgdG1wIGZvciAiLCAqdmFsdWUsICI6ICIsIG1fcGhpVG9U
bXBbdmFsdWVdLCAiXG4iKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
QEAgLTE0Niw3ICsxNTIsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgICAgIG1faXNSYXJlID0gIW1f
ZmFzdFdvcmtsaXN0LnNhdyhibG9jayk7CiAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICAgICAgaWYgKEIzTG93ZXJUb0FpckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkxvd2VyaW5nIEJsb2NrICIsICpibG9jaywgIjpcbiIpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0
IHVwIGNvcnJlY3RseS4KQEAgLTE2MywxMCArMTY5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICBpZiAobV9sb2NrZWQuY29udGFpbnMobV92YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIG1faW5zdHMuYXBwZW5kKFZlY3RvcjxJbnN0Pigp
KTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQjNM
b3dlclRvQWlySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
Ikxvd2VyaW5nICIsIGRlZXBEdW1wKG1fcHJvY2VkdXJlLCBtX3ZhbHVlKSwgIjpcbiIpOwogICAg
ICAgICAgICAgICAgIGxvd2VyKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoQjNMb3dlclRvQWlySW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAg
ICAgICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9pbnN0cy5sYXN0KCkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgIiwgaW5zdCwgIlxuIik7CiAgICAgICAgICAg
ICAgICAgfQpAQCAtMzc5LDcgKzM4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmVh
bFRtcCA9IG1fY29kZS5uZXdUbXAodmFsdWUtPnJlc3VsdEJhbmsoKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKG1fcHJvY2VkdXJlLmlzRmFzdENvbnN0YW50KHZhbHVlLT5rZXkoKSkpCiAgICAgICAg
ICAgICAgICAgICAgIG1fY29kZS5hZGRGYXN0VG1wKHJlYWxUbXApOwotICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChCM0xvd2VyVG9BaXJJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiVG1wIGZvciAiLCAqdmFsdWUs
ICI6ICIsIHJlYWxUbXAsICJcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdG1wID0g
cmVhbFRtcDsKQEAgLTkwNiw2ICs5MTIsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPEFpcjo6
T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2ND4KICAgICB2b2lkIGFwcGVuZFNo
aWZ0KFZhbHVlKiB2YWx1ZSwgVmFsdWUqIGFtb3VudCkKICAgICB7CisgICAgICAgIHVzaW5nIG5h
bWVzcGFjZSBBaXI7CiAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUo
b3Bjb2RlMzIsIG9wY29kZTY0LCB2YWx1ZS0+dHlwZSgpKTsKICAgICAgICAgCiAgICAgICAgIGlm
IChpbW0oYW1vdW50KSkgewpAQCAtMTAxOSw2ICsxMDI2LDcgQEAgcHJpdmF0ZToKIAogICAgIElu
c3QgY3JlYXRlU3RvcmUoQWlyOjpLaW5kIG1vdmUsIFZhbHVlKiB2YWx1ZSwgY29uc3QgQXJnJiBk
ZXN0KQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAgaWYgKGF1
dG8gaW1tX3ZhbHVlID0gaW1tKHZhbHVlKSkgewogICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSAm
JiBpbW1fdmFsdWUudmFsdWUoKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChtb3Zl
Lm9wY29kZSkgewpAQCAtMTA0Myw2ICsxMDUxLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBBaXI6
Ok9wY29kZSBzdG9yZU9wY29kZShXaWR0aCB3aWR0aCwgQmFuayBiYW5rKQogICAgIHsKKyAgICAg
ICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAgc3dpdGNoICh3aWR0aCkgewogICAgICAg
ICBjYXNlIFdpZHRoODoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0gR1ApOwpA
QCAtMTA3Myw2ICsxMDgyLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGFwcGVuZFN0b3Jl
KFZhbHVlKiB2YWx1ZSwgY29uc3QgQXJnJiBkZXN0KQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFt
ZXNwYWNlIEFpcjsKICAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IHZhbHVlLT5hczxNZW1v
cnlWYWx1ZT4oKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobWVtb3J5LT5pc1N0b3JlKCkpOwog
CkBAIC0xMTAwLDYgKzExMTAsNyBAQCBwcml2YXRlOgogCiAgICAgQWlyOjpPcGNvZGUgbW92ZUZv
clR5cGUoVHlwZSB0eXBlKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAg
ICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgSW50MzI6CiAgICAgICAgICAgICBy
ZXR1cm4gTW92ZTMyOwpAQCAtMTExOSw2ICsxMTMwLDcgQEAgcHJpdmF0ZToKIAogICAgIEFpcjo6
T3Bjb2RlIHJlbGF4ZWRNb3ZlRm9yVHlwZShUeXBlIHR5cGUpCiAgICAgeworICAgICAgICB1c2lu
ZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBJ
bnQzMjoKICAgICAgICAgY2FzZSBJbnQ2NDoKQEAgLTExNjIsOCArMTE3NCw4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBwcmludChWYWx1ZSogb3JpZ2luLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMp
CiAgICAgewogICAgICAgICBhdXRvIHByaW50TGlzdCA9IFByaW50ZXI6Om1ha2VQcmludFJlY29y
ZExpc3QoYXJndW1lbnRzLi4uKTsKLSAgICAgICAgYXV0byBwcmludFNwZWNpYWwgPSBzdGF0aWNf
Y2FzdDxQcmludFNwZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPFBy
aW50U3BlY2lhbD4ocHJpbnRMaXN0KSkpOwotICAgICAgICBJbnN0IGluc3QoUGF0Y2gsIG9yaWdp
biwgQXJnOjpzcGVjaWFsKHByaW50U3BlY2lhbCkpOworICAgICAgICBhdXRvIHByaW50U3BlY2lh
bCA9IHN0YXRpY19jYXN0PEFpcjo6UHJpbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwoc3Rk
OjptYWtlX3VuaXF1ZTxBaXI6OlByaW50U3BlY2lhbD4ocHJpbnRMaXN0KSkpOworICAgICAgICBJ
bnN0IGluc3QoQWlyOjpQYXRjaCwgb3JpZ2luLCBBcmc6OnNwZWNpYWwocHJpbnRTcGVjaWFsKSk7
CiAgICAgICAgIFByaW50ZXI6OmFwcGVuZEFpckFyZ3MoaW5zdCwgc3RkOjpmb3J3YXJkPEFyZ3Vt
ZW50cz4oYXJndW1lbnRzKS4uLik7CiAgICAgICAgIGFwcGVuZChXVEZNb3ZlKGluc3QpKTsKICAg
ICB9CkBAIC0xNzYyLDYgKzE3NzQsNyBAQCBwcml2YXRlOgogCiAgICAgSW5zdCBjcmVhdGVCcmFu
Y2goVmFsdWUqIHZhbHVlLCBib29sIGludmVydGVkID0gZmFsc2UpCiAgICAgeworICAgICAgICB1
c2luZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICByZXR1cm4gY3JlYXRlR2VuZXJpY0NvbXBhcmUo
CiAgICAgICAgICAgICB2YWx1ZSwKICAgICAgICAgICAgIFt0aGlzXSAoCkBAIC0xODQ1LDYgKzE4
NTgsNyBAQCBwcml2YXRlOgogCiAgICAgSW5zdCBjcmVhdGVDb21wYXJlKFZhbHVlKiB2YWx1ZSwg
Ym9vbCBpbnZlcnRlZCA9IGZhbHNlKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFp
cjsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUdlbmVyaWNDb21wYXJlKAogICAgICAgICAgICAgdmFs
dWUsCiAgICAgICAgICAgICBbdGhpc10gKApAQCAtMTkyNCw2ICsxOTM4LDcgQEAgcHJpdmF0ZToK
ICAgICB9OwogICAgIEluc3QgY3JlYXRlU2VsZWN0KGNvbnN0IE1vdmVDb25kaXRpb25hbGx5Q29u
ZmlnJiBjb25maWcpCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAgICAg
ICBhdXRvIGNyZWF0ZVNlbGVjdEluc3RydWN0aW9uID0gWyZdIChBaXI6Ok9wY29kZSBvcGNvZGUs
IGNvbnN0IEFyZyYgY29uZGl0aW9uLCBBcmdQcm9taXNlJiBsZWZ0LCBBcmdQcm9taXNlJiByaWdo
dCkgLT4gSW5zdCB7CiAgICAgICAgICAgICBpZiAoaXNWYWxpZEZvcm0ob3Bjb2RlLCBjb25kaXRp
b24ua2luZCgpLCBsZWZ0LmtpbmQoKSwgcmlnaHQua2luZCgpLCBBcmc6OlRtcCwgQXJnOjpUbXAs
IEFyZzo6VG1wKSkgewogICAgICAgICAgICAgICAgIFRtcCByZXN1bHQgPSB0bXAobV92YWx1ZSk7
CkBAIC0xOTg3LDYgKzIwMDIsNyBAQCBwcml2YXRlOgogICAgIAogICAgIGJvb2wgdHJ5QXBwZW5k
TGVhKCkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAgIEFpcjo6
T3Bjb2RlIGxlYU9wY29kZSA9IHRyeU9wY29kZUZvclR5cGUoTGVhMzIsIExlYTY0LCBtX3ZhbHVl
LT50eXBlKCkpOwogICAgICAgICBpZiAoIWlzVmFsaWRGb3JtKGxlYU9wY29kZSwgQXJnOjpJbmRl
eCwgQXJnOjpUbXApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjExNiw2ICsyMTMy
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYXBwZW5kWDg2RGl2KEIzOjpPcGNvZGUgb3ApCiAg
ICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICBBaXI6Ok9wY29kZSBj
b252ZXJ0VG9Eb3VibGVXb3JkOwogICAgICAgICBBaXI6Ok9wY29kZSBkaXY7CiAgICAgICAgIHN3
aXRjaCAobV92YWx1ZS0+dHlwZSgpKSB7CkBAIC0yMTQzLDYgKzIxNjAsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBhcHBlbmRYODZVRGl2KEIzOjpPcGNvZGUgb3ApCiAgICAgeworICAgICAgICB1
c2luZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICBBaXI6Ok9wY29kZSBkaXYgPSBtX3ZhbHVlLT50
eXBlKCkgPT0gSW50MzIgPyBYODZVRGl2MzIgOiBYODZVRGl2NjQ7CiAKICAgICAgICAgQVNTRVJU
KG9wID09IFVEaXYgfHwgb3AgPT0gVU1vZCk7CkBAIC0yMTc4LDYgKzIxOTYsNyBAQCBwcml2YXRl
OgogICAgIC8vIGdlbmVyYXRlZC4gSXQgYXNzdW1lcyB0aGF0IHlvdSd2ZSBjb25zdW1lZCBldmVy
eXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgY29uc3VtZWQuCiAgICAgdm9pZCBhcHBlbmRDQVMoVmFs
dWUqIGF0b21pY1ZhbHVlLCBib29sIGludmVydCkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVz
cGFjZSBBaXI7CiAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBhdG9taWNWYWx1ZS0+YXM8
QXRvbWljVmFsdWU+KCk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGF0b21pYyk7CiAgICAgICAg
IApAQCAtMjM0MCw2ICsyMzU5LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGFwcGVuZEdl
bmVyYWxBdG9taWMoQWlyOjpPcGNvZGUgb3Bjb2RlLCBDb21tdXRhdGl2aXR5IGNvbW11dGF0aXZp
dHkgPSBOb3RDb21tdXRhdGl2ZSkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7
CiAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4o
KTsKICAgICAgICAgCiAgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihtX3ZhbHVlKTsKQEAgLTI0
MjQsNiArMjQ0NCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBsb3dlcigpCiAgICAgewor
ICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPm9w
Y29kZSgpKSB7CiAgICAgICAgIGNhc2UgQjM6Ok5vcDogewogICAgICAgICAgICAgLy8gWWVzLCB3
ZSB3aWxsIHRvdGFsbHkgc2VlIE5vcCdzIGJlY2F1c2Ugc29tZSBwaGFzZXMgd2lsbCByZXBsYWNl
V2l0aE5vcCgpIGluc3RlYWQgb2YKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1BhdGNocG9pbnRTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Bh
dGNocG9pbnRTcGVjaWFsLmNwcAppbmRleCA0N2YwYWJkMmZmZjNiNTA1NzA4MmQ3MDNhNTE0MjNj
OGNiMzhiMGIwLi5iMzc1Y2RkMGUwZmIwYmYwODYyMDRkMTI3NjNhYTBkNTJiMTgxMmEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwCkBA
IC0zNCw3ICszNCw4IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi11c2lu
ZyBuYW1lc3BhY2UgQWlyOwordXNpbmcgQXJnID0gQWlyOjpBcmc7Cit1c2luZyBJbnN0ID0gQWly
OjpJbnN0OwogCiBQYXRjaHBvaW50U3BlY2lhbDo6UGF0Y2hwb2ludFNwZWNpYWwoKQogewpAQCAt
MTM1LDggKzEzNiw3IEBAIGJvb2wgUGF0Y2hwb2ludFNwZWNpYWw6OmFkbWl0c0V4dGVuZGVkT2Zm
c2V0QWRkcihJbnN0JiBpbnN0LCB1bnNpZ25lZCBhcmdJbmRleCkKICAgICByZXR1cm4gYWRtaXRz
U3RhY2soaW5zdCwgYXJnSW5kZXgpOwogfQogCi1DQ2FsbEhlbHBlcnM6Okp1bXAgUGF0Y2hwb2lu
dFNwZWNpYWw6OmdlbmVyYXRlKAotICAgIEluc3QmIGluc3QsIENDYWxsSGVscGVycyYgaml0LCBH
ZW5lcmF0aW9uQ29udGV4dCYgY29udGV4dCkKK0NDYWxsSGVscGVyczo6SnVtcCBQYXRjaHBvaW50
U3BlY2lhbDo6Z2VuZXJhdGUoSW5zdCYgaW5zdCwgQ0NhbGxIZWxwZXJzJiBqaXQsIEFpcjo6R2Vu
ZXJhdGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgUGF0Y2hwb2ludFZhbHVlKiB2YWx1ZSA9
IGluc3Qub3JpZ2luLT5hczxQYXRjaHBvaW50VmFsdWU+KCk7CiAgICAgQVNTRVJUKHZhbHVlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxv
YXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5j
cHAKaW5kZXggMWM3YjBkMDAyYTFiOTE5ZTIzMGZlNjQ2YjAzMmU0YTRlOTljZDE2MS4uNmQzMWY3
Y2JjMDQ2N2NiZGQ2ZjZlM2M1OGM2MGNjM2U5MTdjY2ViYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAKQEAgLTM5LDcgKzM5LDkg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wg
dmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEIzUmVkdWNlRG91YmxlVG9GbG9hdEludGVybmFs
IHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIGJvb2wgcHJpbnRSZW1h
aW5pbmdDb252ZXJzaW9ucyA9IGZhbHNlOwogCiBjbGFzcyBEb3VibGVUb0Zsb2F0UmVkdWN0aW9u
IHsKQEAgLTEyOCw3ICsxMzAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICB9
IHdoaWxlIChjaGFuZ2VkUGhpU3RhdGUpOwogCi0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAg
ICAgIGlmIChCM1JlZHVjZURvdWJsZVRvRmxvYXRJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAg
ICAgICAgZGF0YUxvZygiQ29udmVyc2lvbiBjYW5kaWRhdGVzOlxuIik7CiAgICAgICAgICAgICBm
b3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jZWR1cmUpIHsKICAgICAgICAgICAgICAgICBm
b3IgKFZhbHVlKiB2YWx1ZSA6ICpibG9jaykgewpAQCAtMTkyLDcgKzE5NCw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gd2hpbGUgKGNoYW5nZWRQaGlTdGF0ZSk7CiAKLSAg
ICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKEIzUmVkdWNlRG91YmxlVG9GbG9hdElu
dGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJQaGlzIGNvbnRhaW5pbmcg
ZmxvYXQgdmFsdWVzOlxuIik7CiAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDog
bV9wcm9jZWR1cmUpIHsKICAgICAgICAgICAgICAgICBmb3IgKFZhbHVlKiB2YWx1ZSA6ICpibG9j
aykgewpAQCAtNDg5LDEzICs0OTEsMTMgQEAgdm9pZCByZWR1Y2VEb3VibGVUb0Zsb2F0KFByb2Nl
ZHVyZSYgcHJvY2VkdXJlKQogewogICAgIFBoYXNlU2NvcGUgcGhhc2VTY29wZShwcm9jZWR1cmUs
ICJyZWR1Y2VEb3VibGVUb0Zsb2F0Iik7CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQjNS
ZWR1Y2VEb3VibGVUb0Zsb2F0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkJl
Zm9yZSBEb3VibGVUb0Zsb2F0UmVkdWN0aW9uOlxuIiwgcHJvY2VkdXJlLCAiXG4iKTsKIAogICAg
IERvdWJsZVRvRmxvYXRSZWR1Y3Rpb24gZG91YmxlVG9GbG9hdFJlZHVjdGlvbihwcm9jZWR1cmUp
OwogICAgIGRvdWJsZVRvRmxvYXRSZWR1Y3Rpb24ucnVuKCk7CiAKLSAgICBpZiAodmVyYm9zZSkK
KyAgICBpZiAoQjNSZWR1Y2VEb3VibGVUb0Zsb2F0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
IGRhdGFMb2coIkFmdGVyIERvdWJsZVRvRmxvYXRSZWR1Y3Rpb246XG4iLCBwcm9jZWR1cmUsICJc
biIpOwogCiAgICAgcHJpbnRHcmFwaElmQ29udmVydGluZyhwcm9jZWR1cmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCmluZGV4IGMyMmU5YjQ1M2Qw
OTUyOTY3ZjIyYTZmZmJhNjQ5MWZmZDAwZjljNmMuLjU1MDJkNWU0N2U1ODcwNjEwNjJiMTY4NmQ5
YmIzYzI2OTM1OGI5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Jl
ZHVjZVN0cmVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VT
dHJlbmd0aC5jcHAKQEAgLTg4LDcgKzg4LDkgQEAgbmFtZXNwYWNlIHsKIC8vIGNvbnN0YW50cyB0
aGVuIHRoZSBjYW5vbmljYWwgZm9ybSBpbnZvbHZlcyB0aGUgbG93ZXItaW5kZXhlZCB2YWx1ZSBm
aXJzdC4gR2l2ZW4gQWRkKHgsIHkpLCBpdCdzCiAvLyBjYW5vbmljYWwgaWYgeC0+aW5kZXgoKSA8
PSB5LT5pbmRleCgpLgogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBCM1JlZHVj
ZVN0cmVuZ3RoSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwor
fQogCiAvLyBGSVhNRTogVGhpcyBJbnRSYW5nZSBzdHVmZiBzaG91bGQgYmUgcmVmYWN0b3JlZCBp
bnRvIGEgZ2VuZXJhbCBjb25zdGFudCBwcm9wYWdhdG9yLiBJdCdzIHdlaXJkCiAvLyB0aGF0IGl0
J3MganVzdCBzaXR0aW5nIGhlcmUgaW4gdGhpcyBmaWxlLgpAQCAtNDE0LDcgKzQxNiw3IEBAIHB1
YmxpYzoKIAogICAgICAgICAgICAgaWYgKGZpcnN0KQogICAgICAgICAgICAgICAgIGZpcnN0ID0g
ZmFsc2U7Ci0gICAgICAgICAgICBlbHNlIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICBlbHNl
IGlmIChCM1JlZHVjZVN0cmVuZ3RoSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCJCMyBhZnRlciBpdGVyYXRpb24gIyIsIGluZGV4IC0gMSwgIiBvZiByZWR1Y2VT
dHJlbmd0aDpcbiIpOwogICAgICAgICAgICAgICAgIGRhdGFMb2cobV9wcm9jKTsKICAgICAgICAg
ICAgIH0KQEAgLTQ1Miw3ICs0NTQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbV9ibG9j
ayA9IGJsb2NrOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZvciAobV9pbmRl
eCA9IDA7IG1faW5kZXggPCBibG9jay0+c2l6ZSgpOyArK21faW5kZXgpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEIzUmVkdWNl
U3RyZW5ndGhJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTG9va2luZyBhdCAiLCAqYmxvY2ss
ICIgIyIsIG1faW5kZXgsICI6ICIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVlcER1
bXAobV9wcm9jLCBibG9jay0+YXQobV9pbmRleCkpLCAiXG4iKTsKQEAgLTIwMzUsNyArMjAzNyw3
IEBAIHByaXZhdGU6CiAgICAgLy8gZWFybHkuCiAgICAgdm9pZCBzcGVjaWFsaXplU2VsZWN0KFZh
bHVlKiBzb3VyY2UpCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEIz
UmVkdWNlU3RyZW5ndGhJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIlNw
ZWNpYWxpemluZyBzZWxlY3Q6ICIsIGRlZXBEdW1wKG1fcHJvYywgc291cmNlKSwgIlxuIik7CiAK
ICAgICAgICAgLy8gVGhpcyBtdXRhdGVzIHN0YXJ0SW5kZXggdG8gYWNjb3VudCBmb3IgdGhlIGZh
Y3QgdGhhdCBtX2Jsb2NrIGdvdCB0aGUgZnJvbnQgb2YgaXQKQEAgLTIyNzYsNyArMjI3OCw3IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIHNpbXBsaWZ5Q0ZHKCkKICAgICB7Ci0gICAgICAgIGlmICh2
ZXJib3NlKSB7CisgICAgICAgIGlmIChCM1JlZHVjZVN0cmVuZ3RoSW50ZXJuYWw6OnZlcmJvc2Up
IHsKICAgICAgICAgICAgIGRhdGFMb2coIkJlZm9yZSBzaW1wbGlmeUNGRzpcbiIpOwogICAgICAg
ICAgICAgZGF0YUxvZyhtX3Byb2MpOwogICAgICAgICB9CkBAIC0yMzAxLDcgKzIzMDMsNyBAQCBw
cml2YXRlOgogICAgICAgICAvLyBpdGVyYXRpb25zIG5lZWRlZCB0byBraWxsIGEgbG90IG9mIGNv
ZGUuCiAKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fcHJvYykgewotICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNSZWR1Y2VTdHJlbmd0aEludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIGJsb2Nr
ICIsICpibG9jaywgIjpcbiIpOwogCiAgICAgICAgICAgICBjaGVja1ByZWRlY2Vzc29yVmFsaWRp
dHkoKTsKQEAgLTIzMTcsNyArMjMxOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAg
ICYmIHN1Y2Nlc3Nvci0+bGFzdCgpLT5vcGNvZGUoKSA9PSBKdW1wKSB7CiAgICAgICAgICAgICAg
ICAgICAgIEJhc2ljQmxvY2sqIG5ld1N1Y2Nlc3NvciA9IHN1Y2Nlc3Nvci0+c3VjY2Vzc29yQmxv
Y2soMCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdTdWNjZXNzb3IgIT0gc3VjY2Vzc29y
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKEIzUmVkdWNlU3RyZW5ndGhJbnRlcm5hbDo6dmVyYm9zZSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJSZXBsYWNpbmcgIiwgcG9pbnRlckR1bXAoYmxvY2spLCAiLT4iLCBwb2ludGVy
RHVtcChzdWNjZXNzb3IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHdpdGgg
IiwgcG9pbnRlckR1bXAoYmxvY2spLCAiLT4iLCBwb2ludGVyRHVtcChuZXdTdWNjZXNzb3IpLApA
QCAtMjM0OCw3ICsyMzUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAoYWxsU2FtZSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChCM1JlZHVjZVN0cmVuZ3RoSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiQ2hhbmdpbmcgIiwgcG9pbnRlckR1bXAoYmxvY2spLCAiJ3MgdGVybWluYWwgdG8g
YSBKdW1wLlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0yMzg3LDcgKzIzODks
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIG5ld1N1
Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JCbG9ja3MoKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIG5ld1N1Y2Nlc3Nvci0+cmVwbGFjZVByZWRlY2Vzc29yKHN1Y2Nlc3NvciwgYmxvY2spOwog
Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChCM1JlZHVjZVN0cmVuZ3RoSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1lcmdlZCAi
LCBwb2ludGVyRHVtcChibG9jayksICItPiIsIHBvaW50ZXJEdW1wKHN1Y2Nlc3NvciksICJcbiIp
OwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0yMzk3LDcgKzIzOTksNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1fY2hhbmdlZENGRyAmJiB2
ZXJib3NlKSB7CisgICAgICAgIGlmIChtX2NoYW5nZWRDRkcgJiYgQjNSZWR1Y2VTdHJlbmd0aElu
dGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJCMyBhZnRlciBzaW1wbGlm
eUNGRzpcbiIpOwogICAgICAgICAgICAgZGF0YUxvZyhtX3Byb2MpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zLmNwcAppbmRleCBiYmE4NGNhZjhiNGJlMDljMjg4NjNjNDI5MDIwODUyZTcwNTExNjIyLi4z
ODllZjhiOWNhMmQ2MTBlZmRhNTdiOWQ4MGVhOTNlYmI1ODJlMTlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5jcHAK
QEAgLTM0LDggKzM0LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKLXVz
aW5nIG5hbWVzcGFjZSBBaXI7Ci0KIGNvbnN0IFJlZ2lzdGVyU2V0JiBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXM6OnVzZWRSZWdpc3RlcnMoKSBjb25zdAogewogICAgIEFTU0VSVChtX2NvbnRleHQu
Y29kZS0+bmVlZHNVc2VkUmVnaXN0ZXJzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1N0YWNrbWFwU3BlY2lhbC5jcHAKaW5kZXggNjAzNzBjNTc4ZGRmYzMyOTE4ZWZmYjVhMWJk
ZTg1NzhlOTNmMmY3MC4uNWViNWI5YjBlNjdkMzczYzM5YmM3ZDk2ZDkzZWQ5ZjZhYzVkMTg0NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwCkBA
IC0zNCw3ICszNCw5IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi11c2lu
ZyBuYW1lc3BhY2UgQWlyOwordXNpbmcgQXJnID0gQWlyOjpBcmc7Cit1c2luZyBJbnN0ID0gQWly
OjpJbnN0OwordXNpbmcgVG1wID0gQWlyOjpUbXA7CiAKIFN0YWNrbWFwU3BlY2lhbDo6U3RhY2tt
YXBTcGVjaWFsKCkKIHsKQEAgLTIxMCw4ICsyMTIsNyBAQCBib29sIFN0YWNrbWFwU3BlY2lhbDo6
YWRtaXRzU3RhY2tJbXBsKAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotVmVjdG9yPFZhbHVlUmVw
PiBTdGFja21hcFNwZWNpYWw6OnJlcHNJbXBsKAotICAgIEdlbmVyYXRpb25Db250ZXh0JiBjb250
ZXh0LCB1bnNpZ25lZCBudW1JZ25vcmVkQjNBcmdzLCB1bnNpZ25lZCBudW1JZ25vcmVkQWlyQXJn
cywgSW5zdCYgaW5zdCkKK1ZlY3RvcjxWYWx1ZVJlcD4gU3RhY2ttYXBTcGVjaWFsOjpyZXBzSW1w
bChBaXI6OkdlbmVyYXRpb25Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCBudW1JZ25vcmVkQjNB
cmdzLCB1bnNpZ25lZCBudW1JZ25vcmVkQWlyQXJncywgSW5zdCYgaW5zdCkKIHsKICAgICBWZWN0
b3I8VmFsdWVSZXA+IHJlc3VsdDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5zdC5v
cmlnaW4tPm51bUNoaWxkcmVuKCkgLSBudW1JZ25vcmVkQjNBcmdzOyArK2kpCkBAIC0yNjcsNyAr
MjY4LDcgQEAgYm9vbCBTdGFja21hcFNwZWNpYWw6OmlzQXJnVmFsaWRGb3JSZXAoQWlyOjpDb2Rl
JiBjb2RlLCBjb25zdCBBaXI6OkFyZyYgYXJnLCBjb24KICAgICB9CiB9CiAKLVZhbHVlUmVwIFN0
YWNrbWFwU3BlY2lhbDo6cmVwRm9yQXJnKENvZGUmIGNvZGUsIGNvbnN0IEFyZyYgYXJnKQorVmFs
dWVSZXAgU3RhY2ttYXBTcGVjaWFsOjpyZXBGb3JBcmcoQWlyOjpDb2RlJiBjb2RlLCBjb25zdCBB
cmcmIGFyZykKIHsKICAgICBzd2l0Y2ggKGFyZy5raW5kKCkpIHsKICAgICBjYXNlIEFyZzo6VG1w
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVN0
YWNrQnlHcmFwaENvbG9yaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
QWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZy5jcHAKaW5kZXggZTg2MGQ5Y2NjNWNiMGFlMWQ4
N2MzYWZlZmRhYmY4ODY2ZjMxN2QxYS4uZWQ2N2QxYzdjZDg5ZGIwOGMwZjk4Y2YxZjY2M2ExZjVh
YmM1MmUzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxv
Y2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckFsbG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcuY3BwCkBAIC00Miw3ICs0Miw5
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKIAogbmFt
ZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgQWlyQWxs
b2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZ0ludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZl
cmJvc2UgPSBmYWxzZTsKK30KIAogc3RydWN0IENvYWxlc2NhYmxlTW92ZSB7CiAgICAgQ29hbGVz
Y2FibGVNb3ZlKCkKQEAgLTE1Myw3ICsxNTUsNyBAQCB2b2lkIGFsbG9jYXRlU3RhY2tCeUdyYXBo
Q29sb3JpbmcoQ29kZSYgY29kZSkKICAgICAgICAgU3RhY2tTbG90TGl2ZW5lc3M6OkxvY2FsQ2Fs
YyBsb2NhbENhbGMobGl2ZW5lc3MsIGJsb2NrKTsKIAogICAgICAgICBhdXRvIGludGVyZmVyZSA9
IFsmXSAodW5zaWduZWQgaW5zdEluZGV4KSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgIGlmIChBaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiSW50ZXJmZXJpbmc6ICIsIFdURjo6cG9p
bnRlckxpc3REdW1wKGxvY2FsQ2FsYy5saXZlKCkpLCAiXG4iKTsKIAogICAgICAgICAgICAgSW5z
dCogcHJldkluc3QgPSBibG9jay0+Z2V0KGluc3RJbmRleCk7CkBAIC0xODUsNyArMTg3LDcgQEAg
dm9pZCBhbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nKENvZGUmIGNvZGUpCiAgICAgICAgIH07
CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnN0SW5kZXggPSBibG9jay0+c2l6ZSgpOyBpbnN0
SW5kZXgtLTspIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEFp
ckFsbG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmdJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCJBbmFseXppbmc6ICIsIGJsb2NrLT5hdChpbnN0SW5kZXgpLCAiXG4i
KTsKIAogICAgICAgICAgICAgLy8gS2lsbCBkZWFkIHN0b3Jlcy4gRm9yIHNpbXBsaWNpdHkgd2Ug
c2F5IHRoYXQgYSBzdG9yZSBpcyBraWxsYWJsZSBpZiBpdCBoYXMgb25seSBsYXRlCkBAIC0yMzIs
NyArMjM0LDcgQEAgdm9pZCBhbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nKENvZGUmIGNvZGUp
CiAgICAgICAgICAgICB9KTsKICAgICB9CiAKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChB
aXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAg
ICAgZm9yIChTdGFja1Nsb3QqIHNsb3QgOiBjb2RlLnN0YWNrU2xvdHMoKSkKICAgICAgICAgICAg
IGRhdGFMb2coIkludGVyZmVyZW5jZSBvZiAiLCBwb2ludGVyRHVtcChzbG90KSwgIjogIiwgcG9p
bnRlckxpc3REdW1wKGludGVyZmVyZW5jZVtzbG90XSksICJcbiIpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZmbGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbWl0U2h1ZmZsZS5jcHAKaW5kZXggNzNkNzEw
ZmY2OWU3MThlYjRiZTMwNjljMWMxZDgwYWZiOWM2NDk2Ny4uNzE2NmVkODY5NGVhM2YxODQyNGZk
MjNlODAyMTA5ODA1ZjYxMmJmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJFbWl0U2h1ZmZsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJFbWl0U2h1ZmZsZS5jcHAKQEAgLTM3LDcgKzM3LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJv
c2UgPSBmYWxzZTsKK25hbWVzcGFjZSBBaXJFbWl0U2h1ZmZsZUludGVybmFsIHsKK3N0YXRpYyBj
b25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4KIFRtcCBmaW5kUG9zc2libGVTY3JhdGNoKENvZGUmIGNvZGUsIEJhbmsgYmFuaywgY29uc3Qg
RnVuY3RvciYgZnVuY3RvcikgewpAQCAtMTI1LDcgKzEyNyw3IEBAIFZlY3RvcjxJbnN0PiBlbWl0
U2h1ZmZsZSgKICAgICBDb2RlJiBjb2RlLCBWZWN0b3I8U2h1ZmZsZVBhaXI+IHBhaXJzLCBzdGQ6
OmFycmF5PEFyZywgMj4gc2NyYXRjaGVzLCBCYW5rIGJhbmssCiAgICAgVmFsdWUqIG9yaWdpbikK
IHsKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChBaXJFbWl0U2h1ZmZsZUludGVybmFsOjp2
ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAiRGVhbGluZyB3aXRoIHBh
aXJzOiAiLCBsaXN0RHVtcChwYWlycyksICIgYW5kIHNjcmF0Y2hlcyAiLCBzY3JhdGNoZXNbMF0s
ICIsICIsCiAgICAgICAgICAgICBzY3JhdGNoZXNbMV0sICJcbiIpOwpAQCAtMTg1LDcgKzE4Nyw3
IEBAIFZlY3RvcjxJbnN0PiBlbWl0U2h1ZmZsZSgKICAgICAgICAgICAgIEFTU0VSVChjdXJyZW50
UGFpcnMuaXNFbXB0eSgpKTsKICAgICAgICAgICAgIEFyZyBvcmlnaW5hbFNyYyA9IG1hcHBpbmcu
YmVnaW4oKS0+a2V5OwogICAgICAgICAgICAgQVNTRVJUKCFzaGlmdHMuY29udGFpbnMob3JpZ2lu
YWxTcmMpKTsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEFpckVt
aXRTaHVmZmxlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiUHJv
Y2Vzc2luZyBmcm9tICIsIG9yaWdpbmFsU3JjLCAiXG4iKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgR3JhcGhOb2RlV29ya2xpc3Q8QXJnPiB3b3JrbGlzdDsKQEAgLTE5NSw3ICsxOTcsNyBA
QCBWZWN0b3I8SW5zdD4gZW1pdFNodWZmbGUoCiAgICAgICAgICAgICAgICAgaWYgKGl0ZXIgPT0g
bWFwcGluZy5lbmQoKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBXaXRoIGEgc2hpZnQgaXQn
cyBwb3NzaWJsZSB0aGF0IHdlIHByZXZpb3VzbHkgYnVpbHQgdGhlIHRhaWwgb2YgdGhpcyBzaGlm
dC4KICAgICAgICAgICAgICAgICAgICAgLy8gU2VlIGlmIHRoYXQncyB0aGUgY2FzZSBub3cuCi0g
ICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAo
QWlyRW1pdFNodWZmbGVJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2coIlRyeWluZyB0byBhcHBlbmQgc2hpZnQgYXQgIiwgc3JjLCAiXG4iKTsKICAgICAg
ICAgICAgICAgICAgICAgY3VycmVudFBhaXJzLmFwcGVuZFZlY3RvcihzaGlmdHMudGFrZShzcmMp
KTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0yMTMsNyArMjE1LDcgQEAgVmVj
dG9yPEluc3Q+IGVtaXRTaHVmZmxlKAogICAgICAgICAgICAgQVNTRVJUKGN1cnJlbnRQYWlycy5z
aXplKCkpOwogICAgICAgICAgICAgQVNTRVJUKGN1cnJlbnRQYWlyc1swXS5zcmMoKSA9PSBvcmln
aW5hbFNyYyk7CiAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEFp
ckVtaXRTaHVmZmxlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygi
Y3VycmVudFBhaXJzID0gIiwgbGlzdER1bXAoY3VycmVudFBhaXJzKSwgIlxuIik7CiAKICAgICAg
ICAgICAgIGJvb2wgaXNSb3RhdGUgPSBmYWxzZTsKQEAgLTIyNSw3ICsyMjcsNyBAQCBWZWN0b3I8
SW5zdD4gZW1pdFNodWZmbGUoCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChpc1Jv
dGF0ZSkgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlm
IChBaXJFbWl0U2h1ZmZsZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nKCJJdCdzIGEgcm90YXRlLlxuIik7CiAgICAgICAgICAgICAgICAgUm90YXRlIHJvdGF0
ZTsKIApAQCAtMjc3LDE0ICsyNzksMTQgQEAgVmVjdG9yPEluc3Q+IGVtaXRTaHVmZmxlKAogICAg
ICAgICAgICAgICAgIHJvdGF0ZXMuYXBwZW5kKFdURk1vdmUocm90YXRlKSk7CiAgICAgICAgICAg
ICAgICAgY3VycmVudFBhaXJzLnNocmluaygwKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEFpckVtaXRTaHVm
ZmxlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkl0J3Mg
YSBzaGlmdC5cbiIpOwogICAgICAgICAgICAgICAgIHNoaWZ0cy5hZGQob3JpZ2luYWxTcmMsIFdU
Rk1vdmUoY3VycmVudFBhaXJzKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChBaXJFbWl0U2h1ZmZsZUludGVybmFsOjp2ZXJi
b3NlKSB7CiAgICAgICAgIGRhdGFMb2coIlNoaWZ0czpcbiIpOwogICAgICAgICBmb3IgKGF1dG8m
IGVudHJ5IDogc2hpZnRzKQogICAgICAgICAgICAgZGF0YUxvZygiICAgICIsIGVudHJ5LmtleSwg
IjogIiwgbGlzdER1bXAoZW50cnkudmFsdWUpLCAiXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCmluZGV4IDljYjExMDFh
MTFmMjM1MTdjMjk5MzNiZmFiYTlhM2M5MjFhODY2YWUuLjYwYThjYzAzNWZmMTI5MDU5MTA1ZWQ2
NWVjZjI1MzMyNmM4ZTUzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcApAQCAtMzksNyArMzksOSBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CiAKIG5hbWVzcGFjZSB7CiAKLWJv
b2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEFpckZpeE9idmlvdXNTcGlsbHNJbnRlcm5h
bCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIEZpeE9i
dmlvdXNTcGlsbHMgewogcHVibGljOgpAQCAtNTEsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHJ1bigpCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEFpckZp
eE9idmlvdXNTcGlsbHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkNv
ZGUgYmVmb3JlIGZpeE9idmlvdXNTcGlsbHM6XG4iLCBtX2NvZGUpOwogICAgICAgICAKICAgICAg
ICAgY29tcHV0ZUFsaWFzZXMoKTsKQEAgLTczLDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICBpZiAoIW1fc3RhdGUud2FzVmlzaXRlZCkKICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBp
ZiAoQWlyRml4T2J2aW91c1NwaWxsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJFeGVjdXRpbmcgYmxvY2sgIiwgKm1fYmxvY2ssICI6ICIsIG1fc3RhdGUs
ICJcbiIpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZvciAobV9pbnN0SW5k
ZXggPSAwOyBtX2luc3RJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbV9pbnN0SW5kZXgpCkBAIC0x
NjksMTMgKzE3MSwxMyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgSW5zdCYgaW5zdCA9IG1f
YmxvY2stPmF0KG1faW5zdEluZGV4KTsKIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
aWYgKEFpckZpeE9idmlvdXNTcGlsbHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRh
dGFMb2coIiAgICBFeGVjdXRpbmcgIiwgaW5zdCwgIjogIiwgbV9zdGF0ZSwgIlxuIik7CiAKICAg
ICAgICAgSW5zdDo6Zm9yRWFjaERlZldpdGhFeHRyYUNsb2JiZXJlZFJlZ3M8QXJnPigKICAgICAg
ICAgICAgICZpbnN0LCAmaW5zdCwKICAgICAgICAgICAgIFsmXSAoY29uc3QgQXJnJiBhcmcsIEFy
Zzo6Um9sZSwgQmFuaywgV2lkdGgpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgICAgICBpZiAoQWlyRml4T2J2aW91c1NwaWxsc0ludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgIENsb2JiZXJpbmcgIiwgYXJnLCAi
XG4iKTsKICAgICAgICAgICAgICAgICBtX3N0YXRlLmNsb2JiZXIoYXJnKTsKICAgICAgICAgICAg
IH0pOwpAQCAtMTkwLDcgKzE5Miw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBJbnN0JiBp
bnN0ID0gbV9ibG9jay0+YXQobV9pbnN0SW5kZXgpOwogCi0gICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICBpZiAoQWlyRml4T2J2aW91c1NwaWxsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgZGF0YUxvZygiRml4aW5nIGluc3QgIiwgaW5zdCwgIjogIiwgbV9zdGF0ZSwgIlxuIik7
CiAgICAgICAgIAogICAgICAgICAvLyBDaGVjayBpZiBhbGlhcyBhbmFseXNpcyBzYXlzIHRoYXQg
dGhpcyBpcyB1bm5lY2Vzc2FyeS4KQEAgLTI2NywxMyArMjY5LDEzIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgY2FzZSBXaWR0aDY0OgogICAgICAgICAgICAgICAgICAgICBpZiAoYWxpYXMt
Pm1vZGUgIT0gUmVnU2xvdDo6QWxsQml0cykKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAg
IGlmIChBaXJGaXhPYnZpb3VzU3BpbGxzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgUmVwbGFjaW5nICIsIGFyZywgIiB3aXRoICIsIGFsaWFz
LT5yZWcsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICBhcmcgPSBUbXAoYWxpYXMtPnJlZyk7
CiAgICAgICAgICAgICAgICAgICAgIGRpZFRoaW5ncyA9IHRydWU7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBjYXNlIFdpZHRoMzI6Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoQWlyRml4T2J2aW91
c1NwaWxsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiICAgIFJlcGxhY2luZyAiLCBhcmcsICIgd2l0aCAiLCBhbGlhcy0+cmVnLCAiIChzdWJ3aWR0
aCBjYXNlKVxuIik7CiAgICAgICAgICAgICAgICAgICAgIGFyZyA9IFRtcChhbGlhcy0+cmVnKTsK
ICAgICAgICAgICAgICAgICAgICAgZGlkVGhpbmdzID0gdHJ1ZTsKQEAgLTI4NSw3ICsyODcsNyBA
QCBwcml2YXRlOgogCiAgICAgICAgICAgICAvLyBSZXZlcnQgdG8gaW1tZWRpYXRlIGlmIHRoYXQg
ZGlkbid0IHdvcmsuCiAgICAgICAgICAgICBpZiAoY29uc3QgU2xvdENvbnN0KiBhbGlhcyA9IG1f
c3RhdGUuZ2V0U2xvdENvbnN0KGFyZy5zdGFja1Nsb3QoKSkpIHsKLSAgICAgICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQWlyRml4T2J2aW91c1NwaWxsc0ludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgUmVwbGFjaW5n
ICIsIGFyZywgIiB3aXRoIGNvbnN0YW50ICIsIGFsaWFzLT5jb25zdGFudCwgIlxuIik7CiAgICAg
ICAgICAgICAgICAgaWYgKEFyZzo6aXNWYWxpZEltbUZvcm0oYWxpYXMtPmNvbnN0YW50KSkKICAg
ICAgICAgICAgICAgICAgICAgYXJnID0gQXJnOjppbW0oYWxpYXMtPmNvbnN0YW50KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9j
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9j
LmNwcAppbmRleCAxZmEwNTNkYjljYTdmYzRjMzg2ZmIxOTM3MTUyMjU1YmVlZDcxMzliLi5iZmVm
M2IzZjRmMTFhNTlhMjFkMmI4MWNjZTE5MjViY2Q4MWU1NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyQWZ0ZXJSZWdBbGxvYy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwCkBAIC00
Niw3ICs0Niw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWly
IHsKIAogbmFtZXNwYWNlIHsKIAotYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgQWly
TG93ZXJBZnRlclJlZ0FsbG9jSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9
IGZhbHNlOworfQogICAgIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKQEAgLTU0LDcgKzU2
LDcgQEAgdm9pZCBsb3dlckFmdGVyUmVnQWxsb2MoQ29kZSYgY29kZSkKIHsKICAgICBQaGFzZVNj
b3BlIHBoYXNlU2NvcGUoY29kZSwgImxvd2VyQWZ0ZXJSZWdBbGxvYyIpOwogCi0gICAgaWYgKHZl
cmJvc2UpCisgICAgaWYgKEFpckxvd2VyQWZ0ZXJSZWdBbGxvY0ludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICBkYXRhTG9nKCJDb2RlIGJlZm9yZSBsb3dlckFmdGVyUmVnQWxsb2M6XG4iLCBjb2Rl
KTsKICAgICAKICAgICBhdXRvIGlzUmVsZXZhbnQgPSBbXSAoSW5zdCYgaW5zdCkgLT4gYm9vbCB7
CkBAIC0yMjEsNyArMjIzLDcgQEAgdm9pZCBsb3dlckFmdGVyUmVnQWxsb2MoQ29kZSYgY29kZSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrU2xvdHMuYXBwZW5kKHN0YWNrU2xvdCk7CiAg
ICAgICAgICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgICAgICAgICAgaWYgKEFpckxvd2VyQWZ0ZXJSZWdBbGxvY0ludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJQcmUtY2FsbCBwYWlycyBmb3IgIiwgaW5z
dCwgIjogIiwgbGlzdER1bXAocGFpcnMpLCAiXG4iKTsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0SW5zdHMoCkBAIC0yNzMsNyArMjc1LDcgQEAg
dm9pZCBsb3dlckFmdGVyUmVnQWxsb2MoQ29kZSYgY29kZSkKICAgICAgICAgICAgIH0pOwogICAg
IH0KIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChBaXJMb3dlckFmdGVyUmVnQWxsb2NJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQ29kZSBhZnRlciBsb3dlckFmdGVyUmVn
QWxsb2M6XG4iLCBjb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJTdGFja0FsbG9jYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJTdGFja0FsbG9jYXRpb24uY3BwCmluZGV4IDM5MjIyM2NhODg1ODA1YzVmOTZkMmZi
Yjg4MzlkMTIwMzljNjZjY2YuLjZiNmEyNmFlN2VmYmI3ZDlmM2YyZWExYmVhNjZiYWUzNGQ1OGI2
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3RhY2tBbGxv
Y2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclN0YWNrQWxs
b2NhdGlvbi5jcHAKQEAgLTM4LDcgKzM4LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7IG5hbWVzcGFjZSBBaXIgewogCiBuYW1lc3BhY2UgewogCi1jb25zdCBib29sIHZlcmJvc2Ug
PSBmYWxzZTsKK25hbWVzcGFjZSBBaXJTdGFja0FsbG9jYXRpb25JbnRlcm5hbCB7CitzdGF0aWMg
Y29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbGxl
Y3Rpb24+CiB2b2lkIHVwZGF0ZUZyYW1lU2l6ZUJhc2VkT25TdGFja1Nsb3RzSW1wbChDb2RlJiBj
b2RlLCBjb25zdCBDb2xsZWN0aW9uJiBjb2xsZWN0aW9uKQpAQCAtNTQsNyArNTYsNyBAQCB2b2lk
IHVwZGF0ZUZyYW1lU2l6ZUJhc2VkT25TdGFja1Nsb3RzSW1wbChDb2RlJiBjb2RlLCBjb25zdCBD
b2xsZWN0aW9uJiBjb2xsZWN0aQogYm9vbCBhdHRlbXB0QXNzaWdubWVudCgKICAgICBTdGFja1Ns
b3QqIHNsb3QsIGludHB0cl90IG9mZnNldEZyb21GUCwgY29uc3QgVmVjdG9yPFN0YWNrU2xvdCo+
JiBvdGhlclNsb3RzKQogewotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChBaXJTdGFja0FsbG9j
YXRpb25JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQXR0ZW1wdGluZyB0byBh
c3NpZ24gIiwgcG9pbnRlckR1bXAoc2xvdCksICIgdG8gIiwgb2Zmc2V0RnJvbUZQLCAiIHdpdGgg
aW50ZXJmZXJlbmNlICIsIHBvaW50ZXJMaXN0RHVtcChvdGhlclNsb3RzKSwgIlxuIik7CiAKICAg
ICAvLyBOZWVkIHRvIGFsaWduIGl0IHRvIHRoZSBzbG90J3MgZGVzaXJlZCBhbGlnbm1lbnQuCkBA
IC03Miw3ICs3NCw3IEBAIGJvb2wgYXR0ZW1wdEFzc2lnbm1lbnQoCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEFpclN0YWNrQWxs
b2NhdGlvbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJBc3NpZ25lZCAiLCBw
b2ludGVyRHVtcChzbG90KSwgIiB0byAiLCBvZmZzZXRGcm9tRlAsICJcbiIpOwogICAgIHNsb3Qt
PnNldE9mZnNldEZyb21GUChvZmZzZXRGcm9tRlApOwogICAgIHJldHVybiB0cnVlOwpAQCAtODAs
NyArODIsNyBAQCBib29sIGF0dGVtcHRBc3NpZ25tZW50KAogCiB2b2lkIGFzc2lnbihTdGFja1Ns
b3QqIHNsb3QsIGNvbnN0IFZlY3RvcjxTdGFja1Nsb3QqPiYgb3RoZXJTbG90cykKIHsKLSAgICBp
ZiAodmVyYm9zZSkKKyAgICBpZiAoQWlyU3RhY2tBbGxvY2F0aW9uSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgIGRhdGFMb2coIkF0dGVtcHRpbmcgdG8gYXNzaWduICIsIHBvaW50ZXJEdW1wKHNs
b3QpLCAiIHdpdGggaW50ZXJmZXJlbmNlICIsIHBvaW50ZXJMaXN0RHVtcChvdGhlclNsb3RzKSwg
IlxuIik7CiAgICAgCiAgICAgaWYgKGF0dGVtcHRBc3NpZ25tZW50KHNsb3QsIC1zdGF0aWNfY2Fz
dDxpbnRwdHJfdD4oc2xvdC0+Ynl0ZVNpemUoKSksIG90aGVyU2xvdHMpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IDM1ZmZiZjFhYmFiODJl
ZDdmNDQ2YjU2YjRlZGMxNTVhNDlmZWQ4ZDAuLjQxOTg2NTUwNDc0NDM4NzdlY2E2MTMwY2NmZmE3
YTVhYTIzZjg0YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAKQEAgLTUxLDcgKzUxLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK25hbWVzcGFj
ZSBBY2Nlc3NDYXNlSW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNl
OworfQogCiBBY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNj
ZXNzVHlwZSB0eXBlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0KQogICAgIDog
bV90eXBlKHR5cGUpCkBAIC00MDgsNyArNDEwLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0
ZShBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0
ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKIHsKICAgICBTdXBlclNhbXBsZXJT
Y29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYg
KEFjY2Vzc0Nhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiXG5cbkdlbmVy
YXRpbmcgY29kZSBmb3I6ICIsICp0aGlzLCAiXG4iKTsKIAogICAgIEFTU0VSVChtX3N0YXRlID09
IEdlbmVyYXRlZCk7IC8vIFdlIHJlbHkgb24gdGhlIGNhbGxlcnMgc2V0dGluZyB0aGlzIGZvciB1
cy4KQEAgLTc5MCwxMSArNzkyLDExIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFj
Y2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAKICAgICBjYXNlIFJlcGxhY2U6IHsKICAgICAg
ICAgaWYgKEluZmVycmVkVHlwZSogdHlwZSA9IHN0cnVjdHVyZSgpLT5pbmZlcnJlZFR5cGVGb3Io
aWRlbnQuaW1wbCgpKSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBp
ZiAoQWNjZXNzQ2FzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2co
IkhhdmUgdHlwZTogIiwgdHlwZS0+ZGVzY3JpcHRvcigpLCAiXG4iKTsKICAgICAgICAgICAgIHN0
YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZCgKICAgICAgICAgICAgICAgICBqaXQuYnJhbmNoSWZO
b3RUeXBlKHZhbHVlUmVncywgc2NyYXRjaEdQUiwgdHlwZS0+ZGVzY3JpcHRvcigpKSk7Ci0gICAg
ICAgIH0gZWxzZSBpZiAodmVyYm9zZSkKKyAgICAgICAgfSBlbHNlIGlmIChBY2Nlc3NDYXNlSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJEb24ndCBoYXZlIHR5cGUuXG4i
KTsKIAogICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQobV9vZmZzZXQpKSB7CkBAIC04MjAsMTEg
KzgyMiwxMSBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlKQogICAgICAgICBSRUxFQVNFX0FTU0VSVChHUFJJbmZvOjpudW1iZXJPZlJl
Z2lzdGVycyA+PSA2IHx8ICFzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCBzdHJ1
Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PSBuZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKSk7CiAKICAgICAgICAgaWYgKEluZmVycmVkVHlwZSogdHlwZSA9IG5ld1N0cnVj
dHVyZSgpLT5pbmZlcnJlZFR5cGVGb3IoaWRlbnQuaW1wbCgpKSkgewotICAgICAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQWNjZXNzQ2FzZUludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgICAgIGRhdGFMb2coIkhhdmUgdHlwZTogIiwgdHlwZS0+ZGVzY3JpcHRvcigp
LCAiXG4iKTsKICAgICAgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZCgKICAgICAg
ICAgICAgICAgICBqaXQuYnJhbmNoSWZOb3RUeXBlKHZhbHVlUmVncywgc2NyYXRjaEdQUiwgdHlw
ZS0+ZGVzY3JpcHRvcigpKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAodmVyYm9zZSkKKyAgICAgICAg
fSBlbHNlIGlmIChBY2Nlc3NDYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRh
TG9nKCJEb24ndCBoYXZlIHR5cGUuXG4iKTsKIAogICAgICAgICAvLyBOT1RFOiBUaGlzIGxvZ2lj
IGlzIGR1cGxpY2F0ZWQgaW4gQWNjZXNzQ2FzZTo6ZG9lc0NhbGxzKCkuIEl0J3MgaW1wb3J0YW50
IHRoYXQgZG9lc0NhbGxzKCkga25vd3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCmluZGV4IGYzNGMyNzQyMDUzY2IyOTNkYWE1YzE2Mzg2
NmJmYWM0YTAyMjU2OTguLjUzYjg0ZDljMDM3ZTE3ZjZhZTkzZGM4NTUxOTI3ODhiNjNlNjdhZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVz
LmNwcApAQCAtMzgsNyArMzgsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFtZXNwYWNlIENh
bGxMaW5rU3RhdHVzSW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNl
OworfQogCiBDYWxsTGlua1N0YXR1czo6Q2FsbExpbmtTdGF0dXMoSlNWYWx1ZSB2YWx1ZSkKICAg
ICA6IG1fY291bGRUYWtlU2xvd1BhdGgoZmFsc2UpCkBAIC0yODksNyArMjkxLDcgQEAgdm9pZCBD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZURGR1N0YXR1c2VzKAogICAgIFVOVVNFRF9QQVJBTShkZmdD
b2RlQmxvY2spOwogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQogICAgIAotICAgIGlmICh2ZXJi
b3NlKSB7CisgICAgaWYgKENhbGxMaW5rU3RhdHVzSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAg
ICAgZGF0YUxvZygiQ29udGV4dCBtYXA6XG4iKTsKICAgICAgICAgQ29udGV4dE1hcDo6aXRlcmF0
b3IgaXRlciA9IG1hcC5iZWdpbigpOwogICAgICAgICBDb250ZXh0TWFwOjppdGVyYXRvciBlbmQg
PSBtYXAuZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAKaW5kZXggYzRkYTgwZWNjMTljMjE0N2UyZmE3
YjVkOTk2ODRjZGZlYjJlNDc4MC4uNjA2NjkxYjNiMjAzYWVlMWFjYmEyNzRmNDU1YzRiNGVlYzc3
ZjdlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNl
dHRlckFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcApAQCAtMzgsNyArMzgsOSBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAorbmFtZXNwYWNlIEdldHRlclNldHRlckFjY2Vzc0Nhc2VJbnRlcm5hbCB7CiBzdGF0
aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIEdldHRlclNldHRlckFjY2Vzc0Nh
c2U6OkdldHRlclNldHRlckFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NU
eXBlIGFjY2Vzc1R5cGUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIGJvb2wg
dmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIEpTT2JqZWN0KiBjdXN0b21T
bG90QmFzZSkKICAgICA6IEJhc2Uodm0sIG93bmVyLCBhY2Nlc3NUeXBlLCBvZmZzZXQsIHN0cnVj
dHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCkKQEAgLTE4NSw3ICsx
ODcsNyBAQCB2b2lkIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIoQWNj
ZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29ucwogICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9j
YXRvcjo6UHJlc2VydmVkU3RhdGUgcHJlc2VydmVkU3RhdGUgPQogICAgIGFsbG9jYXRvci5wcmVz
ZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhqaXQsIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
cjo6RXh0cmFTdGFja1NwYWNlOjpTcGFjZUZvckNDYWxsKTsKIAotICAgIGlmICh2ZXJib3NlKSB7
CisgICAgaWYgKEdldHRlclNldHRlckFjY2Vzc0Nhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAg
ICAgICBkYXRhTG9nKCJiYXNlR1BSID0gIiwgYmFzZUdQUiwgIlxuIik7CiAgICAgICAgIGRhdGFM
b2coInZhbHVlUmVncyA9ICIsIHZhbHVlUmVncywgIlxuIik7CiAgICAgICAgIGRhdGFMb2coInNj
cmF0Y2hHUFIgPSAiLCBzY3JhdGNoR1BSLCAiXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3Bw
CmluZGV4IDYxOWVhNWQ5Y2I0N2IxZjE5NWIwZThiNDdkNTk5NmNhODU5YzM0ZWYuLjk2Nzk1MjM3
Nzg4Y2MxOTY1MDc0MWJkY2Y2OWFlNDdjZDI4ZGE0YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
LmNwcApAQCAtMTgyLDEzICsxODIsMTUgQEAgYm9vbCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dDo6aXNWYWxpZEFuZFdhdGNoYWJsZSgpIGNvbnN0CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVy
Ym9zZSA9IGZhbHNlOworbmFtZXNwYWNlIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJu
YWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvbiBnZW5lcmF0ZUNvbmRpdGlvbigKICAgICBWTSYgdm0sIEpTQ2VsbCogb3du
ZXIsIEpTT2JqZWN0KiBvYmplY3QsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIFByb3BlcnR5Q29u
ZGl0aW9uOjpLaW5kIGNvbmRpdGlvbktpbmQpCiB7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBvYmplY3QtPnN0cnVjdHVyZSgpOwotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJD
cmVhdGluZyBjb25kaXRpb24gIiwgY29uZGl0aW9uS2luZCwgIiBmb3IgIiwgcG9pbnRlckR1bXAo
c3RydWN0dXJlKSwgIlxuIik7CiAKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiByZXN1bHQ7
CkBAIC0yMjYsMTIgKzIyOCwxMiBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBnZW5lcmF0ZUNv
bmRpdGlvbigKICAgICB9CiAKICAgICBpZiAoIXJlc3VsdC5pc1N0aWxsVmFsaWRBc3N1bWluZ0lt
cHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgIGRhdGFMb2coIkZhaWxlZCB0byBjcmVhdGUgY29uZGl0aW9uOiAiLCByZXN1bHQsICJc
biIpOwogICAgICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRpb24oKTsKICAgICB9CiAK
LSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiTmV3IGNvbmRpdGlvbjogIiwgcmVzdWx0
LCAiXG4iKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjQ4LDExICsyNTAsMTEgQEAgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVDb25kaXRpb25zKAogICAgIFZlY3RvcjxP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvbj4gY29uZGl0aW9uczsKICAgICAKICAgICBmb3IgKDs7KSB7
Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5n
IHN0cnVjdHVyZTogIiwgcG9pbnRlckR1bXAoc3RydWN0dXJlKSwgIlxuIik7CiAgICAgICAgIAog
ICAgICAgICBpZiAoc3RydWN0dXJlLT5pc1Byb3h5KCkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiSXQncyBhIHByb3h5LCBzbyBpbnZh
bGlkLlxuIik7CiAgICAgICAgICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6
OmludmFsaWQoKTsKICAgICAgICAgfQpAQCAtMjYxLDExICsyNjMsMTEgQEAgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQgZ2VuZXJhdGVDb25kaXRpb25zKAogICAgICAgICAKICAgICAgICAgaWYg
KHZhbHVlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBpZiAoIXByb3RvdHlwZSkgewotICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKCJSZWFjaGVkIGVuZCBvZiBwcm90b3R5cGUgY2hhaW4gYXMgZXhwZWN0ZWQsIGRvbmUuXG4i
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiVW5leHBlY3RlZGx5IHJl
YWNoZWQgZW5kIG9mIHByb3RvdHlwZSBjaGFpbiwgc28gaW52YWxpZC5cbiIpOwogICAgICAgICAg
ICAgcmV0dXJuIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjppbnZhbGlkKCk7CiAgICAgICAg
IH0KQEAgLTI3NiwzNSArMjc4LDM1IEBAIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVy
YXRlQ29uZGl0aW9ucygKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsK
ICAgICAgICAgICAgIGlmIChjb25jdXJyZW5jeSA9PSBNYWluVGhyZWFkKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzQmVlbkZsYXR0ZW5lZEJlZm9yZSgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIkRpY3Rpb25hcnkgaGFzIGJlZW4gZmxhdHRlbmVkIGJlZm9yZSwgc28g
aW52YWxpZC5cbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQ6OmludmFsaWQoKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
RmxhdHRlbmluZyAiLCBwb2ludGVyRHVtcChzdHJ1Y3R1cmUpKTsKICAgICAgICAgICAgICAgICBz
dHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKHZtLCBvYmplY3QpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAg
ICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ2Fubm90IGZsYXR0ZW4gZGljdGlvbmFyeSB3aGVu
IG5vdCBvbiBtYWluIHRocmVhZCwgc28gaW52YWxpZC5cbiIpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aW52YWxpZCgpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFmdW5jdG9yKGNvbmRpdGlvbnMsIG9iamVjdCkp
IHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiRnVuY3RvciBmYWlsZWQsIGludmFsaWQuXG4iKTsKICAgICAgICAgICAgIHJldHVybiBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aW52YWxpZCgpOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBpZiAob2JqZWN0ID09IHByb3RvdHlwZSkgewotICAgICAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJSZWFjaGVkIGRlc2lyZWQgcHJvdG90
eXBlLCBkb25lLlxuIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIAot
ICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmcgY29uZGl0aW9uczogIiwg
bGlzdER1bXAoY29uZGl0aW9ucyksICJcbiIpOwogICAgIHJldHVybiBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldDo6Y3JlYXRlKGNvbmRpdGlvbnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggZmIwYjZhOWQ4
YzJkZGM4ZmMzZjljOTE5MWRiZjIyYjliZDQwMjk4OC4uNDIyODBjNWFlNmY3NmRiNjcwM2E2MDE2
ZDU4M2MxYjBhMDFkYzM1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC00NCw3ICs0NCw5IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCituYW1lc3BhY2UgUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbCB7CiBzdGF0aWMg
Y29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIHZvaWQgQWNjZXNzR2VuZXJhdGlvblJl
c3VsdDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewpAQCAtMjQ3LDcgKzI0OSw3IEBA
IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKAogICAg
ICAgICBjYXNlc1RvQWRkLmFwcGVuZChXVEZNb3ZlKG15Q2FzZSkpOwogICAgIH0KIAotICAgIGlm
ICh2ZXJib3NlKQorICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICBkYXRhTG9nKCJjYXNlc1RvQWRkOiAiLCBsaXN0RHVtcChjYXNlc1RvQWRkKSwgIlxu
Iik7CiAKICAgICAvLyBJZiB0aGVyZSBhcmVuJ3QgYW55IGNhc2VzIHRvIGFkZCwgdGhlbiBmYWls
IG9uIHRoZSBncm91bmRzIHRoYXQgdGhlcmUncyBubyBwb2ludCB0byBnZW5lcmF0aW5nIGEKQEAg
LTI2Myw3ICsyNjUsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNz
OjphZGRDYXNlcygKICAgICAgICAgbV9saXN0LmFwcGVuZChXVEZNb3ZlKGNhc2VUb0FkZCkpOwog
ICAgIH0KICAgICAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQWZ0ZXIgYWRkQ2FzZXM6IG1fbGlz
dDogIiwgbGlzdER1bXAobV9saXN0KSwgIlxuIik7CiAKICAgICByZXR1cm4gQWNjZXNzR2VuZXJh
dGlvblJlc3VsdDo6QnVmZmVyZWQ7CkBAIC0zMzQsNyArMzM2LDcgQEAgQWNjZXNzR2VuZXJhdGlv
blJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSgKIHsKICAgICBTdXBlclNhbXBs
ZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgCi0gICAgaWYgKHZlcmJvc2Up
CisgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRh
dGFMb2coIlJlZ2VuZXJhdGUgd2l0aCBtX2xpc3Q6ICIsIGxpc3REdW1wKG1fbGlzdCksICJcbiIp
OwogICAgIAogICAgIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSBzdGF0ZSh2bSk7CkBAIC00MDIsNyAr
NDA0LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5l
cmF0ZSgKICAgICB9CiAgICAgbV9saXN0LnJlc2l6ZShkc3RJbmRleCk7CiAgICAgCi0gICAgaWYg
KHZlcmJvc2UpCisgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgIGRhdGFMb2coIk9wdGltaXplZCBjYXNlczogIiwgbGlzdER1bXAoY2FzZXMpLCAiXG4i
KTsKICAgICAKICAgICAvLyBBdCB0aGlzIHBvaW50IHdlJ3JlIGNvbnZpbmNlZCB0aGF0ICdjYXNl
cycgY29udGFpbnMgdGhlIGNhc2VzIHRoYXQgd2Ugd2FudCB0byBKSVQgbm93IGFuZCB3ZQpAQCAt
NTE3LDcgKzUxOSw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6
OnJlZ2VuZXJhdGUoCiAKICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBjb2RlQmxvY2ss
IEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgaWYgKGxpbmtCdWZmZXIuZGlkRmFpbFRvQWxs
b2NhdGUoKSkgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKFBvbHltb3JwaGlj
QWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJEaWQgZmFpbCB0
byBhbGxvY2F0ZS5cbiIpOwogICAgICAgICByZXR1cm4gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6
R2F2ZVVwOwogICAgIH0KQEAgLTUyOCw3ICs1MzAsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0
IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKAogCiAgICAgbGlua0J1ZmZlci5saW5rKGZh
aWx1cmUsIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbigpKTsKICAgICAKLSAgICBpZiAo
dmVyYm9zZSkKKyAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgZGF0YUxvZyhGdWxsQ29kZU9yaWdpbihjb2RlQmxvY2ssIHN0dWJJbmZvLmNvZGVPcmln
aW4pLCAiOiBHZW5lcmF0aW5nIHBvbHltb3JwaGljIGFjY2VzcyBzdHViIGZvciAiLCBsaXN0RHVt
cChjYXNlcyksICJcbiIpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGUgPSBGSU5B
TElaRV9DT0RFX0ZPUigKQEAgLTU0NCw3ICs1NDYsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0
IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKAogICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZN
b3ZlKHN0YXRlLndhdGNocG9pbnRzKTsKICAgICBpZiAoIXN0YXRlLndlYWtSZWZlcmVuY2VzLmlz
RW1wdHkoKSkKICAgICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVj
dG9yPFdyaXRlQmFycmllcjxKU0NlbGw+Pj4oV1RGTW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykp
OwotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6ICIsIGNvZGUuY29kZSgpLCAiXG4i
KTsKICAgICAKICAgICBtX2xpc3QgPSBXVEZNb3ZlKGNhc2VzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uY3BwCmluZGV4IDQyM2Jj
MjEwZWQ0ODNjYTExOTdlMzk5YjU5NTU0NjY2Y2RmMzk1YzkuLjA3NjQ0YTMwN2Y5Y2Y0ZTljNWYz
MmE3MWMxODFjMmJmODM5OTU1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcApAQCAtMzIsNyArMzIsOSBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAorbmFtZXNwYWNlIFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWwgewogc3Rh
dGljIGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiB2b2lkIFByb3BlcnR5Q29uZGl0aW9uOjpk
dW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25z
dAogewpAQCAtNjUsMjAgKzY3LDIwIEBAIHZvaWQgUHJvcGVydHlDb25kaXRpb246OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKIGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxp
ZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KAogICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU09iamVjdCogYmFzZSkgY29uc3QKIHsKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlm
IChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2co
CiAgICAgICAgICAgICAiRGV0ZXJtaW5pbmcgdmFsaWRpdHkgb2YgIiwgKnRoaXMsICIgd2l0aCBz
dHJ1Y3R1cmUgIiwgcG9pbnRlckR1bXAoc3RydWN0dXJlKSwgIiBhbmQgYmFzZSAiLAogICAgICAg
ICAgICAgSlNWYWx1ZShiYXNlKSwgIiBhc3N1bWluZyBpbXB1cmUgcHJvcGVydHkgd2F0Y2hwb2lu
dHMgYXJlIHNldC5cbiIpOwogICAgIH0KICAgICAKICAgICBpZiAoISp0aGlzKSB7Ci0gICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkludmFsaWQgYmVjYXVzZSB1bnNldC5cbiIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIGlmICghc3RydWN0dXJlLT5w
cm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgZGF0YUxvZygiSW52YWxpZCBiZWNhdXNlIGFjY2Vzc2VzIGFyZSBub3QgY2FjaGVhYmxlLlxu
Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC04OCw3ICs5MCw3IEBAIGJvb2wg
UHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRj
aHBvaW50KAogICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKICAgICAgICAgUHJv
cGVydHlPZmZzZXQgY3VycmVudE9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHVp
ZCgpLCBjdXJyZW50QXR0cmlidXRlcyk7CiAgICAgICAgIGlmIChjdXJyZW50T2Zmc2V0ICE9IG9m
ZnNldCgpIHx8IGN1cnJlbnRBdHRyaWJ1dGVzICE9IGF0dHJpYnV0ZXMoKSkgewotICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVy
bmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAg
ICAgICAgIkludmFsaWQgYmVjYXVzZSB3ZSBuZWVkIG9mZnNldCwgYXR0cmlidXRlcyB0byBiZSAi
LCBvZmZzZXQoKSwgIiwgIiwgYXR0cmlidXRlcygpLAogICAgICAgICAgICAgICAgICAgICAiIGJ1
dCB0aGV5IGFyZSAiLCBjdXJyZW50T2Zmc2V0LCAiLCAiLCBjdXJyZW50QXR0cmlidXRlcywgIlxu
Iik7CkBAIC0xMDAsMjAgKzEwMiwyMCBAQCBib29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxs
VmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgKICAgICAgICAgCiAgICAgY2Fz
ZSBBYnNlbmNlOiB7CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7Ci0g
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlv
bkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkludmFsaWQgYmVj
YXVzZSBpdCdzIGEgZGljdGlvbmFyeS5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAKICAgICAgICAgUHJvcGVydHlPZmZzZXQgY3VycmVudE9mZnNldCA9IHN0cnVj
dHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCgpKTsKICAgICAgICAgaWYgKGN1cnJlbnRPZmZzZXQg
IT0gaW52YWxpZE9mZnNldCkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAg
ICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCJJbnZhbGlkIGJlY2F1c2UgdGhlIHByb3BlcnR5IGV4aXN0cyBhdCBvZmZzZXQ6
ICIsIGN1cnJlbnRPZmZzZXQsICJcbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGVP
YmplY3QoKSAhPSBwcm90b3R5cGUoKSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAg
ICAgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKSB7CiAgICAg
ICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgYmVjYXVz
ZSB0aGUgcHJvdG90eXBlIGlzICIsIHN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCksICIgZXZl
biB0aG91Z2ggIgogICAgICAgICAgICAgICAgICAgICAiaXQgc2hvdWxkIGhhdmUgYmVlbiAiLCBK
U1ZhbHVlKHByb3RvdHlwZSgpKSwgIlxuIik7CkBAIC0xMjYsNyArMTI4LDcgQEAgYm9vbCBQcm9w
ZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9p
bnQoCiAgICAgCiAgICAgY2FzZSBBYnNlbmNlT2ZTZXRFZmZlY3Q6IHsKICAgICAgICAgaWYgKHN0
cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICAgICAgaWYgKFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiSW52YWxpZCBiZWNhdXNlIGl0J3MgYSBkaWN0aW9uYXJ5LlxuIik7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTEzNSw3ICsxMzcsNyBA
QCBib29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3Bl
cnR5V2F0Y2hwb2ludCgKICAgICAgICAgUHJvcGVydHlPZmZzZXQgY3VycmVudE9mZnNldCA9IHN0
cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCgpLCBjdXJyZW50QXR0cmlidXRlcyk7CiAgICAg
ICAgIGlmIChjdXJyZW50T2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAgICAgICAgICAgIGlm
IChjdXJyZW50QXR0cmlidXRlcyAmIChSZWFkT25seSB8IEFjY2Vzc29yIHwgQ3VzdG9tQWNjZXNz
b3IpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgYmVjYXVzZSB3
ZSBleHBlY3RlZCBub3QgdG8gaGF2ZSBhIHNldHRlciwgYnV0IHdlIGhhdmUgb25lIGF0IG9mZnNl
dCAiLAogICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE9mZnNldCwgIiB3aXRoIGF0dHJp
YnV0ZXMgIiwgY3VycmVudEF0dHJpYnV0ZXMsICJcbiIpOwpAQCAtMTQ1LDcgKzE0Nyw3IEBAIGJv
b2wgUHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlX
YXRjaHBvaW50KAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoc3RydWN0dXJlLT5z
dG9yZWRQcm90b3R5cGVPYmplY3QoKSAhPSBwcm90b3R5cGUoKSkgewotICAgICAgICAgICAgaWYg
KHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2
ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAg
IkludmFsaWQgYmVjYXVzZSB0aGUgcHJvdG90eXBlIGlzICIsIHN0cnVjdHVyZS0+c3RvcmVkUHJv
dG90eXBlKCksICIgZXZlbiB0aG91Z2ggIgogICAgICAgICAgICAgICAgICAgICAiaXQgc2hvdWxk
IGhhdmUgYmVlbiAiLCBKU1ZhbHVlKHByb3RvdHlwZSgpKSwgIlxuIik7CkBAIC0xNjAsNyArMTYy
LDcgQEAgYm9vbCBQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQ
cm9wZXJ0eVdhdGNocG9pbnQoCiAgICAgICAgIGlmICghYmFzZSB8fCBiYXNlLT5zdHJ1Y3R1cmUo
KSAhPSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIC8vIENvbnNlcnZhdGl2ZWx5IHJldHVybiBm
YWxzZSwgc2luY2Ugd2UgY2Fubm90IHZlcmlmeSB0aGlzIG9uZSB3aXRob3V0IGhhdmluZyB0aGUK
ICAgICAgICAgICAgIC8vIG9iamVjdC4KLSAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAg
ICAgICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAg
ICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGJlY2F1c2Ug
d2UgZG9uJ3QgaGF2ZSBhIGJhc2Ugb3IgdGhlIGJhc2UgaGFzIHRoZSB3cm9uZyBzdHJ1Y3R1cmU6
ICIsCiAgICAgICAgICAgICAgICAgICAgIFJhd1BvaW50ZXIoYmFzZSksICJcbiIpOwpAQCAtMTcz
LDcgKzE3NSw3IEBAIGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5n
SW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KAogICAgICAgICAKICAgICAgICAgUHJvcGVydHlPZmZz
ZXQgY3VycmVudE9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCgpKTsKICAg
ICAgICAgaWYgKGN1cnJlbnRPZmZzZXQgPT0gaW52YWxpZE9mZnNldCkgewotICAgICAgICAgICAg
aWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFs
Ojp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAg
ICAgIkludmFsaWQgYmVjYXVzZSB0aGUgYmFzZSBubyBsb25nIGFwcGVhcnMgdG8gaGF2ZSAiLCB1
aWQoKSwgIiBvbiBpdHMgc3RydWN0dXJlOiAiLAogICAgICAgICAgICAgICAgICAgICAgICAgUmF3
UG9pbnRlcihiYXNlKSwgIlxuIik7CkBAIC0xODMsNyArMTg1LDcgQEAgYm9vbCBQcm9wZXJ0eUNv
bmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoCiAK
ICAgICAgICAgSlNWYWx1ZSBjdXJyZW50VmFsdWUgPSBiYXNlLT5nZXREaXJlY3QoY3VycmVudE9m
ZnNldCk7CiAgICAgICAgIGlmIChjdXJyZW50VmFsdWUgIT0gcmVxdWlyZWRWYWx1ZSgpKSB7Ci0g
ICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgaWYgKFByb3BlcnR5Q29uZGl0
aW9uSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAg
ICAgICAgICAgICAgICAiSW52YWxpZCBiZWNhdXNlIHRoZSB2YWx1ZSBpcyAiLCBjdXJyZW50VmFs
dWUsICIgYnV0IHdlIHJlcXVpcmUgIiwgcmVxdWlyZWRWYWx1ZSgpLAogICAgICAgICAgICAgICAg
ICAgICAiXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IDIxODc3NTE3NmYyNzdlMzY2OGRjMTJkZWI2NjY1ZGEx
NGU0N2QxYjcuLjNlM2JmMjQzYWE5NWEyOTNlYjI2YWRjMjg1YWE5OTYwNjBlODlkNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmNwcApAQCAtMzUsNyArMzUsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShKSVQp
CiAKK25hbWVzcGFjZSBTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsIHsKIHN0YXRpYyBjb25zdCBi
b29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogU3RydWN0dXJlU3R1YkluZm86OlN0cnVjdHVyZVN0
dWJJbmZvKEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKICAgICA6IGNhbGxTaXRlSW5kZXgoVUlOVF9N
QVgpCkBAIC0xMTUsNyArMTE3LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVT
dHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgKIHsKICAgICBWTSYgdm0gPSAqY29kZUJsb2NrLT52bSgp
OwogICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJBZGRpbmcgYWNjZXNzIGNhc2U6ICIsIGFj
Y2Vzc0Nhc2UsICJcbiIpOwogICAgIAogICAgIGlmICghYWNjZXNzQ2FzZSkKQEAgLTEyNiw3ICsx
MjgsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nl
c3NDYXNlKAogICAgIGlmIChjYWNoZVR5cGUgPT0gQ2FjaGVUeXBlOjpTdHViKSB7CiAgICAgICAg
IHJlc3VsdCA9IHUuc3R1Yi0+YWRkQ2FzZShsb2NrZXIsIHZtLCBjb2RlQmxvY2ssICp0aGlzLCBp
ZGVudCwgV1RGTW92ZShhY2Nlc3NDYXNlKSk7CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9z
ZSkKKyAgICAgICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICBkYXRhTG9nKCJIYWQgc3R1YiwgcmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOwogCiAg
ICAgICAgIGlmICghcmVzdWx0LmJ1ZmZlcmVkKCkpIHsKQEAgLTE0Nyw3ICsxNDksNyBAQCBBY2Nl
c3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAogICAg
ICAgICAKICAgICAgICAgcmVzdWx0ID0gYWNjZXNzLT5hZGRDYXNlcyhsb2NrZXIsIHZtLCBjb2Rl
QmxvY2ssICp0aGlzLCBpZGVudCwgV1RGTW92ZShhY2Nlc3NDYXNlcykpOwogICAgICAgICAKLSAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQ3JlYXRlZCBzdHViLCByZXN1bHQ6ICIs
IHJlc3VsdCwgIlxuIik7CiAKICAgICAgICAgaWYgKCFyZXN1bHQuYnVmZmVyZWQoKSkgewpAQCAt
MTY0LDcgKzE2Niw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86
OmFkZEFjY2Vzc0Nhc2UoCiAgICAgLy8gSWYgd2UgZGlkbid0IGJ1ZmZlciBhbnkgY2FzZXMgdGhl
biBiYWlsLiBJZiB0aGlzIG1hZGUgbm8gY2hhbmdlcyB0aGVuIHdlJ2xsIGp1c3QgdHJ5IGFnYWlu
CiAgICAgLy8gc3ViamVjdCB0byBjb29sLWRvd24uCiAgICAgaWYgKCFyZXN1bHQuYnVmZmVyZWQo
KSkgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZv
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJEaWRuJ3QgYnVmZmVyIGFu
eXRoaW5nLCBiYWlsaW5nLlxuIik7CiAgICAgICAgIGJ1ZmZlcmVkU3RydWN0dXJlcy5jbGVhcigp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTcyLDcgKzE3NCw3IEBAIEFjY2Vzc0dlbmVy
YXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAgICAgCiAgICAg
Ly8gVGhlIGJ1ZmZlcmluZyBjb3VudGRvd24gdGVsbHMgdXMgaWYgd2Ugc2hvdWxkIGJlIHJlcGF0
Y2hpbmcgbm93LgogICAgIGlmIChidWZmZXJpbmdDb3VudGRvd24pIHsKLSAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgZGF0YUxvZygiQ291bnRkb3duIGlzIHRvbyBoaWdoOiAiLCBidWZmZXJpbmdD
b3VudGRvd24sICIuXG4iKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0xODMs
NyArMTg1LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRk
QWNjZXNzQ2FzZSgKICAgICAKICAgICByZXN1bHQgPSB1LnN0dWItPnJlZ2VuZXJhdGUobG9ja2Vy
LCB2bSwgY29kZUJsb2NrLCAqdGhpcywgaWRlbnQpOwogICAgIAotICAgIGlmICh2ZXJib3NlKQor
ICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRh
TG9nKCJSZWdlbmVyYXRpb24gcmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOwogICAgIAogICAgIFJF
TEVBU0VfQVNTRVJUKCFyZXN1bHQuYnVmZmVyZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5jcHAKaW5kZXggY2Q2OTRiYmViYWM4MDdkNTE4ZjY2YzQ3
Y2FhYWI2ZTc4ZTkxZDIzYy4uYjgzZmVlMGQzYzA5ZDE0OTdhYTdlYTFkZTNlMDQ5MDYyZjIyNmMx
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmNwcApA
QCAtNjIsNyArNjIsNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQWJz
dHJhY3RIZWFwS2luZCBraW5kKQogewogICAgIHN3aXRjaCAoa2luZCkgewogI2RlZmluZSBBQlNU
UkFDVF9IRUFQX0RVTVAobmFtZSkgICAgICAgICAgICBcCi0gICAgY2FzZSBuYW1lOiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjYXNlIEFic3RyYWN0SGVhcEtpbmQ6Om5hbWU6
ICAgICAgICAgICAgXAogICAgICAgICBvdXQucHJpbnQoI25hbWUpOyAgICAgICAgICAgICAgICAg
ICBcCiAgICAgICAgIHJldHVybjsKICAgICBGT1JfRUFDSF9BQlNUUkFDVF9IRUFQX0tJTkQoQUJT
VFJBQ1RfSEVBUF9EVU1QKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKaW5kZXggNTE2NTBmNTg1ZDRlOGVh
NmEzMzllN2Y2MzAyOGVhMDhlZDU4ZWE0Zi4uYTQ1N2Y4ZjU3ZDQ5Y2MzZTI3MzM5NzZiODBiMmZk
OTg2M2E0NjBhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1
bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC01MCw3ICs1MCw5IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAotYm9vbCB2ZXJib3Nl
ID0gZmFsc2U7CituYW1lc3BhY2UgREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZUludGVybmFs
IHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogY2xhc3MgQXJndW1l
bnRzRWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJsaWM6CkBAIC02NSw3ICs2
Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdmVyc2lvbiBvdmVyIExvYWRTdG9yZS4KICAgICAg
ICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwog
ICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR0FyZ3VtZW50
c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxv
ZygiR3JhcGggYmVmb3JlIGFyZ3VtZW50cyBlbGltaW5hdGlvbjpcbiIpOwogICAgICAgICAgICAg
bV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KQEAgLTE1Nyw3ICsxNTksNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgIGRhdGFMb2coIkNhbmRpZGF0ZXM6ICIsIGxpc3REdW1wKG1fY2FuZGlk
YXRlcyksICJcbiIpOwogICAgIH0KIApAQCAtMjEwLDcgKzIxMiw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCB0cmFuc2l0aXZlbHlSZW1vdmVDYW5kaWRhdGUoTm9kZSogbm9kZSwgTm9kZSogc291cmNl
ID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGJvb2wgcmVtb3ZlZCA9IG1fY2FuZGlkYXRlcy5y
ZW1vdmUobm9kZSk7Ci0gICAgICAgIGlmIChyZW1vdmVkICYmIHZlcmJvc2UgJiYgc291cmNlKQor
ICAgICAgICBpZiAocmVtb3ZlZCAmJiBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlSW50ZXJu
YWw6OnZlcmJvc2UgJiYgc291cmNlKQogICAgICAgICAgICAgZGF0YUxvZygiZWxpbWluYXRpbmcg
Y2FuZGlkYXRlOiAiLCBub2RlLCAiIGJlY2F1c2UgaXQgZXNjYXBlcyBmcm9tOiAiLCBzb3VyY2Us
ICJcbiIpOwogCiAgICAgICAgIGlmIChyZW1vdmVkKQpAQCAtNDE4LDcgKzQyMCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgICAgIGRhdGFMb2coIkFmdGVyIGVzY2FwZSBhbmFseXNpczogIiwgbGlzdER1bXAo
bV9jYW5kaWRhdGVzKSwgIlxuIik7CiAgICAgfQogCkBAIC01MTksNyArNTIxLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHRoaXMgYXJndW1lbnRzIGFsbG9jYXRpb24s
IGFuZCB3ZSdkIGhhdmUgdG8gZXhhbWluZSBldmVyeSBub2RlIGluIHRoZSBibG9jaywKICAgICAg
ICAgICAgICAgICAgICAgLy8gdGhlbiB3ZSBjYW4ganVzdCBlbGltaW5hdGUgdGhlIGNhbmRpZGF0
ZS4KICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGVJbmRleCA9PSBibG9jay0+c2l6ZSgpICYm
IGNhbmRpZGF0ZS0+b3duZXIgIT0gYmxvY2spIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1p
bmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCJlbGltaW5hdGluZyBjYW5kaWRhdGU6ICIsIGNhbmRpZGF0ZSwgIiBiZWNhdXNl
IGl0IGlzIGNsb2JiZXJlZCBieTogIiwgYmxvY2stPmF0KG5vZGVJbmRleCksICJcbiIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGl2ZWx5UmVtb3ZlQ2FuZGlkYXRlKGNhbmRpZGF0
ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01NDYsNyArNTQ4LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb09wQ2xvYmJlcml6ZSgpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZv
dW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
ZWxpbWluYXRpbmcgY2FuZGlkYXRlOiAiLCBjYW5kaWRhdGUsICIgYmVjYXVzZSBpdCBpcyBjbG9i
YmVyZWQgYnkgIiwgYmxvY2stPmF0KG5vZGVJbmRleCksICJcbiIpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRyYW5zaXRpdmVseVJlbW92ZUNhbmRpZGF0ZShjYW5kaWRhdGUpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTU2OCw3ICs1NzAsNyBAQCBwcml2
YXRlOgogICAgICAgICAvLyBzaW5jZSB0aG9zZSBhdmFpbGFiaWxpdGllcyBzcGVhayBvZiB0aGUg
c3RhY2sgYmVmb3JlIHRoZSBvcHRpbWl6aW5nIGNvbXBpbGVyIHN0YWNrIGZyYW1lIGlzCiAgICAg
ICAgIC8vIHRvcm4gZG93bi4KIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERG
R0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
IGRhdGFMb2coIkFmdGVyIGludGVyZmVyZW5jZSBhbmFseXNpczogIiwgbGlzdER1bXAobV9jYW5k
aWRhdGVzKSwgIlxuIik7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAxYjVkN2FlZWI4MjcxYTFhN2Y3NDIyMjIy
NmJkYTdkNWE1NzIwZTA4Li5lMTQ0NzA3YWU5YjY2YWJiZWM5ZjE2Y2UwZWEyYTdmMDE0ZWRlNzA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cApAQCAtNzAsMjIgKzcwLDE4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAog
bmFtZXNwYWNlIHsKIAotTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBORVZFUl9JTkxJTkUgdm9pZCBj
cmFzaCgpCi17Ci0gICAgQ1JBU0goKTsKLX0KLQotI3VuZGVmIFJFTEVBU0VfQVNTRVJUCi0jZGVm
aW5lIFJFTEVBU0VfQVNTRVJUKGFzc2VydGlvbikgZG8geyBcCisjZGVmaW5lIFBBUlNFUl9BU1NF
UlQoYXNzZXJ0aW9uLCAuLi4pIGRvIHsgICAgICAgICAgXAogICAgIGlmIChVTkxJS0VMWSghKGFz
c2VydGlvbikpKSB7IFwKICAgICAgICAgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShfX0ZJTEVf
XywgX19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJT04sICNhc3NlcnRpb24pOyBcCi0gICAgICAg
IGNyYXNoKCk7IFwKKyAgICAgICAgQ1JBU0hfV0lUSF9JTkZPKF9fVkFfQVJHU19fKTsgXAogICAg
IH0gXAogfSB3aGlsZSAoMCkKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKK25hbWVzcGFj
ZSBERkdCeXRlQ29kZVBhcnNlckludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2Ug
PSBmYWxzZTsKK30KIAogY2xhc3MgQ29uc3RhbnRCdWZmZXJLZXkgewogcHVibGljOgpAQCAtMTIw
Nyw3ICsxMjAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAg
ICAgICAgICAgICwgbV9zZXRNb2RlKHNldE1vZGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG9wZXJhbmQuaXNWYWxpZCgpKTsKKyAgICAgICAgICAgIFBBUlNFUl9BU1NF
UlQob3BlcmFuZC5pc1ZhbGlkKCkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBOb2Rl
KiBleGVjdXRlKEJ5dGVDb2RlUGFyc2VyKiBwYXJzZXIpCkBAIC0xNDMwLDE4ICsxNDI2LDE4IEBA
IHVuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVl
LCBpbnQsIElubGluZUNhbGxGcmFtZTo6CiB7CiAgICAgQ2FsbE1vZGUgY2FsbE1vZGUgPSBJbmxp
bmVDYWxsRnJhbWU6OmNhbGxNb2RlRm9yKGtpbmQpOwogICAgIENvZGVTcGVjaWFsaXphdGlvbktp
bmQgc3BlY2lhbGl6YXRpb25LaW5kID0gc3BlY2lhbGl6YXRpb25LaW5kRm9yKGNhbGxNb2RlKTsK
LSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgZGF0YUxvZygiQ29uc2lkZXJpbmcgaW5saW5pbmcgIiwgY2FsbGVlLCAi
IGludG8gIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgCiAgICAgaWYgKG1faGFz
RGVidWdnZXJFbmFibGVkKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZH
Qnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICBGYWlsaW5nIGJlY2F1c2UgdGhlIGRlYnVnZ2VyIGlzIGluIHVzZS5cbiIpOwogICAgICAgICBy
ZXR1cm4gVUlOVF9NQVg7CiAgICAgfQogCiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRh
YmxlID0gY2FsbGVlLmZ1bmN0aW9uRXhlY3V0YWJsZSgpOwogICAgIGlmICghZXhlY3V0YWJsZSkg
ewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNl
IHRoZXJlIGlzIG5vIGZ1bmN0aW9uIGV4ZWN1dGFibGUuXG4iKTsKICAgICAgICAgcmV0dXJuIFVJ
TlRfTUFYOwogICAgIH0KQEAgLTE0NTUsMTQgKzE0NTEsMTQgQEAgdW5zaWduZWQgQnl0ZUNvZGVQ
YXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCwgSW5saW5lQ2FsbEZy
YW1lOjoKICAgICAvLyBpdCdzIGEgcmFyZSBjYXNlIGJlY2F1c2Ugd2UgZXhwZWN0IHRoYXQgYW55
IGhvdCBjYWxsZWVzIHdvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNvbXBpbGVkLgogICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioc3BlY2lh
bGl6YXRpb25LaW5kKTsKICAgICBpZiAoIWNvZGVCbG9jaykgewotICAgICAgICBpZiAodmVyYm9z
ZSkKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIG5vIGNvZGUgYmxvY2sgYXZhaWxh
YmxlLlxuIik7CiAgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAKICAgICBDYXBhYmls
aXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsID0gaW5saW5lRnVuY3Rpb25Gb3JDYXBhYmlsaXR5TGV2
ZWwoCiAgICAgICAgIGNvZGVCbG9jaywgc3BlY2lhbGl6YXRpb25LaW5kLCBjYWxsZWUuaXNDbG9z
dXJlQ2FsbCgpKTsKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChERkdCeXRlQ29kZVBhcnNl
ckludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2coIiAgICBDYWxsIG1vZGU6ICIs
IGNhbGxNb2RlLCAiXG4iKTsKICAgICAgICAgZGF0YUxvZygiICAgIElzIGNsb3N1cmUgY2FsbDog
IiwgY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSwgIlxuIik7CiAgICAgICAgIGRhdGFMb2coIiAgICBD
YXBhYmlsaXR5IGxldmVsOiAiLCBjYXBhYmlsaXR5TGV2ZWwsICJcbiIpOwpAQCAtMTQ3Miw3ICsx
NDY4LDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFu
dCBjYWxsZWUsIGludCwgSW5saW5lQ2FsbEZyYW1lOjoKICAgICAgICAgZGF0YUxvZygiICAgIElz
IGlubGluaW5nIGNhbmRpZGF0ZTogIiwgY29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUo
KS0+aXNJbmxpbmluZ0NhbmRpZGF0ZSgpLCAiXG4iKTsKICAgICB9CiAgICAgaWYgKCFjYW5Jbmxp
bmUoY2FwYWJpbGl0eUxldmVsKSkgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYg
KERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyBub3QgaW5saW5lYWJsZS5cbiIp
OwogICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQpAQCAtMTQ4Miw3ICsxNDc4LDcgQEAg
dW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUs
IGludCwgSW5saW5lQ2FsbEZyYW1lOjoKICAgICAvLyBwdXJwb3NlIG9mIHVuc2V0dGluZyBTQUJJ
LgogICAgIGlmICghaXNTbWFsbEVub3VnaFRvSW5saW5lQ29kZUludG8obV9jb2RlQmxvY2spKSB7
CiAgICAgICAgIGNvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKLSAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGUg
Y2FsbGVyIGlzIHRvbyBsYXJnZS5cbiIpOwogICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAg
fQpAQCAtMTUwNiw3ICsxNTAyLDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5n
Q29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCwgSW5saW5lQ2FsbEZyYW1lOjoKICAgICBmb3Ig
KElubGluZVN0YWNrRW50cnkqIGVudHJ5ID0gbV9pbmxpbmVTdGFja1RvcDsgZW50cnk7IGVudHJ5
ID0gZW50cnktPm1fY2FsbGVyKSB7CiAgICAgICAgICsrZGVwdGg7CiAgICAgICAgIGlmIChkZXB0
aCA+PSBPcHRpb25zOjptYXhpbXVtSW5saW5pbmdEZXB0aCgpKSB7Ci0gICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgZGVwdGgg
ZXhjZWVkZWQuXG4iKTsKICAgICAgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICAgICAgfQpA
QCAtMTUxNCwxNCArMTUxMCwxNCBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdD
b3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50LCBJbmxpbmVDYWxsRnJhbWU6OgogICAgICAgICBp
ZiAoZW50cnktPmV4ZWN1dGFibGUoKSA9PSBleGVjdXRhYmxlKSB7CiAgICAgICAgICAgICArK3Jl
Y3Vyc2lvbjsKICAgICAgICAgICAgIGlmIChyZWN1cnNpb24gPj0gT3B0aW9uczo6bWF4aW11bUlu
bGluaW5nUmVjdXJzaW9uKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSByZWN1cnNpb24gZGV0
ZWN0ZWQuXG4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERG
R0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgICBJ
bmxpbmluZyBzaG91bGQgYmUgcG9zc2libGUuXG4iKTsKICAgICAKICAgICAvLyBJdCBtaWdodCBi
ZSBwb3NzaWJsZSB0byBpbmxpbmUuCkBAIC0xNjE4LDExICsxNjE0LDExIEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVy
YW5kLCBDYWxsVmFyCiAgICAgaW5saW5lVmFyaWFibGVEYXRhLmFyZ3VtZW50UG9zaXRpb25TdGFy
dCA9IGFyZ3VtZW50UG9zaXRpb25TdGFydDsKICAgICBpbmxpbmVWYXJpYWJsZURhdGEuY2FsbGVl
VmFyaWFibGUgPSAwOwogICAgIAotICAgIFJFTEVBU0VfQVNTRVJUKAorICAgIFBBUlNFUl9BU1NF
UlQoCiAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1
cmVDYWxsCiAgICAgICAgID09IGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpOwogICAgIGlmIChjYWxs
ZWUuaXNDbG9zdXJlQ2FsbCgpKSB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxlZVZhcmlh
YmxlKTsKKyAgICAgICAgUEFSU0VSX0FTU0VSVChjYWxsZWVWYXJpYWJsZSk7CiAgICAgICAgIGlu
bGluZVZhcmlhYmxlRGF0YS5jYWxsZWVWYXJpYWJsZSA9IGNhbGxlZVZhcmlhYmxlOwogICAgIH0K
ICAgICAKQEAgLTE2NjksNyArMTY2NSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNh
bGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyCiAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBSZXB1cnBvc2luZyBsYXN0IGJsb2NrIGZyb20g
IiwgbGFzdEJsb2NrLT5ieXRlY29kZUJlZ2luLCAiIHRvICIsIG1fY3VycmVudEluZGV4LCAiXG4i
KTsKICAgICAgICAgICAgIGxhc3RCbG9jay0+Ynl0ZWNvZGVCZWdpbiA9IG1fY3VycmVudEluZGV4
OwogICAgICAgICAgICAgaWYgKGNhbGxlckxpbmthYmlsaXR5ID09IENhbGxlckRvZXNOb3JtYWxM
aW5raW5nKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAg
aWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkFkZGluZyB1bmxpbmtlZCBibG9jayAiLCBSYXdQb2ludGVyKG1fZ3JhcGgu
bGFzdEJsb2NrKCkpLCAiIChvbmUgcmV0dXJuKVxuIik7CiAgICAgICAgICAgICAgICAgbV9pbmxp
bmVTdGFja1RvcC0+bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxv
Y2sobV9ncmFwaC5sYXN0QmxvY2soKSkpOwogICAgICAgICAgICAgfQpAQCAtMTY5OSwxNCArMTY5
NSwxNCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXRO
b2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcgogICAgICAgICBBU1NFUlQoIW5vZGUtPnRh
cmdldEJsb2NrKCkpOwogICAgICAgICBub2RlLT50YXJnZXRCbG9jaygpID0gYmxvY2sucHRyKCk7
CiAgICAgICAgIGlubGluZVN0YWNrRW50cnkubV91bmxpbmtlZEJsb2Nrc1tpXS5tX25lZWRzRWFy
bHlSZXR1cm5MaW5raW5nID0gZmFsc2U7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBp
ZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFM
b2coIk1hcmtpbmcgIiwgUmF3UG9pbnRlcihibG9ja1RvTGluayksICIgYXMgbGlua2VkIChqdW1w
cyB0byByZXR1cm4pXG4iKTsKICAgICAgICAgYmxvY2tUb0xpbmstPmRpZExpbmsoKTsKICAgICB9
CiAgICAgCiAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jay5wdHIoKTsKICAgICBBU1NFUlQobV9p
bmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5pc0VtcHR5KCkg
fHwgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5sYXN0
KCktPmJ5dGVjb2RlQmVnaW4gPCBuZXh0T2Zmc2V0KTsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBp
ZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygi
QWRkaW5nIHVubGlua2VkIGJsb2NrICIsIFJhd1BvaW50ZXIoYmxvY2sucHRyKCkpLCAiIChtYW55
IHJldHVybnMpXG4iKTsKICAgICBpZiAoY2FsbGVyTGlua2FiaWxpdHkgPT0gQ2FsbGVyRG9lc05v
cm1hbExpbmtpbmcpIHsKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fdW5s
aW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2sucHRyKCkpKTsKQEAgLTE3NDIs
NyArMTczOCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lubGluZUNhbGwoTm9k
ZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kCiAgICAgaWYgKCFpbmxpbmluZ0Jh
bGFuY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAodmVyYm9zZSkKKyAg
ICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxv
ZygiICAgIENvbnNpZGVyaW5nIGNhbGxlZSAiLCBjYWxsZWUsICJcbiIpOwogICAgIAogICAgIC8v
IEludHJpbnNpY3MgYW5kIGludGVybmFsIGZ1bmN0aW9ucyBjYW4gb25seSBiZSBpbmxpbmVkIGlm
IHdlJ3JlIG5vdCBkb2luZyB2YXJhcmdzLiBUaGlzIGlzIGJlY2F1c2UKQEAgLTE3NjIsNDAgKzE3
NTgsNDAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5lQ2FsbChOb2RlKiBj
YWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQKICAgICAKICAgICAgICAgaWYgKEludGVy
bmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLmludGVybmFsRnVuY3Rpb24oKSkgewogICAg
ICAgICAgICAgaWYgKGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihjYWxsVGFyZ2V0Tm9k
ZSwgcmVzdWx0T3BlcmFuZCwgZnVuY3Rpb24sIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kLCBwcmVkaWN0aW9uLCBpbnNlcnRDaGVj
a3NXaXRoQWNjb3VudGluZykpIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChkaWRJ
bnNlcnRDaGVja3MpOworICAgICAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoZGlkSW5zZXJ0Q2hl
Y2tzKTsKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXROb2Rl
KTsKICAgICAgICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgICAgICAgICAgICAgIGlubGluaW5nQmFs
YW5jZS0tOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CisgICAgICAgICAgICBQ
QVJTRVJfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAgICAgCiAgICAgICAgIEludHJpbnNpYyBpbnRyaW5zaWMgPSBjYWxsZWUu
aW50cmluc2ljRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAgICAgIGlmIChpbnRyaW5zaWMg
IT0gTm9JbnRyaW5zaWMpIHsKICAgICAgICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWNDYWxsKGNh
bGxUYXJnZXROb2RlLCByZXN1bHRPcGVyYW5kLCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zmc2V0LCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFj
Y291bnRpbmcpKSB7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGlkSW5zZXJ0Q2hl
Y2tzKTsKKyAgICAgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKGRpZEluc2VydENoZWNrcyk7CiAg
ICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7CiAgICAg
ICAgICAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKTsKICAgICAgICAgICAgICAgICBpbmxpbmluZ0JhbGFuY2UtLTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CisgICAgICAgICAgICBQQVJTRVJf
QVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOwogICAgICAgICAgICAgLy8gV2UgbWlnaHQgc3RpbGwg
dHJ5IHRvIGlubGluZSB0aGUgSW50cmluc2ljIGJlY2F1c2UgaXQgbWlnaHQgYmUgYSBidWlsdGlu
IEpTIGZ1bmN0aW9uLgogICAgICAgICB9CiAKICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZURPTUpJ
VCgpKSB7CiAgICAgICAgICAgICBpZiAoY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVy
ZSA9IGNhbGxlZS5zaWduYXR1cmVGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKSkgewogICAgICAgICAg
ICAgICAgIGlmIChoYW5kbGVET01KSVRDYWxsKGNhbGxUYXJnZXROb2RlLCByZXN1bHRPcGVyYW5k
LCBzaWduYXR1cmUsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
cHJlZGljdGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGRpZEluc2VydENoZWNrcyk7CisgICAgICAgICAgICAgICAg
ICAgIFBBUlNFUl9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKICAgICAgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7CiAgICAgICAgICAgICAgICAgICAg
IGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyk7CiAgICAgICAgICAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZS0tOwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CisgICAgICAgICAgICAgICAg
UEFSU0VSX0FTU0VSVCghZGlkSW5zZXJ0Q2hlY2tzKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0KQEAgLTE4MTcsMjEgKzE4MTMsMjEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW5saW5pbmcoCiAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50c0FyZ3VtZW50LCB1bnNp
Z25lZCBhcmd1bWVudHNPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywKICAg
ICB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6
S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogewotICAgIGlmICh2ZXJib3Nl
KSB7CisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAg
ICAgZGF0YUxvZygiSGFuZGxpbmcgaW5saW5pbmcuLi5cbiIpOwogICAgICAgICBkYXRhTG9nKCJT
dGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgfQogICAgIENvZGVTcGVj
aWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVj
aWFsaXphdGlvbktpbmRGb3Ioa2luZCk7CiAgICAgCiAgICAgaWYgKCFjYWxsTGlua1N0YXR1cy5z
aXplKCkpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdCeXRlQ29kZVBh
cnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQmFpbGluZyBpbmxp
bmluZy5cbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIGlmIChJ
bmxpbmVDYWxsRnJhbWU6OmlzVmFyYXJncyhraW5kKQogICAgICAgICAmJiBjYWxsTGlua1N0YXR1
cy5tYXhOdW1Bcmd1bWVudHMoKSA+IE9wdGlvbnM6Om1heGltdW1WYXJhcmdzRm9ySW5saW5pbmco
KSkgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2Vy
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJCYWlsaW5nIGlubGluaW5n
IGJlY2F1c2Ugb2YgdmFyYXJncy5cbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpA
QCAtMTk1MCw3ICsxOTQ2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmco
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
KTsKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2Vy
SW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkRvbmUgaW5saW5pbmcg
KHNpbXBsZSkuXG4iKTsKICAgICAgICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29k
ZU9yaWdpbigpLCAiXG4iKTsKICAgICAgICAgICAgIGRhdGFMb2coIlJlc3VsdDogIiwgcmVzdWx0
LCAiXG4iKTsKQEAgLTE5NjYsNyArMTk2Miw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUlubGluaW5nKAogICAgIC8vIGFsc28uCiAgICAgaWYgKCFpc0ZUTChtX2dyYXBoLm1fcGxhbi5t
b2RlKSB8fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWNDYWxsSW5saW5pbmcoKQogICAgICAgICB8
fCBJbmxpbmVDYWxsRnJhbWU6OmlzVmFyYXJncyhraW5kKSkgewotICAgICAgICBpZiAodmVyYm9z
ZSkgeworICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkgewog
ICAgICAgICAgICAgZGF0YUxvZygiQmFpbGluZyBpbmxpbmluZyAoaGFyZCkuXG4iKTsKICAgICAg
ICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAg
ICAgICAgfQpAQCAtMTk3OCw3ICsxOTc0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW5saW5pbmcoCiAgICAgLy8gaXQgaGFzIG5vIGlkZWEuCiAgICAgaWYgKCFPcHRpb25zOjp1c2VQ
b2x5bW9ycGhpY0NhbGxJbmxpbmluZ0Zvck5vblN0dWJTdGF0dXMoKQogICAgICAgICAmJiAhY2Fs
bExpbmtTdGF0dXMuaXNCYXNlZE9uU3R1YigpKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKSB7Cisg
ICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAg
ICAgICBkYXRhTG9nKCJCYWlsaW5nIGlubGluaW5nIChub24tc3R1YiBwb2x5bW9ycGhpc20pLlxu
Iik7CiAgICAgICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwg
IlxuIik7CiAgICAgICAgIH0KQEAgLTIwMDYsMTQgKzIwMDIsMTQgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgICAgIC8vIHdoZXJlIGl0IHdvdWxkIGJlIGJlbmVm
aWNpYWwuIEl0IG1pZ2h0IGJlIGJlc3QgdG8gaGFuZGxlIHRoZXNlIGNhc2VzIGFzIGlmIGFsbCBj
YWxscyB3ZXJlCiAgICAgICAgIC8vIGNsb3N1cmUgY2FsbHMuCiAgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYwMjAKLSAgICAgICAgaWYgKHZlcmJv
c2UpIHsKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpIHsK
ICAgICAgICAgICAgIGRhdGFMb2coIkJhaWxpbmcgaW5saW5pbmcgKG1peCkuXG4iKTsKICAgICAg
ICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAotICAgIGlmICh2ZXJi
b3NlKSB7CisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpIHsKICAg
ICAgICAgZGF0YUxvZygiRG9pbmcgaGFyZCBpbmxpbmluZy4uLlxuIik7CiAgICAgICAgIGRhdGFM
b2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICB9CkBAIC0yMDI0
LDExICsyMDIwLDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAg
IC8vIHN0b3JlIHRoZSBjYWxsZWUgc28gdGhhdCBpdCB3aWxsIGJlIGFjY2Vzc2libGUgdG8gYWxs
IG9mIHRoZSBibG9ja3Mgd2UncmUgYWJvdXQgdG8gY3JlYXRlLiBXZQogICAgIC8vIGdldCBhd2F5
IHdpdGggZG9pbmcgYW4gaW1tZWRpYXRlLXNldCBoZXJlIGJlY2F1c2Ugd2Ugd291bGRuJ3QgaGF2
ZSBwZXJmb3JtZWQgYW55IHNpZGUgZWZmZWN0cwogICAgIC8vIHlldC4KLSAgICBpZiAodmVyYm9z
ZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ZGF0YUxvZygiUmVnaXN0ZXIgb2Zmc2V0OiAiLCByZWdpc3Rlck9mZnNldCk7CiAgICAgVmlydHVh
bFJlZ2lzdGVyIGNhbGxlZVJlZyhyZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxl
ZSk7CiAgICAgY2FsbGVlUmVnID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKGNhbGxl
ZVJlZyk7Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkNhbGxlZSBpcyBnb2luZyB0byBiZSAiLCBj
YWxsZWVSZWcsICJcbiIpOwogICAgIHNldERpcmVjdChjYWxsZWVSZWcsIGNhbGxUYXJnZXROb2Rl
LCBJbW1lZGlhdGVTZXRXaXRoRmx1c2gpOwogCkBAIC0yMDQyLDcgKzIwMzgsNyBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICBhZGRUb0dyYXBoKFN3aXRjaCwgT3BJ
bmZvKCZkYXRhKSwgdGhpbmdUb1N3aXRjaE9uKTsKICAgICAKICAgICBCYXNpY0Jsb2NrKiBvcmln
aW5CbG9jayA9IG1fY3VycmVudEJsb2NrOwotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChERkdC
eXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJNYXJraW5n
ICIsIFJhd1BvaW50ZXIob3JpZ2luQmxvY2spLCAiIGFzIGxpbmtlZCAob3JpZ2luIG9mIHBvbHkg
aW5saW5lKVxuIik7CiAgICAgb3JpZ2luQmxvY2stPmRpZExpbmsoKTsKICAgICBjYW5jZWxMaW5r
aW5nRm9yQmxvY2sobV9pbmxpbmVTdGFja1RvcCwgb3JpZ2luQmxvY2spOwpAQCAtMjA1NCw3ICsy
MDUwLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgLy8gV2Ug
bWF5IGZvcmNlIHRoaXMgdHJ1ZSBpZiB3ZSBnaXZlIHVwIG9uIGlubGluaW5nIGFueSBvZiB0aGUg
ZWRnZXMuCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCA9IGNhbGxMaW5rU3RhdHVzLmNvdWxk
VGFrZVNsb3dQYXRoKCk7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0J5dGVD
b2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkFib3V0IHRvIGxv
b3Agb3ZlciBmdW5jdGlvbnMgYXQgIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIi5cbiIpOwogICAg
IAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsTGlua1N0YXR1cy5zaXplKCk7ICsr
aSkgewpAQCAtMjEwMSwxMSArMjA5NywxMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bmxpbmluZygKICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCk7CiAgICAgICAgICAgICBsYW5k
aW5nQmxvY2tzLmFwcGVuZChtX2N1cnJlbnRCbG9jayk7CiAgICAgICAgIH0KLSAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgZGF0YUxvZygiTWFya2luZyAiLCBSYXdQb2ludGVyKG1fY3VycmVudEJs
b2NrKSwgIiBhcyBsaW5rZWQgKHRhaWwgb2YgcG9seSBpbmxpbmVlKVxuIik7CiAgICAgICAgIG1f
Y3VycmVudEJsb2NrLT5kaWRMaW5rKCk7CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
IGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0
YUxvZygiRmluaXNoZWQgaW5saW5pbmcgIiwgY2FsbExpbmtTdGF0dXNbaV0sICIgYXQgIiwgY3Vy
cmVudENvZGVPcmlnaW4oKSwgIi5cbiIpOwogICAgIH0KICAgICAKQEAgLTIxMTUsNyArMjExMSw3
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgIG1fZXhpdE9LID0g
dHJ1ZTsKICAgICBkYXRhLmZhbGxUaHJvdWdoID0gQnJhbmNoVGFyZ2V0KHNsb3dQYXRoQmxvY2su
cHRyKCkpOwogICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soc2xvd1BhdGhCbG9jay5jb3B5UmVmKCkp
OwotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIoc2xvd1BhdGhC
bG9jay5wdHIoKSksICIgYXMgbGlua2VkIChzbG93IHBhdGggYmxvY2spXG4iKTsKICAgICBzbG93
UGF0aEJsb2NrLT5kaWRMaW5rKCk7CiAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOwpAQCAtMjE0
Niw3ICsyMTQyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAg
UmVmPEJhc2ljQmxvY2s+IGNvbnRpbnVhdGlvbkJsb2NrID0gYWRvcHRSZWYoCiAgICAgICAgICpu
ZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCAxKSk7
CiAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhjb250aW51YXRpb25CbG9jay5jb3B5UmVmKCkpOwot
ICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICBkYXRhTG9nKCJBZGRpbmcgdW5saW5rZWQgYmxvY2sgIiwgUmF3UG9pbnRl
cihjb250aW51YXRpb25CbG9jay5wdHIoKSksICIgKGNvbnRpbnVhdGlvbilcbiIpOwogICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soY29u
dGludWF0aW9uQmxvY2sucHRyKCkpKTsKICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CkBAIC0y
MTU4LDcgKzIxNTQsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAg
ICBtX2N1cnJlbnRJbmRleCA9IG9sZE9mZnNldDsKICAgICBtX2V4aXRPSyA9IHRydWU7CiAgICAg
Ci0gICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6
dmVyYm9zZSkgewogICAgICAgICBkYXRhTG9nKCJEb25lIGlubGluaW5nIChoYXJkKS5cbiIpOwog
ICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAg
ICAgfQpAQCAtMzQ5OSwxNCArMzQ5NSwxNCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpuZWVkc0R5
bmFtaWNMb29rdXAoUmVzb2x2ZVR5cGUgdHlwZSwgT3Bjb2RlSUQgb3Bjb2RlKQogCiBHZXRCeU9m
ZnNldE1ldGhvZCBCeXRlQ29kZVBhcnNlcjo6cGxhbkxvYWQoY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24mIGNvbmRpdGlvbikKIHsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0
ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiUGxhbm5pbmcg
YSBsb2FkOiAiLCBjb25kaXRpb24sICJcbiIpOwogICAgIAogICAgIC8vIFdlIG1pZ2h0IHByb21v
dGUgdGhpcyB0byBFcXVpdmFsZW5jZSwgYW5kIGEgbGF0ZXIgREZHIHBhc3MgbWlnaHQgYWxzbyBk
byBzdWNoIHByb21vdGlvbgogICAgIC8vIGV2ZW4gaWYgd2UgZmFpbCwgYnV0IGZvciBzaW1wbGlj
aXR5IHRoaXMgY2Fubm90IGJlIGFza2VkIHRvIGxvYWQgYW4gZXF1aXZhbGVuY2UgY29uZGl0aW9u
LgogICAgIC8vIE5vbmUgb2YgdGhlIGNsaWVudHMgb2YgdGhpcyBtZXRob2Qgd2lsbCByZXF1ZXN0
IGEgbG9hZCBvZiBhbiBFcXVpdmFsZW5jZSBjb25kaXRpb24gYW55d2F5LAogICAgIC8vIGFuZCBz
dXBwb3J0aW5nIGl0IHdvdWxkIGNvbXBsaWNhdGUgdGhlIGhldXJpc3RpY3MgYmVsb3cuCi0gICAg
UkVMRUFTRV9BU1NFUlQoY29uZGl0aW9uLmtpbmQoKSA9PSBQcm9wZXJ0eUNvbmRpdGlvbjo6UHJl
c2VuY2UpOworICAgIFBBUlNFUl9BU1NFUlQoY29uZGl0aW9uLmtpbmQoKSA9PSBQcm9wZXJ0eUNv
bmRpdGlvbjo6UHJlc2VuY2UpOwogICAgIAogICAgIC8vIEhlcmUncyB0aGUgcmFua2luZyBvZiBo
b3cgdG8gaGFuZGxlIHRoaXMsIGZyb20gbW9zdCBwcmVmZXJyZWQgdG8gbGVhc3QgcHJlZmVycmVk
OgogICAgIC8vCkBAIC0zNjA5LDE0ICszNjA1LDE0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmNo
ZWNrKGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQpCiAKIEdl
dEJ5T2Zmc2V0TWV0aG9kIEJ5dGVDb2RlUGFyc2VyOjpwbGFuTG9hZChjb25zdCBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0KQogewotICAgIGlmICh2ZXJib3NlKQorICAg
IGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9n
KCJjb25kaXRpb25TZXQgPSAiLCBjb25kaXRpb25TZXQsICJcbiIpOwogICAgIAogICAgIEdldEJ5
T2Zmc2V0TWV0aG9kIHJlc3VsdDsKICAgICBmb3IgKGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uJiBjb25kaXRpb24gOiBjb25kaXRpb25TZXQpIHsKICAgICAgICAgc3dpdGNoIChjb25kaXRp
b24ua2luZCgpKSB7CiAgICAgICAgIGNhc2UgUHJvcGVydHlDb25kaXRpb246OlByZXNlbmNlOgot
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlc3VsdCk7IC8vIFNob3VsZCBvbmx5IHNlZSBl
eGFjdGx5IG9uZSBvZiB0aGVzZS4KKyAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoIXJlc3VsdCk7
IC8vIFNob3VsZCBvbmx5IHNlZSBleGFjdGx5IG9uZSBvZiB0aGVzZS4KICAgICAgICAgICAgIHJl
c3VsdCA9IHBsYW5Mb2FkKGNvbmRpdGlvbik7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkKICAg
ICAgICAgICAgICAgICByZXR1cm4gR2V0QnlPZmZzZXRNZXRob2QoKTsKQEAgLTM3ODYsNyArMzc4
Miw3IEBAIE5vZGUqIEJ5dGVDb2RlUGFyc2VyOjpsb2FkKAogCiBOb2RlKiBCeXRlQ29kZVBhcnNl
cjo6c3RvcmUoTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllciwgY29uc3QgUHV0QnlJZFZh
cmlhbnQmIHZhcmlhbnQsIE5vZGUqIHZhbHVlKQogewotICAgIFJFTEVBU0VfQVNTRVJUKHZhcmlh
bnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlKTsKKyAgICBQQVJTRVJfQVNTRVJU
KHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlKTsKIAogICAgIGNoZWNr
UHJlc2VuY2VMaWtlKGJhc2UsIG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyXSwgdmFy
aWFudC5vZmZzZXQoKSwgdmFyaWFudC5zdHJ1Y3R1cmUoKSk7CiAgICAgcmV0dXJuIGhhbmRsZVB1
dEJ5T2Zmc2V0KGJhc2UsIGlkZW50aWZpZXIsIHZhcmlhbnQub2Zmc2V0KCksIHZhcmlhbnQucmVx
dWlyZWRUeXBlKCksIHZhbHVlKTsKQEAgLTQxODUsNyArNDE4MSw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgLy8gb3Bwb3NlZCB0byB1c2lu
ZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlmIChtX2N1cnJlbnRCbG9jayA9PSBt
X2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUoKSkgewogICAgICAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fZ3JhcGgubV9yb290VG9Bcmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBB
cmd1bWVudHNWZWN0b3IoKSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05l
d0VudHJ5KTsKKyAgICAgICAgUEFSU0VSX0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAg
ICAgICAgIEFyZ3VtZW50c1ZlY3RvciYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWU7CiAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHMucmVzaXplKG1fbnVt
QXJndW1lbnRzKTsKIApAQCAtNTI4Miw3ICs1Mjc4LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9jYXRjaCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFt
X2N1cnJlbnRCbG9jay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoIW1fY3Vy
cmVudEJsb2NrLT5zaXplKCkpOwogCiAgICAgICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5k
QnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVy
Kj4oY3VycmVudEluc3RydWN0aW9uWzNdLnUucG9pbnRlcik7CiAKQEAgLTUzMDcsOCArNTMwMyw4
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAg
ICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvY2FsUHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOwogICAgICAgICAgICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9w
ZXJhbmQuaXNBcmd1bWVudCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJndW1lbnQoKSkgPCBhcmd1bWVu
dFByZWRpY3Rpb25zLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBQQVJTRVJfQVNT
RVJUKG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFBBUlNF
Ul9BU1NFUlQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG9wZXJhbmQudG9Bcmd1bWVudCgpKSA8IGFy
Z3VtZW50UHJlZGljdGlvbnMuc2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2
YWxpZGF0aW9uRW5hYmxlZCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZW5Bcmd1
bWVudHMuYWRkKG9wZXJhbmQudG9Bcmd1bWVudCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGFyZ3VtZW50UHJlZGljdGlvbnNbb3BlcmFuZC50b0FyZ3VtZW50KCldID0gcHJlZGljdGlvbjsK
QEAgLTUzMTcsNyArNTMxMyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQgbGltaXQpCiAKICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkg
ewogICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1l
bnQgPCBtX251bUFyZ3VtZW50czsgKythcmd1bWVudCkKLSAgICAgICAgICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHNlZW5Bcmd1bWVudHMuY29udGFpbnMoYXJndW1lbnQpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoc2VlbkFyZ3VtZW50cy5jb250YWlucyhh
cmd1bWVudCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApAQCAtNTM1OCw3
ICs1MzU0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1p
dCkKIAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9n
cmFwaC5tX3Jvb3RUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIEFyZ3VtZW50c1ZlY3Rv
cigpKTsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRy
eSk7CisgICAgICAgICAgICAgICAgUEFSU0VSX0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7
CiAgICAgICAgICAgICAgICAgQXJndW1lbnRzVmVjdG9yJiBlbnRyeXBvaW50QXJndW1lbnRzID0g
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJn
dW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CiAKQEAgLTU1MDMsOCArNTQ5OSw4IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAg
ICBjYXNlIEdsb2JhbExleGljYWxWYXI6CiAgICAgICAgICAgICBjYXNlIEdsb2JhbExleGljYWxW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAgICAgICAgICAgICAgICAgSlNTY29wZSogY29u
c3RhbnRTY29wZSA9IEpTU2NvcGU6OmNvbnN0YW50U2NvcGVGb3JDb2RlQmxvY2socmVzb2x2ZVR5
cGUsIG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrKTsKLSAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChjb25zdGFudFNjb3BlKTsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChzdGF0aWNfY2FzdDxKU1Njb3BlKj4oY3VycmVudEluc3RydWN0aW9uWzZdLnUucG9pbnRlcikg
PT0gY29uc3RhbnRTY29wZSk7CisgICAgICAgICAgICAgICAgUEFSU0VSX0FTU0VSVChjb25zdGFu
dFNjb3BlKTsKKyAgICAgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKHN0YXRpY19jYXN0PEpTU2Nv
cGUqPihjdXJyZW50SW5zdHJ1Y3Rpb25bNl0udS5wb2ludGVyKSA9PSBjb25zdGFudFNjb3BlKTsK
ICAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRzdCksIHdlYWtKU0NvbnN0YW50
KGNvbnN0YW50U2NvcGUpKTsKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdl
dChWaXJ0dWFsUmVnaXN0ZXIoc2NvcGUpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01
ODQ1LDcgKzU4NDEsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
IGxpbWl0KQogICAgICAgICAgICAgLy8gQmFzZWxpbmUtPkRGRyBPU1IganVtcHMgYmV0d2VlbiBs
b29wIGhpbnRzLiBUaGUgREZHIGFzc3VtZXMgdGhhdCBCYXNlbGluZS0+REZHCiAgICAgICAgICAg
ICAvLyBPU1IgY2FuIG9ubHkgaGFwcGVuIGF0IGJhc2ljIGJsb2NrIGJvdW5kYXJpZXMuIEFzc2Vy
dCB0aGF0IHRoZXNlIHR3byBzdGF0ZW1lbnRzCiAgICAgICAgICAgICAvLyBhcmUgY29tcGF0aWJs
ZS4KLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fY3VycmVudEluZGV4ID09IGJsb2NrQmVn
aW4pOworICAgICAgICAgICAgUEFSU0VSX0FTU0VSVChtX2N1cnJlbnRJbmRleCA9PSBibG9ja0Jl
Z2luKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gV2UgbmV2ZXIgZG8gT1NSIGludG8g
YW4gaW5saW5lZCBjb2RlIGJsb2NrLiBUaGF0IGNvdWxkIG5vdCBoYXBwZW4sIHNpbmNlIE9TUgog
ICAgICAgICAgICAgLy8gbG9va3MgdXAgdGhlIGNvZGUgYmxvY2sgdGhhdCBpcyB0aGUgcmVwbGFj
ZW1lbnQgZm9yIHRoZSBiYXNlbGluZSBKSVQgY29kZQpAQCAtNjE5NSw3ICs2MTkxLDcgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKEJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8QmFz
aWNCbG9jayo+JiBwb3NzaWJsZVQKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIGlm
ICh2ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIoYmxvY2spLCAiIGFzIGxpbmtl
ZCAoYWN0dWFsbHkgZGlkIGxpbmtpbmcpXG4iKTsKICAgICBibG9jay0+ZGlkTGluaygpOwogfQpA
QCAtNjIwMywxMCArNjE5OSwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2soQmFz
aWNCbG9jayogYmxvY2ssIFZlY3RvcjxCYXNpY0Jsb2NrKj4mIHBvc3NpYmxlVAogdm9pZCBCeXRl
Q29kZVBhcnNlcjo6bGlua0Jsb2NrcyhWZWN0b3I8VW5saW5rZWRCbG9jaz4mIHVubGlua2VkQmxv
Y2tzLCBWZWN0b3I8QmFzaWNCbG9jayo+JiBwb3NzaWJsZVRhcmdldHMpCiB7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB1bmxpbmtlZEJsb2Nrcy5zaXplKCk7ICsraSkgewotICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJBdHRlbXB0aW5nIHRvIGxpbmsgIiwgUmF3UG9pbnRl
cih1bmxpbmtlZEJsb2Nrc1tpXS5tX2Jsb2NrKSwgIlxuIik7CiAgICAgICAgIGlmICh1bmxpbmtl
ZEJsb2Nrc1tpXS5tX25lZWRzTm9ybWFsTGlua2luZykgewotICAgICAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRG9lcyBuZWVkIG5vcm1hbCBsaW5raW5nLlxu
Iik7CiAgICAgICAgICAgICBsaW5rQmxvY2sodW5saW5rZWRCbG9ja3NbaV0ubV9ibG9jaywgcG9z
c2libGVUYXJnZXRzKTsKICAgICAgICAgICAgIHVubGlua2VkQmxvY2tzW2ldLm1fbmVlZHNOb3Jt
YWxMaW5raW5nID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NTRVBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2Uu
Y3BwCmluZGV4IDU3ZWM0YTgwZTRiMjlkMmNiZDQ5NmVlYWMzOGQxYjI5MzliODYxNzMuLmViZDFi
OGVmZWY3YzI1MzBlMjhmOTI3MTdjZjcwZGFjMjcwZWQzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCkBAIC00OCw3ICs0OCw5IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7CituYW1lc3BhY2UgREZHQ1NFUGhhc2VJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9v
bCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIEltcHVyZURhdGFTbG90IHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShJbXB1cmVEYXRhU2xvdCk7CkBAIC02MjcsNyArNjI5LDcgQEAgcHVi
bGljOgogICAgIAogICAgIGJvb2wgaXRlcmF0ZSgpCiAgICAgewotICAgICAgICBpZiAodmVyYm9z
ZSkKKyAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICBkYXRhTG9nKCJQZXJmb3JtaW5nIGl0ZXJhdGlvbi5cbiIpOwogICAgICAgICAKICAgICAgICAg
bV9jaGFuZ2VkID0gZmFsc2U7CkBAIC02MzgsMTMgKzY0MCwxMyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBtX2ltcHVyZURhdGEgPSAmbV9pbXB1cmVEYXRhTWFwW21fYmxvY2tdOwogICAgICAgICAg
ICAgbV93cml0ZXNTb0Zhci5jbGVhcigpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdDU0VQaGFzZUludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgICAgIGRhdGFMb2coIlByb2Nlc3NpbmcgYmxvY2sgIiwgKm1fYmxvY2ssICI6
XG4iKTsKIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXggPSAwOyBub2RlSW5k
ZXggPCBtX2Jsb2NrLT5zaXplKCk7ICsrbm9kZUluZGV4KSB7CiAgICAgICAgICAgICAgICAgbV9u
b2RlSW5kZXggPSBub2RlSW5kZXg7CiAgICAgICAgICAgICAgICAgbV9ub2RlID0gbV9ibG9jay0+
YXQobm9kZUluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAg
ICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiICBMb29raW5nIGF0IG5vZGUgIiwgbV9ub2RlLCAiOlxuIik7CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9ncmFwaC5wZXJmb3JtU3Vic3RpdHV0aW9uKG1f
bm9kZSk7CkBAIC03MDcsNyArNzA5LDcgQEAgcHVibGljOgogICAgICAgICAvLyBhIGdsb2JhbCBz
ZWFyY2guCiAgICAgICAgIExhenlOb2RlIG1hdGNoID0gbV9pbXB1cmVEYXRhLT5hdmFpbGFibGVB
dFRhaWwuZ2V0KGxvY2F0aW9uKTsKICAgICAgICAgaWYgKCEhbWF0Y2gpIHsKLSAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgRm91bmQgbG9jYWwgbWF0Y2g6ICIs
IG1hdGNoLCAiXG4iKTsKICAgICAgICAgICAgIHJldHVybiBtYXRjaDsKICAgICAgICAgfQpAQCAt
NzE1LDcgKzcxNyw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gSWYgaXQncyBub3QgYXZhaWxhYmxl
IGF0IHRoaXMgcG9pbnQgaW4gdGhlIGJsb2NrLCBhbmQgYXQgc29tZSBwcmlvciBwb2ludCBpbiB0
aGUgYmxvY2sKICAgICAgICAgLy8gd2UgaGF2ZSBjbG9iYmVyZWQgdGhpcyBoZWFwIGxvY2F0aW9u
LCB0aGVuIHRoZXJlIGlzIG5vIHBvaW50IGluIGRvaW5nIGEgZ2xvYmFsIHNlYXJjaC4KICAgICAg
ICAgaWYgKG1fd3JpdGVzU29GYXIub3ZlcmxhcHMobG9jYXRpb24uaGVhcCgpKSkgewotICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBOb3QgbG9va2luZyBnbG9i
YWxseSBiZWNhdXNlIG9mIGxvY2FsIGNsb2JiZXI6ICIsIG1fd3JpdGVzU29GYXIsICJcbiIpOwog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KQEAgLTc3Miw3ICs3NzQsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnRha2VM
YXN0KCk7CiAgICAgICAgICAgICBzZWVuTGlzdC5hcHBlbmQoYmxvY2spOwogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdDU0VQaGFzZUlu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFNlYXJjaGlu
ZyBpbiBibG9jayAiLCAqYmxvY2ssICJcbiIpOwogICAgICAgICAgICAgSW1wdXJlQmxvY2tEYXRh
JiBkYXRhID0gbV9pbXB1cmVEYXRhTWFwW2Jsb2NrXTsKICAgICAgICAgICAgIApAQCAtNzgwLDEy
ICs3ODIsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgLy8gdGhleSBjYW1lICphZnRlciogb3Vy
IHBvc2l0aW9uIGluIHRoZSBibG9jay4gQ2xlYXJseSwgd2hpbGUgb3VyIGJsb2NrIGRvbWluYXRl
cwogICAgICAgICAgICAgLy8gaXRzZWxmLCB0aGUgdGhpbmdzIGluIHRoZSBibG9jayBhZnRlciB1
cyBkb24ndCBkb21pbmF0ZSB1cy4KICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5h
dG9ycy0+c3RyaWN0bHlEb21pbmF0ZXMoYmxvY2ssIG1fYmxvY2spKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgSXQgc3RyaWN0
bHkgZG9taW5hdGVzLlxuIik7CiAgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBt
X25vZGUsIGRhdGEuZGlkVmlzaXQpOwogICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFw
aCwgbV9ub2RlLCAhbWF0Y2gpOwogICAgICAgICAgICAgICAgIG1hdGNoID0gZGF0YS5hdmFpbGFi
bGVBdFRhaWwuZ2V0KGxvY2F0aW9uKTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBBdmFpbGFiaWxpdHk6ICIsIG1hdGNoLCAiXG4i
KTsKICAgICAgICAgICAgICAgICBpZiAoISFtYXRjaCkgewogICAgICAgICAgICAgICAgICAgICAv
LyBEb24ndCBleGFtaW5lIHRoZSBwcmVkZWNlc3NvcnMgb2YgYSBtYXRjaC4gQXQgdGhpcyBwb2lu
dCB3ZSBqdXN0IHdhbnQgdG8KQEAgLTc5NSwxMCArNzk3LDEwIEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBEZWFsaW5nIHdpdGggd3JpdGUgc2V0ICIs
IGRhdGEud3JpdGVzLCAiXG4iKTsKICAgICAgICAgICAgIGlmIChkYXRhLndyaXRlcy5vdmVybGFw
cyhsb2NhdGlvbi5oZWFwKCkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgQ2xvYmJlcmVkLlxuIik7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICB9CkBAIC04MzAsMTYgKzgzMiwxNiBAQCBw
dWJsaWM6CiAgICAgCiAgICAgdm9pZCBkZWYoSGVhcExvY2F0aW9uIGxvY2F0aW9uLCBMYXp5Tm9k
ZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHQ1NF
UGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBHb3QgaGVh
cCBsb2NhdGlvbiBkZWY6ICIsIGxvY2F0aW9uLCAiIC0+ICIsIHZhbHVlLCAiXG4iKTsKICAgICAg
ICAgCiAgICAgICAgIExhenlOb2RlIG1hdGNoID0gZmluZFJlcGxhY2VtZW50KGxvY2F0aW9uKTsK
ICAgICAgICAgCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHQ1NFUGhhc2VJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIEdvdCBtYXRjaDog
IiwgbWF0Y2gsICJcbiIpOwogICAgICAgICAKICAgICAgICAgaWYgKCFtYXRjaCkgewotICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBBZGRpbmcgYXQtdGFpbCBt
YXBwaW5nOiAiLCBsb2NhdGlvbiwgIiAtPiAiLCB2YWx1ZSwgIlxuIik7CiAgICAgICAgICAgICBh
dXRvIHJlc3VsdCA9IG1faW1wdXJlRGF0YS0+YXZhaWxhYmxlQXRUYWlsLmFkZChsb2NhdGlvbiwg
dmFsdWUpOwogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsICFyZXN1bHQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRl
LmNwcAppbmRleCBiMGM1NWJlOTlhMjA1MzE4ODFlMTQ2MmJlODcxZGU4YTBkYjcxZjIwLi5iNDlj
YjRjZDk2MjM0YTkyNzFjY2FiODJjNGU2NzhiYTkzZDc4MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcApAQCAtMzcs
NyArMzcsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKK25hbWVzcGFj
ZSBERkdJblBsYWNlQWJzdHJhY3RTdGF0ZUludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZl
cmJvc2UgPSBmYWxzZTsKK30KIAogSW5QbGFjZUFic3RyYWN0U3RhdGU6OkluUGxhY2VBYnN0cmFj
dFN0YXRlKEdyYXBoJiBncmFwaCkKICAgICA6IG1fZ3JhcGgoZ3JhcGgpCkBAIC0yNzYsNyArMjc4
LDcgQEAgdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VTdGF0ZUF0VGFpbChBYnN0cmFj
dFZhbHVlJiBkZXN0aW5hdGlvbiwgQWJzdHJhY3QKIAogYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0
ZTo6bWVyZ2UoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pCiB7Ci0gICAgaWYgKHZl
cmJvc2UpCisgICAgaWYgKERGR0luUGxhY2VBYnN0cmFjdFN0YXRlSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgIGRhdGFMb2coIiAgIE1lcmdpbmcgZnJvbSAiLCBwb2ludGVyRHVtcChmcm9tKSwg
IiB0byAiLCBwb2ludGVyRHVtcCh0byksICJcbiIpOwogICAgIEFTU0VSVChmcm9tLT52YXJpYWJs
ZXNBdFRhaWwubnVtYmVyT2ZBcmd1bWVudHMoKSA9PSB0by0+dmFyaWFibGVzQXRIZWFkLm51bWJl
ck9mQXJndW1lbnRzKCkpOwogICAgIEFTU0VSVChmcm9tLT52YXJpYWJsZXNBdFRhaWwubnVtYmVy
T2ZMb2NhbHMoKSA9PSB0by0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCkpOwpAQCAt
MzA3LDcgKzMwOSw3IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKEJhc2ljQmxv
Y2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKQogCiAgICAgICAgIGZvciAoTm9kZUFic3RyYWN0VmFs
dWVQYWlyJiBlbnRyeSA6IHRvLT5zc2EtPnZhbHVlc0F0SGVhZCkgewogICAgICAgICAgICAgTm9k
ZUZsb3dQcm9qZWN0aW9uIG5vZGUgPSBlbnRyeS5ub2RlOwotICAgICAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgICAgICBpZiAoREZHSW5QbGFjZUFic3RyYWN0U3RhdGVJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBNZXJnaW5nIGZvciAiLCBub2Rl
LCAiOiBmcm9tICIsIGZvck5vZGUobm9kZSksICIgdG8gIiwgZW50cnkudmFsdWUsICJcbiIpOwog
I2lmbmRlZiBOREVCVUcKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlQ291bnRJbkZyb21CbG9j
ayA9IDA7CkBAIC0zMjIsNyArMzI0LDcgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVy
Z2UoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pCiAKICAgICAgICAgICAgIGNoYW5n
ZWQgfD0gZW50cnkudmFsdWUubWVyZ2UoZm9yTm9kZShub2RlKSk7CiAKLSAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR0luUGxhY2VBYnN0cmFjdFN0YXRlSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICAgUmVzdWx0OiAi
LCBlbnRyeS52YWx1ZSwgIlxuIik7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC0zMzYs
NyArMzM4LDcgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbG9jayog
ZnJvbSwgQmFzaWNCbG9jayogdG8pCiAgICAgaWYgKCF0by0+Y2ZhSGFzVmlzaXRlZCkKICAgICAg
ICAgY2hhbmdlZCA9IHRydWU7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0lu
UGxhY2VBYnN0cmFjdFN0YXRlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAg
ICAgIFdpbGwgcmV2aXNpdDogIiwgY2hhbmdlZCwgIlxuIik7CiAgICAgdG8tPmNmYVNob3VsZFJl
dmlzaXQgfD0gY2hhbmdlZDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAKaW5kZXggNWQxY2Jj
NzZjNGVlMjUyYTMzNzI5ZmJlMTg1ZDk5MmIyYWZlZWNkYi4uOThlMGY2ZmRmMjg4MTQ3YTgxZTlj
YjdmOWYxYjg5OTY1NmZkOTFlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAKQEAgLTQxLDcgKzQx
LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3BhY2UgewogCitu
YW1lc3BhY2UgREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2VJbnRlcm5hbCB7CiBzdGF0aWMg
Y29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGVudW0gUmFuZ2VLaW5kIHsKICAgICBJ
bnZhbGlkUmFuZ2VLaW5kLApAQCAtMjAzLDEzICsyMDUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAg
CiAgICAgICAgIGZvciAoYXV0byogbm9kZSA6ICpibG9jaykgewogICAgICAgICAgICAgUmFuZ2VL
ZXlBbmRBZGRlbmQgZGF0YSA9IHJhbmdlS2V5QW5kQWRkZW5kKG5vZGUpOwotICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhh
c2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJGb3IgIiwgbm9k
ZSwgIjogIiwgZGF0YSwgIlxuIik7CiAgICAgICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJhbmdlJiByYW5nZSA9
IG1fbWFwW2RhdGEubV9rZXldOwotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAg
ICBpZiAoREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgUmFuZ2U6ICIsIHJhbmdlLCAiXG4iKTsKICAgICAg
ICAgICAgIGlmIChyYW5nZS5tX2NvdW50KSB7CiAgICAgICAgICAgICAgICAgaWYgKGRhdGEubV9h
ZGRlbmQgPiByYW5nZS5tX21heEJvdW5kKSB7CkBAIC0yMjYsNyArMjI4LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICByYW5nZS5tX21heE9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRp
YzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJhbmdlLm1fY291bnQrKzsKLSAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR0ludGVnZXJDaGVja0NvbWJpbmlu
Z1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIE5l
dyByYW5nZTogIiwgcmFuZ2UsICJcbiIpOwogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25Q
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGlt
aXphdGlvblBoYXNlLmNwcAppbmRleCAwN2I2YWMzNDgyZmQwZTdmMzJlZjg0ZWY4MmIzMTE1MTI3
N2JkMjEyLi40YTM4MzFlYjE2MGRjNDk3NjRlODczOTBlODhhZjVhYTk1ZTg2ZTg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlv
blBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5n
ZU9wdGltaXphdGlvblBoYXNlLmNwcApAQCAtNDIsNyArNDIsOSBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZh
bHNlOworbmFtZXNwYWNlIERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWwg
eworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogY29uc3QgdW5zaWduZWQg
Z2l2ZVVwVGhyZXNob2xkID0gNTA7CiAKIGludDY0X3QgY2xhbXBlZFN1bUltcGwoKSB7IHJldHVy
biAwOyB9CkBAIC0xMDE5LDcgKzEwMjEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5leGVjdXRlKG1fZ3JhcGguYmxvY2soMCkpOwogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1p
emF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3Jh
cGggYmVmb3JlIGludGVnZXIgcmFuZ2Ugb3B0aW1pemF0aW9uOlxuIik7CiAgICAgICAgICAgICBt
X2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQpAQCAtMTExMCw3ICsxMTEyLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgIG1fcmVsYXRpb25zaGlwcyA9IG1fcmVsYXRpb25zaGlwc0F0SGVhZFti
bG9ja107CiAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIG5vZGUgOiAq
YmxvY2spIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAg
ICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZUludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQW5hbHlzaXM6IGF0ICIsIG5v
ZGUsICI6ICIsIGxpc3REdW1wKHNvcnRlZFJlbGF0aW9uc2hpcHMoKSksICJcbiIpOwogICAgICAg
ICAgICAgICAgICAgICBleGVjdXRlTm9kZShub2RlKTsKICAgICAgICAgICAgICAgICB9CkBAIC0x
MTk1LDExICsxMTk3LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0
aW9uc2hpcE1hcCBmb3JUcnVlID0gbV9yZWxhdGlvbnNoaXBzOwogICAgICAgICAgICAgICAgICAg
ICAgICAgUmVsYXRpb25zaGlwTWFwIGZvckZhbHNlID0gbV9yZWxhdGlvbnNoaXBzOwogICAgICAg
ICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25Q
aGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIkRlYWxpbmcgd2l0aCB0cnVlOlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRS
ZWxhdGlvbnNoaXAoZm9yVHJ1ZSwgcmVsYXRpb25zaGlwRm9yVHJ1ZSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoUmVsYXRpb25zaGlwIHJlbGF0aW9uc2hpcEZvckZhbHNlID0gcmVsYXRp
b25zaGlwRm9yVHJ1ZS5pbnZlcnNlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJh
bmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiRGVhbGluZyB3aXRoIGZhbHNlOlxuIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0UmVsYXRpb25zaGlwKGZvckZhbHNlLCByZWxhdGlvbnNo
aXBGb3JGYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0xMjIzLDcgKzEyMjUs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX3JlbGF0aW9uc2hpcHMgPSBtX3JlbGF0aW9uc2hp
cHNBdEhlYWRbYmxvY2tdOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXggPSAw
OyBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyArK25vZGVJbmRleCkgewogICAgICAgICAgICAg
ICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAgICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0
aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
VHJhbnNmb3JtYXRpb246IGF0ICIsIG5vZGUsICI6ICIsIGxpc3REdW1wKHNvcnRlZFJlbGF0aW9u
c2hpcHMoKSksICJcbiIpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIC8vIFRo
aXMgZW5kcyB1cCBiZWluZyBwcmV0dHkgYXdrd2FyZCB0byB3cml0ZSBiZWNhdXNlIHdlIG5lZWQg
dG8gZGVjaWRlIGlmIHdlCkBAIC0xMjg3LDE0ICsxMjg5LDE0IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgICAgIG1heFZhbHVlID0gc3RkOjptaW4obWF4VmFsdWUsIHJlbGF0aW9uc2hp
cC5tYXhWYWx1ZU9mTGVmdCgpKTsKICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdl
clJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2coIiAgICBtaW5WYWx1ZSA9ICIsIG1pblZhbHVlLCAiLCBtYXhWYWx1
ZSA9ICIsIG1heFZhbHVlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgICAgIGlmIChzdW1PdmVyZmxvd3M8aW50PihtaW5WYWx1ZSwgbm9kZS0+Y2hpbGQyKCkt
PmFzSW50MzIoKSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgIHN1bU92ZXJmbG93czxpbnQ+
KG1heFZhbHVlLCBub2RlLT5jaGlsZDIoKS0+YXNJbnQzMigpKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBJdCdzIGlu
IGJvdW5kcy5cbiIpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
ZXhlY3V0ZU5vZGUoYmxvY2stPmF0KG5vZGVJbmRleCkpOwpAQCAtMTU0OCw3ICsxNTUwLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgaWYgKCFyZWxhdGlvbnNoaXApCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0ludGVnZXJS
YW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgU2V0dGluZzogIiwgcmVsYXRpb25zaGlwLCAiICh0dGwgPSAiLCB0aW1lVG9MaXZl
LCAiKVxuIik7CiAKICAgICAgICAgYXV0byByZXN1bHQgPSByZWxhdGlvbnNoaXBNYXAuYWRkKApA
QCAtMTYwMiw3ICsxNjA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgaWYgKG90
aGVyUmVsYXRpb25zaGlwLnZhZ3VlbmVzcygpIDwgcmVsYXRpb25zaGlwLnZhZ3VlbmVzcygpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAmJiBvdGhlclJlbGF0aW9uc2hpcC5yaWdodCgpLT5pc0lu
dDMyQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpb25zaGlwIG5l
d1JlbGF0aW9uc2hpcCA9IHJlbGF0aW9uc2hpcC5maWx0ZXJDb25zdGFudChvdGhlclJlbGF0aW9u
c2hpcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSAmJiBuZXdSZWxhdGlv
bnNoaXAgIT0gcmVsYXRpb25zaGlwKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR0lu
dGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UgJiYgbmV3UmVsYXRp
b25zaGlwICE9IHJlbGF0aW9uc2hpcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgICBSZWZpbmVkIHRvOiAiLCBuZXdSZWxhdGlvbnNoaXAsICIgYmFzZWQgb24gIiwg
b3RoZXJSZWxhdGlvbnNoaXAsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRp
b25zaGlwID0gbmV3UmVsYXRpb25zaGlwOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNjE2
LDcgKzE2MTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXJSZWxh
dGlvbnNoaXAudmFndWVuZXNzKCkgPiByZWxhdGlvbnNoaXAudmFndWVuZXNzKCkKICAgICAgICAg
ICAgICAgICAgICAgICAgICYmIG90aGVyUmVsYXRpb25zaGlwLnJpZ2h0KCktPmlzSW50MzJDb25z
dGFudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGlvbnNoaXAgbmV3UmVsYXRp
b25zaGlwID0gb3RoZXJSZWxhdGlvbnNoaXAuZmlsdGVyQ29uc3RhbnQocmVsYXRpb25zaGlwKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlICYmIG5ld1JlbGF0aW9uc2hpcCAh
PSBvdGhlclJlbGF0aW9uc2hpcCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdJbnRl
Z2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlICYmIG5ld1JlbGF0aW9u
c2hpcCAhPSBvdGhlclJlbGF0aW9uc2hpcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgICBSZWZpbmVkICIsIG90aGVyUmVsYXRpb25zaGlwLCAiIHRvOiAiLCBuZXdS
ZWxhdGlvbnNoaXAsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJSZWxhdGlv
bnNoaXAgPSBuZXdSZWxhdGlvbnNoaXA7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTE2Mzks
NyArMTY0MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBAeCA9PSBAYyBhbmQgQHggIT0g
QGQsIHdoZXJlIEBkID4gQGMsIHRoZW4gd2Ugd2FudCB0byB0dXJuIEB4ICE9IEBkIGludG8gQHgg
PCBAZC4KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKHRpbWVUb0xpdmUgJiYgb3RoZXJS
ZWxhdGlvbnNoaXAua2luZCgpID09IFJlbGF0aW9uc2hpcDo6RXF1YWwpIHsKLSAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0
aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZygiICAgICAgQ29uc2lkZXJpbmc6ICIsIG90aGVyUmVsYXRpb25zaGlwLCAiXG4iKTsKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlOgpAQCAtMTY3NSw3ICsx
Njc3LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBib29sIG1lcmdlVG8oUmVsYXRpb25zaGlwTWFw
JiByZWxhdGlvbnNoaXBNYXAsIEJhc2ljQmxvY2sqIHRhcmdldCkKICAgICB7Ci0gICAgICAgIGlm
ICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFz
ZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJNZXJnaW5nIHRvICIs
IHBvaW50ZXJEdW1wKHRhcmdldCksICI6XG4iKTsKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBJ
bmNvbWluZzogIiwgbGlzdER1bXAoc29ydGVkUmVsYXRpb25zaGlwcyhyZWxhdGlvbnNoaXBNYXAp
KSwgIlxuIik7CiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQXQgaGVhZDogIiwgbGlzdER1bXAo
c29ydGVkUmVsYXRpb25zaGlwcyhtX3JlbGF0aW9uc2hpcHNBdEhlYWRbdGFyZ2V0XSkpLCAiXG4i
KTsKQEAgLTE2OTcsNyArMTY5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZm9yIChS
ZWxhdGlvbnNoaXAgcmVsYXRpb25zaGlwIDogZW50cnkudmFsdWUpIHsKICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKHJlbGF0aW9uc2hpcC5sZWZ0KCkgPT0gZW50cnkua2V5KTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGlzTGl2ZShyZWxhdGlvbnNoaXAucmlnaHQoKSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICBQcm9wYWdhdGluZyAiLCByZWxhdGlv
bnNoaXAsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChyZWxh
dGlvbnNoaXApOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNzM0LDEyICsxNzM2LDEyIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBWZWN0b3I8UmVsYXRpb25zaGlwPiBtZXJnZWRSZWxhdGlv
bnNoaXBzOwogICAgICAgICAgICAgZm9yIChSZWxhdGlvbnNoaXAgdGFyZ2V0UmVsYXRpb25zaGlw
IDogZW50cnkudmFsdWUpIHsKICAgICAgICAgICAgICAgICBmb3IgKFJlbGF0aW9uc2hpcCBzb3Vy
Y2VSZWxhdGlvbnNoaXAgOiBpdGVyLT52YWx1ZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXph
dGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKCIgIE1lcmdpbmcgIiwgdGFyZ2V0UmVsYXRpb25zaGlwLCAiIGFuZCAiLCBzb3VyY2VSZWxh
dGlvbnNoaXAsICI6XG4iKTsKICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UmVsYXRpb25zaGlw
Lm1lcmdlKAogICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlUmVsYXRpb25zaGlwLAogICAg
ICAgICAgICAgICAgICAgICAgICAgWyZdIChSZWxhdGlvbnNoaXAgbmV3UmVsYXRpb25zaGlwKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICBHb3QgIiwgbmV3UmVsYXRpb25zaGlwLCAiXG4iKTsKIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChuZXdSZWxhdGlvbnNoaXAucmlnaHQoKS0+aXNJbnQzMkNvbnN0YW50KCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTW92SGludFJlbW92YWxQ
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01vdkhpbnRSZW1vdmFsUGhh
c2UuY3BwCmluZGV4IDlmMzQ0YjM3ZGNkODdmYzE0YzBhMTJkZTRmMTA3MDhiNmQ3NDhmODYuLjFh
ZWQyYzE4NTZlMmJmNjJjZWY3YTNjNDZkYTI0MjE5MzJmNWY3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTW92SGludFJlbW92YWxQaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNb3ZIaW50UmVtb3ZhbFBoYXNlLmNwcApAQCAtNDIs
NyArNDIsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7
CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIERGR01vdkhpbnRSZW1vdmFsUGhh
c2VJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNs
YXNzIE1vdkhpbnRSZW1vdmFsUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogcHVibGljOgpAQCAtNTUs
NyArNTcsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBydW4oKQogICAgIHsKLSAgICAgICAg
aWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR01vdkhpbnRSZW1vdmFsUGhhc2VJbnRlcm5h
bDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIE1vdkhpbnQg
cmVtb3ZhbDpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KQEAg
LTY5LDcgKzcxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZUJsb2NrKEJh
c2ljQmxvY2sqIGJsb2NrKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlm
IChERkdNb3ZIaW50UmVtb3ZhbFBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBk
YXRhTG9nKCJIYW5kaW5nIGJsb2NrICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIlxuIik7CiAgICAg
ICAgIAogICAgICAgICAvLyBBIE1vdkhpbnQgaXMgdW5uZWNlc3NhcnkgaWYgdGhlIGxvY2FsIGRp
ZXMgYmVmb3JlIGl0IGlzIHVzZWQuIFdlIGFuc3dlciB0aGlzIHF1ZXN0aW9uIGJ5CkBAIC04Nyw3
ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9zdGF0ZS5vcGVyYW5kKHJlZykg
PSBjdXJyZW50RXBvY2g7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgCi0gICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICBpZiAoREZHTW92SGludFJlbW92YWxQaGFzZUludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIExvY2FsczogIiwgbV9zdGF0ZSwgIlxuIik7
CiAgICAgICAgIAogICAgICAgICAvLyBBc3N1bWUgdGhhdCBibG9ja3MgYWZ0ZXIgdXMgZXhpdC4K
QEAgLTk4LDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlm
IChub2RlLT5vcCgpID09IE1vdkhpbnQpIHsKICAgICAgICAgICAgICAgICBFcG9jaCBsb2NhbEVw
b2NoID0gbV9zdGF0ZS5vcGVyYW5kKG5vZGUtPnVubGlua2VkTG9jYWwoKSk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR01vdkhpbnRSZW1vdmFs
UGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAg
IEF0ICIsIG5vZGUsICI6IGN1cnJlbnQgPSAiLCBjdXJyZW50RXBvY2gsICIsIGxvY2FsID0gIiwg
bG9jYWxFcG9jaCwgIlxuIik7CiAgICAgICAgICAgICAgICAgaWYgKCFsb2NhbEVwb2NoIHx8IGxv
Y2FsRXBvY2ggPT0gY3VycmVudEVwb2NoKSB7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNl
dE9wQW5kRGVmYXVsdEZsYWdzKFpvbWJpZUhpbnQpOwpAQCAtMTIwLDcgKzEyMiw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFtX3N0YXRlLm9wZXJhbmQocmVnKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKERGR01vdkhpbnRSZW1vdmFsUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgS2lsbGVkIG9wZXJhbmQg
YXQgIiwgbm9kZSwgIjogIiwgcmVnLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG1f
c3RhdGUub3BlcmFuZChyZWcpID0gY3VycmVudEVwb2NoOwogICAgICAgICAgICAgICAgICAgICB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2Nh
dGlvblNpbmtpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVj
dEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCmluZGV4IDdhOWM1MTU2N2IzNDdmZGQzYzhjM2Nk
OTFiZjA0Yjg5ZGY4MjI1MjguLjNmZGE3ZDQwYjA4NmJkMTljM2MyOGIwYTYwZGFkMTU3NWVmNjBj
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2Nh
dGlvblNpbmtpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
YmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcApAQCAtNDgsNyArNDgsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9
IGZhbHNlOworbmFtZXNwYWNlIERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2VJbnRlcm5h
bCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIC8vIEluIG9yZGVy
IHRvIHNpbmsgb2JqZWN0IGN5Y2xlcywgd2UgdXNlIGEgcG9pbnRzLXRvIGFuYWx5c2lzIGNvdXBs
ZWQKIC8vIHdpdGggYW4gZXNjYXBlIGFuYWx5c2lzLiBUaGlzIGFuYWx5c2lzIGlzIGFjdHVhbGx5
IHNpbWlsYXIgdG8gYW4KQEAgLTcxNyw3ICs3MTksNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICgh
cGVyZm9ybVNpbmtpbmcoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBp
ZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFz
ZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJHcmFwaCBhZnRlciBl
bGltaW5hdGlvbjpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0K
QEAgLTc0Miw3ICs3NDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgZ3JhcGhCZWZvcmVTaW5r
aW5nID0gb3V0LnRvQ1N0cmluZygpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHZlcmJvc2Up
IHsKKyAgICAgICAgaWYgKERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2VJbnRlcm5hbDo6
dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIGVsaW1pbmF0aW9u
OlxuIik7CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQpAQCAtNzUyLDcg
Kzc1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghZGV0ZXJtaW5lU2lua0NhbmRpZGF0ZXMo
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAodmVyYm9zZSkgewor
ICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJi
b3NlKSB7CiAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9j
a3NJbk5hdHVyYWxPcmRlcigpKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygiSGVhcCBhdCBo
ZWFkIG9mICIsICpibG9jaywgIjogXG4iLCBtX2hlYXBBdEhlYWRbYmxvY2tdKTsKICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCJIZWFwIGF0IHRhaWwgb2YgIiwgKmJsb2NrLCAiOiBcbiIsIG1faGVh
cEF0VGFpbFtibG9ja10pOwpAQCAtNzczLDcgKzc3NSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAg
Ym9vbCBjaGFuZ2VkOwogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiRG9pbmcgaXRlcmF0aW9uIG9mIGVzY2Fw
ZSBhbmFseXNpcy5cbiIpOwogICAgICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwogCkBAIC0xMTk4
LDcgKzEyMDAsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gaGFzVW5lc2NhcGVkUmVhZHM7CiAKLSAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNl
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJDYW5kaWRhdGVzOiAiLCBs
aXN0RHVtcChtX3NpbmtDYW5kaWRhdGVzKSwgIlxuIik7CiAKICAgICAgICAgLy8gQ3JlYXRlIHRo
ZSBtYXRlcmlhbGl6YXRpb24gbm9kZXMKQEAgLTE3NjUsNyArMTc2Nyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAodmVyYm9z
ZSkgeworICAgICAgICAgICAgaWYgKERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2VJbnRl
cm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvY2FsIG1hcHBpbmcg
YXQgIiwgcG9pbnRlckR1bXAoYmxvY2spLCAiOiAiLCBtYXBEdW1wKG1fbG9jYWxNYXBwaW5nKSwg
IlxuIik7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygiTG9jYWwgbWF0ZXJpYWxpemF0aW9ucyBh
dCAiLCBwb2ludGVyRHVtcChibG9jayksICI6ICIsIG1hcER1bXAobV9lc2NhcGVlVG9NYXRlcmlh
bGl6YXRpb24pLCAiXG4iKTsKICAgICAgICAgICAgIH0KQEAgLTE3ODEsNyArMTc4Myw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIG1fbG9jYWxNYXBwaW5nLnNldChsb2NhdGlvbiwg
bV9ib3R0b20pOwogCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3NpbmtDYW5kaWRhdGVzLmNv
bnRhaW5zKG5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNl
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
Rm9yIHNpbmsgY2FuZGlkYXRlICIsIG5vZGUsICIgZm91bmQgbG9jYXRpb24gIiwgbG9jYXRpb24s
ICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsCkBAIC0xNzk2LDcgKzE3
OTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBwb3B1bGF0ZU1hdGVyaWFsaXph
dGlvbihibG9jaywgbWF0ZXJpYWxpemF0aW9uLCBlc2NhcGVlKTsKICAgICAgICAgICAgICAgICAg
ICAgbV9lc2NhcGVlVG9NYXRlcmlhbGl6YXRpb24uc2V0KGVzY2FwZWUsIG1hdGVyaWFsaXphdGlv
bik7CiAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydChub2RlSW5kZXgs
IG1hdGVyaWFsaXphdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICAgICAgICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiTWF0ZXJpYWxp
emluZyAiLCBlc2NhcGVlLCAiID0+ICIsIG1hdGVyaWFsaXphdGlvbiwgIiBhdCAiLCBub2RlLCAi
XG4iKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTE4NTEsNyArMTg1Myw3IEBAIHByaXZhdGU6
CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGRvTG93ZXIgPSB0cnVlOwogCi0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChE
RkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ3JlYXRpbmcgaGludCB3aXRoIHZhbHVlICIs
IG5vZGVWYWx1ZSwgIiBiZWZvcmUgIiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2luc2VydGlvblNldC5pbnNlcnQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bm9kZUluZGV4ICsgMSwKQEAgLTE5OTQsNyArMTk5Niw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGluc2VydE9TUkhpbnRzRm9yVXBkYXRlKHVuc2lnbmVkIG5vZGVJbmRleCwgTm9kZU9yaWdpbiBv
cmlnaW4sIGJvb2wmIGNhbkV4aXQsIEF2YWlsYWJpbGl0eU1hcCYgYXZhaWxhYmlsaXR5LCBOb2Rl
KiBlc2NhcGVlLCBOb2RlKiBtYXRlcmlhbGl6YXRpb24pCiAgICAgewotICAgICAgICBpZiAodmVy
Ym9zZSkgeworICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVy
bmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJJbnNlcnRpbmcgT1NSIGhpbnRz
IGF0ICIsIG9yaWdpbiwgIjpcbiIpOwogICAgICAgICAgICAgZGF0YUxvZygiICAgIEVzY2FwZWU6
ICIsIGVzY2FwZWUsICJcbiIpOwogICAgICAgICAgICAgZGF0YUxvZygiICAgIE1hdGVyaWFsaXph
dGlvbjogIiwgbWF0ZXJpYWxpemF0aW9uLCAiXG4iKTsKQEAgLTIxNjcsNyArMjE2OSw3IEBAIHBy
aXZhdGU6CiAKICAgICBOb2RlKiBjcmVhdGVSZWNvdmVyeShCYXNpY0Jsb2NrKiBibG9jaywgUHJv
bW90ZWRIZWFwTG9jYXRpb24gbG9jYXRpb24sIE5vZGUqIHdoZXJlLCBib29sJiBjYW5FeGl0KQog
ICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0
aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJS
ZWNvdmVyaW5nICIsIGxvY2F0aW9uLCAiIGF0ICIsIHdoZXJlLCAiXG4iKTsKICAgICAgICAgQVNT
RVJUKGxvY2F0aW9uLmJhc2UoKS0+aXNQaGFudG9tQWxsb2NhdGlvbigpKTsKICAgICAgICAgTm9k
ZSogYmFzZSA9IGdldE1hdGVyaWFsaXphdGlvbihibG9jaywgbG9jYXRpb24uYmFzZSgpKTsKQEAg
LTIxNzUsNyArMjE3Nyw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4g
PSB3aGVyZS0+b3JpZ2luLndpdGhTZW1hbnRpYyhiYXNlLT5vcmlnaW4uc2VtYW50aWMpOwogCi0g
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtp
bmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQmFzZSBpcyAi
LCBiYXNlLCAiIGFuZCB2YWx1ZSBpcyAiLCB2YWx1ZSwgIlxuIik7CiAKICAgICAgICAgaWYgKGJh
c2UtPmlzUGhhbnRvbUFsbG9jYXRpb24oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwCmluZGV4IGRjYzFjOTc2OTg2
ZmVkNmUzZTlkY2VkY2FmNWU5NDA1YjlkM2I4ZGEuLjNjMDg4YTZhNGE1ZWU2NTA5MDYyMmQ2NjAz
MmQ0ZjE3MTAyOTM3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGhhbnRvbUluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1BoYW50b21JbnNlcnRpb25QaGFzZS5jcHAKQEAgLTQzLDcgKzQzLDkgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBm
YWxzZTsKK25hbWVzcGFjZSBERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2VJbnRlcm5hbCB7CitzdGF0
aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIFBoYW50b21JbnNlcnRp
b25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJsaWM6CkBAIC02MCw3ICs2Miw3IEBAIHB1Ymxp
YzoKICAgICAgICAgLy8gU2V0TG9jYWxzIGV4ZWN1dGUsIHdoaWNoIGlzIGluYWNjdXJhdGUuIFRo
YXQgY2F1c2VzIHVzIHRvIGluc2VydCB0b28gZmV3IFBoYW50b21zLgogICAgICAgICBERkdfQVNT
RVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9yZWZDb3VudFN0YXRlID09IEV4YWN0UmVm
Q291bnQpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERG
R1BoYW50b21JbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBk
YXRhTG9nKCJHcmFwaCBiZWZvcmUgUGhhbnRvbSBpbnNlcnRpb246XG4iKTsKICAgICAgICAgICAg
IG1fZ3JhcGguZHVtcCgpOwogICAgICAgICB9CkBAIC03MCw3ICs3Miw3IEBAIHB1YmxpYzoKICAg
ICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3Jk
ZXIoKSkKICAgICAgICAgICAgIGhhbmRsZUJsb2NrKGJsb2NrKTsKICAgICAgICAgCi0gICAgICAg
IGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2VJbnRl
cm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYWZ0ZXIgUGhhbnRv
bSBpbnNlcnRpb246XG4iKTsKICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwogICAgICAgICB9
CkBAIC0xMDEsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgbGFzdEV4aXRp
bmdJbmRleCA9IDA7CiAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0gMDsgbm9kZUlu
ZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAgICAgICAgICAgIE5vZGUqIG5v
ZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICAgICAgaWYgKERGR1BoYW50b21JbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nICIsIG5vZGUsICJcbiIpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKQEAgLTEzOSw3ICsx
NDEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFscmVhZHlLaWxs
ZWQ7CiAKICAgICAgICAgICAgIGF1dG8gcHJvY2Vzc0tpbGxlZE9wZXJhbmQgPSBbJl0gKFZpcnR1
YWxSZWdpc3RlciByZWcpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgICAgICBpZiAoREZHUGhhbnRvbUluc2VydGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBLaWxsZWQgb3BlcmFuZDogIiwgcmVnLCAi
XG4iKTsKIAogICAgICAgICAgICAgICAgIC8vIEFscmVhZHkgaGFuZGxlZCBmcm9tIFNldExvY2Fs
LgpAQCAtMTU1LDcgKzE1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKGtpbGxl
ZE5vZGUtPmVwb2NoKCkgPT0gY3VycmVudEVwb2NoKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoREZHUGhhbnRvbUluc2VydGlvblBoYXNlSW50ZXJuYWw6OnZlcmJv
c2UpIHsKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAg
ICAgICIgICAgSW5zZXJ0aW5nIFBoYW50b20gb24gIiwga2lsbGVkTm9kZSwgIiBhZnRlciAiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2stPmF0KGxhc3RFeGl0aW5nSW5kZXgpLCAiXG4i
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5r
aW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1Npbmtp
bmdQaGFzZS5jcHAKaW5kZXggZDNkYTU1MjdkNjNiYzA3Njk4MGVkNDA0ZDU3MzA2NWQ0YTg1MTZi
YS4uMTRjZWQyYWE4ZDgyYzZlYmNiMzVlOTRjYTZmYTJlMmEzZTMzODRmYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAK
QEAgLTQyLDcgKzQyLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1l
c3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBERkdQdXRTdGFja1Np
bmtpbmdQaGFzZUludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsK
K30KIAogY2xhc3MgUHV0U3RhY2tTaW5raW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogcHVibGlj
OgpAQCAtNzEsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIHRoZSBzdGFjay4gSXQncyBu
b3QgY2xlYXIgdG8gbWUgaWYgdGhpcyBpcyBpbXBvcnRhbnQgb3Igbm90LgogICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1Mjk2CiAgICAgICAgIAot
ICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhh
c2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3Jl
IFB1dFN0YWNrIHNpbmtpbmc6XG4iKTsKICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwogICAg
ICAgICB9CkBAIC0xMDUsNyArMTA3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIE9wZXJh
bmRzPGJvb2w+IGxpdmUgPSBsaXZlQXRUYWlsW2Jsb2NrXTsKICAgICAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIG5vZGVJbmRleCA9IGJsb2NrLT5zaXplKCk7IG5vZGVJbmRleC0tOykgewogICAg
ICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZH
UHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIkxpdmUgYXQgIiwgbm9kZSwgIjogIiwgbGl2ZSwgIlxuIik7CiAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBWZWN0b3I8VmlydHVhbFJlZ2lz
dGVyLCA0PiByZWFkczsKQEAgLTExMyw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgICAgIGF1dG8gZXNjYXBlSGFuZGxlciA9IFsmXSAoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzSGVhZGVyKCkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5r
aW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgIiwgb3BlcmFuZCwgIiBpcyBsaXZlIGF0ICIsIG5vZGUsICJcbiIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgcmVhZHMuYXBwZW5kKG9wZXJhbmQpOwogICAgICAgICAgICAg
ICAgICAgICB9OwpAQCAtMjMwLDcgKzIzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBP
cGVyYW5kczxGbHVzaEZvcm1hdD4gZGVmZXJyZWQgPSBkZWZlcnJlZEF0SGVhZFtibG9ja107CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZm9yIChOb2RlKiBub2RlIDogKmJsb2Nr
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAg
ICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIkRlZmVycmVkIGF0ICIsIG5vZGUsICI6IiwgZGVmZXJy
ZWQsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYg
KG5vZGUtPm9wKCkgPT0gR2V0U3RhY2spIHsKQEAgLTI3Nyw3ICsyNzksNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgIGF1dG8gZXNjYXBlSGFuZGxlciA9IFsmXSAoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiRm9yICIsIG5vZGUsICIgZXNjYXBp
bmcgIiwgb3BlcmFuZCwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmFu
ZC5pc0hlYWRlcigpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMw
MywxMyArMzA1LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBmb3IgKEJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IGRlZmVycmVkLnNpemUoKTsgaS0tOykg
ewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyAiLCBWaXJ0dWFs
UmVnaXN0ZXIoZGVmZXJyZWQub3BlcmFuZEZvckluZGV4KGkpKSwgIiBhdCAiLCBwb2ludGVyRHVt
cChibG9jayksICItPiIsIHBvaW50ZXJEdW1wKHN1Y2Nlc3NvciksICI6ICIsIGRlZmVycmVkW2ld
LCAiIGFuZCAiLCBkZWZlcnJlZEF0SGVhZFtzdWNjZXNzb3JdW2ldLCAiIG1lcmdlcyB0byAiKTsK
IAogICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWRBdEhlYWRbc3VjY2Vzc29yXVtpXSA9
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2UoZGVmZXJyZWRBdEhlYWRbc3VjY2Vz
c29yXVtpXSwgZGVmZXJyZWRbaV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coZGVmZXJyZWRBdEhlYWRbc3VjY2Vzc29yXVtpXSwgIlxu
Iik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0zODcsNyAr
Mzg5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGlmICghaXNDb25jcmV0ZShmb3JtYXQp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQaGFz
ZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJBZGRpbmcg
UGhpIGZvciAiLCBvcGVyYW5kLCAiIGF0ICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIlxuIik7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTm9kZSogcGhpTm9kZSA9IG1fZ3JhcGgu
YWRkTm9kZShTcGVjSGVhcFRvcCwgUGhpLCBibG9jay0+YXQoMCktPm9yaWdpbi53aXRoSW52YWxp
ZEV4aXQoKSk7CkBAIC00MTEsNyArNDEzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIG1h
cHBpbmcub3BlcmFuZChvcGVyYW5kKSA9IGRlZi0+dmFsdWUoKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZH
UHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBk
YXRhTG9nKCJNYXBwaW5nIGF0IHRvcCBvZiAiLCBwb2ludGVyRHVtcChibG9jayksICI6ICIsIG1h
cHBpbmcsICJcbiIpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKFNTQUNhbGN1bGF0
b3I6OkRlZiogcGhpRGVmIDogc3NhQ2FsY3VsYXRvci5waGlzRm9yQmxvY2soYmxvY2spKSB7CkBA
IC00MTksNyArNDIxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIGluc2VydGlvblNldC5pbnNlcnQoMCwgcGhpRGVmLT52YWx1ZSgpKTsKICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAo
REZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiICAgTWFwcGluZyAiLCBvcGVyYW5kLCAiIHRvICIsIHBoaURlZi0+dmFs
dWUoKSwgIlxuIik7CiAgICAgICAgICAgICAgICAgbWFwcGluZy5vcGVyYW5kKG9wZXJhbmQpID0g
cGhpRGVmLT52YWx1ZSgpOwogICAgICAgICAgICAgfQpAQCAtNDI3LDcgKzQyOSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIGRlZmVycmVkID0gZGVmZXJyZWRBdEhlYWRbYmxvY2tdOwogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXggPSAwOyBub2RlSW5kZXggPCBibG9jay0+c2l6
ZSgpOyArK25vZGVJbmRleCkgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+
YXQobm9kZUluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAg
ICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiRGVmZXJyZWQgYXQgIiwgbm9kZSwgIjoiLCBkZWZlcnJl
ZCwgIlxuIik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2Rl
LT5vcCgpKSB7CkBAIC00MzUsNyArNDM3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICBTdGFja0FjY2Vzc0RhdGEqIGRhdGEgPSBub2RlLT5zdGFja0FjY2Vzc0RhdGEoKTsKICAgICAg
ICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBkYXRhLT5sb2NhbDsKICAg
ICAgICAgICAgICAgICAgICAgZGVmZXJyZWQub3BlcmFuZChvcGVyYW5kKSA9IGRhdGEtPmZvcm1h
dDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAg
IGlmIChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiICAgTWFwcGluZyAiLCBvcGVyYW5kLCAiIHRvICIsIG5v
ZGUtPmNoaWxkMSgpLm5vZGUoKSwgIiBhdCAiLCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgbWFwcGluZy5vcGVyYW5kKG9wZXJhbmQpID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTQ3MCw3ICs0NzIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZGVmYXVsdDogewogICAgICAgICAgICAg
ICAgICAgICBhdXRvIGVzY2FwZUhhbmRsZXIgPSBbJl0gKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5k
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkZvciAiLCBub2RlLCAiIGVzY2Fw
aW5nICIsIG9wZXJhbmQsICJcbiIpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3Bl
cmFuZC5pc0hlYWRlcigpKQpAQCAtNDg0LDcgKzQ4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBHb3R0YSBpbnNlcnQgYSBQdXRTdGFjay4KLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR1B1dFN0YWNrU2lu
a2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiSW5zZXJ0aW5nIGEgUHV0U3RhY2sgZm9yICIsIG9wZXJhbmQsICIgYXQgIiwgbm9k
ZSwgIlxuIik7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGluY29taW5nID0gbWFw
cGluZy5vcGVyYW5kKG9wZXJhbmQpOwpAQCAtNTIzLDcgKzUyNSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAgICAgTm9kZSogcGhpTm9kZSA9IHBoaURlZi0+dmFsdWUoKTsKICAgICAgICAg
ICAgICAgICAgICAgU1NBQ2FsY3VsYXRvcjo6VmFyaWFibGUqIHZhcmlhYmxlID0gcGhpRGVmLT52
YXJpYWJsZSgpOwogICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9
IGluZGV4VG9PcGVyYW5kW3ZhcmlhYmxlLT5pbmRleCgpXTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQ
aGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
Q3JlYXRpbmcgVXBzaWxvbiBmb3IgIiwgb3BlcmFuZCwgIiBhdCAiLCBwb2ludGVyRHVtcChibG9j
ayksICItPiIsIHBvaW50ZXJEdW1wKHN1Y2Nlc3NvckJsb2NrKSwgIlxuIik7CiAgICAgICAgICAg
ICAgICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdCA9IGRlZmVycmVkQXRIZWFkW3N1Y2Nlc3NvckJs
b2NrXS5vcGVyYW5kKG9wZXJhbmQpOwogICAgICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1f
Z3JhcGgsIG51bGxwdHIsIGlzQ29uY3JldGUoZm9ybWF0KSk7CkBAIC01NjgsNyArNTcwLDcgQEAg
cHVibGljOgogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAo
dmVyYm9zZSkgeworICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6
dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYWZ0ZXIgUHV0U3RhY2sgc2lu
a2luZzpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNl
cnRpb25QaGFzZS5jcHAKaW5kZXggM2EyYTcxNzJhZDczZDZhM2UwMTA3MjkyZTViOTcwNTQ5NDdm
OGYxYS4uYjVlMmMzNTBiMTgxZjliMDYzOTMyMTVhNDJhYWFkNzZiNjVlZDg0NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNl
cnRpb25QaGFzZS5jcHAKQEAgLTQzLDcgKzQzLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFj
ZSBERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsIHsKK3N0YXRpYyBjb25zdCBi
b29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogZW51bSBjbGFzcyBQaGFzZU1vZGUgewogICAgIC8v
IERvZXMgb25seSBhIGxvY2FsIGFuYWx5c2lzIGZvciBzdG9yZSBiYXJyaWVyIGluc2VydGlvbiBh
bmQgYXNzdW1lcyB0aGF0IHBvaW50ZXJzIGxpdmUKQEAgLTc1LDcgKzc3LDcgQEAgcHVibGljOgog
ICAgIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAg
ICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKSB7
CiAgICAgICAgICAgICBkYXRhTG9nKCJTdGFydGluZyBzdG9yZSBiYXJyaWVyIGluc2VydGlvbjpc
biIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KQEAgLTE2Nyw3ICsx
NjksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGJvb2wgaGFuZGxlQmxvY2soQmFzaWNCbG9j
ayogYmxvY2spCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZH
U3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAg
ICAgZGF0YUxvZygiRGVhbGluZyB3aXRoIGJsb2NrICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIlxu
Iik7CiAgICAgICAgICAgICBpZiAocmVhbGx5SW5zZXJ0QmFycmllcnMoKSkKICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgUmVhbGx5IGluc2VydGluZyBiYXJyaWVycy5cbiIpOwpAQCAtMjA2
LDcgKzIwOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGZvciAobV9ub2RlSW5kZXggPSAwOyBtX25v
ZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbV9ub2RlSW5kZXgpIHsKICAgICAgICAgICAgIG1f
bm9kZSA9IGJsb2NrLT5hdChtX25vZGVJbmRleCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAg
ICAgICAgICAgICAgICAgICIgICAgIiwgbV9jdXJyZW50RXBvY2gsICI6IExvb2tpbmcgYXQgbm9k
ZSAiLCBtX25vZGUsICIgd2l0aCBjaGlsZHJlbjogIik7CiAgICAgICAgICAgICAgICAgQ29tbWFQ
cmludGVyIGNvbW1hOwpAQCAtMzQ4LDcgKzM1MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh2
ZXJib3NlKSB7CisgICAgICAgICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJ
bnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAg
ICAgICAgICAgICIgICAgIiwgbV9jdXJyZW50RXBvY2gsICI6IERvbmUgd2l0aCBub2RlICIsIG1f
bm9kZSwgIiAoIiwgbV9ub2RlLT5lcG9jaCgpLAogICAgICAgICAgICAgICAgICAgICAiKSB3aXRo
IGNoaWxkcmVuOiAiKTsKQEAgLTM4MCw3ICszODIsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZv
aWQgY29uc2lkZXJCYXJyaWVyKEVkZ2UgYmFzZSwgRWRnZSBjaGlsZCkKICAgICB7Ci0gICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgQ29uc2lkZXJp
bmcgYWRkaW5nIGJhcnJpZXIgIiwgYmFzZSwgIiA9PiAiLCBjaGlsZCwgIlxuIik7CiAgICAgICAg
IAogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIGEgc3RvcmUgYmFycmllciBpZiB0aGUgY2hpbGQg
aXMgZ3VhcmFudGVlZCB0byBub3QgYmUgYSBjZWxsLgpAQCAtMzg5LDcgKzM5MSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAvLyBEb24ndCB0cnkgdG9vIGhhcmQgYmVjYXVzZSBpdCdzIHRvbyBl
eHBlbnNpdmUgdG8gcnVuIEFJLgogICAgICAgICAgICAgaWYgKGNoaWxkLT5oYXNDb25zdGFudCgp
KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFjaGlsZC0+YXNKU1ZhbHVlKCkuaXNDZWxsKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlm
IChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICAgICAgUmVqZWN0aW5nIGJlY2F1c2Ug
b2YgY29uc3RhbnQgdHlwZS5cbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICAgICAgfQpAQCAtNDAwLDcgKzQwMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgY2FzZSBOb2RlUmVzdWx0SW50MzI6CiAgICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0
SW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0Qm9vbGVhbjoKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiICAgICAgICAgICAgUmVqZWN0aW5nIGJlY2F1c2Ugb2YgcmVzdWx0
IHR5cGUuXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CkBAIC00MTQsNyArNDE2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIEdv
IGludG8gcmFnZSBtb2RlIHRvIGVsaW1pbmF0ZSBhbnkgY2hhbmNlIG9mIGEgYmFycmllciB3aXRo
IGEgbm9uLWNlbGwgY2hpbGQuIFdlCiAgICAgICAgICAgICAvLyBjYW4gYWZmb3JkIHRvIGtlZXAg
YXJvdW5kIEFJIGluIEdsb2JhbCBtb2RlLgogICAgICAgICAgICAgaWYgKCFtX2ludGVycHJldGVy
LT5uZWVkc1R5cGVDaGVjayhjaGlsZCwgflNwZWNDZWxsKSkgewotICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
ICAgICAgICBSZWplY3RpbmcgYmVjYXVzZSBvZiBBSSB0eXBlLlxuIik7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtNDI2LDcgKzQyOCw3IEBAIHByaXZhdGU6CiAg
ICAgCiAgICAgdm9pZCBjb25zaWRlckJhcnJpZXIoRWRnZSBiYXNlKQogICAgIHsKLSAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUlu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBDb25zaWRlcmlu
ZyBhZGRpbmcgYmFycmllciBvbiAiLCBiYXNlLCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIC8v
IFdlIGRvbid0IG5lZWQgYSBzdG9yZSBiYXJyaWVyIGlmIHRoZSBlcG9jaCBvZiB0aGUgYmFzZSBp
cyBpZGVudGljYWwgdG8gdGhlIGN1cnJlbnQKQEAgLTQzNCwxMiArNDM2LDEyIEBAIHByaXZhdGU6
CiAgICAgICAgIC8vIGJlIGluIG5ld2dlbiwgb3Igd2UganVzdCByYW4gYSBiYXJyaWVyIG9uIGl0
IHNvIGl0J3MgZ3VhcmFudGVlZCB0byBiZSByZW1lbWJlcmVkCiAgICAgICAgIC8vIGFscmVhZHku
CiAgICAgICAgIGlmIChiYXNlLT5lcG9jaCgpID09IG1fY3VycmVudEVwb2NoKSB7Ci0gICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAg
ICAgICAgIFJlamVjdGluZyBiZWNhdXNlIGl0J3MgaW4gdGhlIGN1cnJlbnQgZXBvY2guXG4iKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICAgICAgSW5zZXJ0aW5nIGJh
cnJpZXIuXG4iKTsKICAgICAgICAgaW5zZXJ0QmFycmllcihtX25vZGVJbmRleCArIDEsIGJhc2Up
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJn
c0ZvcndhcmRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFy
Z3NGb3J3YXJkaW5nUGhhc2UuY3BwCmluZGV4IGUzYzUyYWNhOWRhMTNmY2Q4M2MxOGUwMWI4NTZm
OGE0ODA5ODllOTcuLmU5NzM5NTc3N2ZhOWUwZDgyNjUzZGM4Nzc4ZDJhMDIwMGIwOTU5NDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQ
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2Fy
ZGluZ1BoYXNlLmNwcApAQCAtNDAsNyArNDAsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNl
IERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2
ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIFZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UgOiBwdWJs
aWMgUGhhc2UgewogcHVibGljOgpAQCAtNTMsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9mb3JtICE9IFNTQSk7
CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHVmFyYXJn
c0ZvcndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9n
KCJHcmFwaCBiZWZvcmUgdmFyYXJncyBmb3J3YXJkaW5nOlxuIik7CiAgICAgICAgICAgICBtX2dy
YXBoLmR1bXAoKTsKICAgICAgICAgfQpAQCAtODUsNyArODcsNyBAQCBwcml2YXRlOgogICAgICAg
ICAvLyBXZSBleHBlY3QgY2FsbHMgaW50byB0aGlzIGZ1bmN0aW9uIHRvIGJlIHJhcmUuIFNvLCB0
aGlzIGlzIHdyaXR0ZW4gaW4gYSBzaW1wbGUgTyhuKSBtYW5uZXIuCiAgICAgICAgIAogICAgICAg
ICBOb2RlKiBjYW5kaWRhdGUgPSBibG9jay0+YXQoY2FuZGlkYXRlTm9kZUluZGV4KTsKLSAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJIYW5kbGluZyBjYW5kaWRhdGUg
IiwgY2FuZGlkYXRlLCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZpbmQgdGhlIGluZGV4
IG9mIHRoZSBsYXN0IG5vZGUgaW4gdGhpcyBibG9jayB0byB1c2UgdGhlIGNhbmRpZGF0ZSwgYW5k
IGxvb2sgZm9yIGVzY2FwaW5nCkBAIC0xMjEsNyArMTIzLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgICAgIHNhd0VzY2FwZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgICAgIGlmIChzYXdFc2NhcGUpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGlu
Z1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgRXNjYXBlIGF0ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtMTM4LDcgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKICAgICAgICAgICAgIGNhc2UgVGFpbENhbGxW
YXJhcmdzSW5saW5lZENhbGxlcjoKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkg
PT0gY2FuZGlkYXRlIHx8IG5vZGUtPmNoaWxkMigpID09IGNhbmRpZGF0ZSkgewotICAgICAgICAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR1ZhcmFy
Z3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coIiAgICBFc2NhcGUgYXQgIiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBAIC0xNDgsNyArMTUwLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgU2V0TG9jYWw6CiAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpID09IGNhbmRpZGF0ZSAmJiBub2RlLT52YXJp
YWJsZUFjY2Vzc0RhdGEoKS0+aXNMb2FkZWRGcm9tKCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGlu
Z1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgRXNjYXBlIGF0ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtMTU2LDcgKzE1OCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGlmICht
X2dyYXBoLnVzZXMobm9kZSwgY2FuZGlkYXRlKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhh
c2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICBFc2NhcGUgYXQgIiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgICAgICB9CkBAIC0xNjUsNyArMTY3LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGZvckFsbEtpbGxlZE9wZXJhbmRzKAogICAgICAgICAgICAgICAgIG1fZ3JhcGgsIG5vZGUs
IGJsb2NrLT50cnlBdChub2RlSW5kZXggKyAxKSwKICAgICAgICAgICAgICAgICBbJl0gKFZpcnR1
YWxSZWdpc3RlciByZWcpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgICAgICAgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgS2lsbGluZyAiLCBy
ZWcsICIgd2hpbGUgd2UgYXJlIGludGVyZXN0ZWQgaW4gIiwgbGlzdER1bXAocmVsZXZhbnRMb2Nh
bHMpLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHJlbGV2YW50TG9jYWxzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAocmVsZXZhbnRMb2NhbHNbaV0gPT0gcmVnKSB7CkBAIC0xNzYsNyArMTc4LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICB9
Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQ
aGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiU2VsZWN0ZWQgbGFz
dFVzZXJJbmRleCA9ICIsIGxhc3RVc2VySW5kZXgsICIsICIsIGJsb2NrLT5hdChsYXN0VXNlcklu
ZGV4KSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICAvLyBXZSdyZSBzdGlsbCBpbiBidXNpbmVz
cy4gRGV0ZXJtaW5lIGlmIGJldHdlZW4gdGhlIGNhbmRpZGF0ZSBhbmQgdGhlIGxhc3QgdXNlciB0
aGVyZSBpcyBhbnkKQEAgLTE5Myw3ICsxOTUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2Fz
ZSBab21iaWVIaW50OgogICAgICAgICAgICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgICAgICAgICAg
ICAgaWYgKGFyZ3VtZW50c0ludm9sdmVTdGFja1Nsb3QoY2FuZGlkYXRlLCBub2RlLT51bmxpbmtl
ZExvY2FsKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAg
ICAgICAgICAgICBpZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEludGVyZmVyZW5jZSBhdCAi
LCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
ICAgIH0KQEAgLTIwMSw3ICsyMDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgY2FzZSBQdXRTdGFjazoKICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzSW52
b2x2ZVN0YWNrU2xvdChjYW5kaWRhdGUsIG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5sb2NhbCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAg
IGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgSW50ZXJmZXJlbmNlIGF0ICIsIG5vZGUsICJc
biIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAt
MjEwLDcgKzIxMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIFNldExvY2FsOgogICAg
ICAgICAgICAgY2FzZSBGbHVzaDoKICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzSW52b2x2
ZVN0YWNrU2xvdChjYW5kaWRhdGUsIG5vZGUtPmxvY2FsKCkpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHVmFyYXJnc0Zvcndh
cmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZygiICAgIEludGVyZmVyZW5jZSBhdCAiLCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAgLTIzMiw3ICsyMzQsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICBOb09wQ2xv
YmJlcml6ZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoZG9lc0ludGVyZmVyZSkgewotICAgICAg
ICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR1Zh
cmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIiAgICBJbnRlcmZlcmVuY2UgYXQgIiwgbm9kZSwgIlxuIik7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBAIC0yNDAsNyArMjQy
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gV2UgY2FuIG1h
a2UgdGhpcyB3b3JrLgotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR1ZhcmFy
Z3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2co
IiAgICBXaWxsIGRvIGZvcndhcmRpbmchXG4iKTsKICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsK
ICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3Ry
YWN0SGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5j
cHAKaW5kZXggOTAyMTFmZDk0YWM2MTVjNjVjNTFkMzRjN2Q1ODhmNGQ5M2IxMjljNy4uOWI5OTE0
YWU4Yjg1NGQwMzUyOGE2Yjg4N2JhMjg4OGU3OWVkZGRhNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwLmNwcApAQCAtMzgsOCArMzgsNiBAQAogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKLXVzaW5nIG5hbWVzcGFjZSBCMzsKLQogQWJz
dHJhY3RIZWFwOjpBYnN0cmFjdEhlYXAoQWJzdHJhY3RIZWFwKiBwYXJlbnQsIGNvbnN0IGNoYXIq
IGhlYXBOYW1lLCBwdHJkaWZmX3Qgb2Zmc2V0KQogICAgIDogbV9vZmZzZXQob2Zmc2V0KQogICAg
ICwgbV9oZWFwTmFtZShoZWFwTmFtZSkKQEAgLTc3LDcgKzc1LDcgQEAgdm9pZCBBYnN0cmFjdEhl
YXA6OmNvbXB1dGUodW5zaWduZWQgYmVnaW4pCiAKICAgICBpZiAobV9jaGlsZHJlbi5pc0VtcHR5
KCkpIHsKICAgICAgICAgLy8gTXVzdCBzcGVjaWFsLWNhc2UgbGVhdmVzIHNvIHRoYXQgdGhleSB1
c2UganVzdCBvbmUgc2xvdCBvbiB0aGUgbnVtYmVyIGxpbmUuCi0gICAgICAgIG1fcmFuZ2UgPSBI
ZWFwUmFuZ2UoYmVnaW4pOworICAgICAgICBtX3JhbmdlID0gQjM6OkhlYXBSYW5nZShiZWdpbik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg3LDcgKzg1LDcgQEAgdm9pZCBBYnN0cmFj
dEhlYXA6OmNvbXB1dGUodW5zaWduZWQgYmVnaW4pCiAgICAgICAgIGN1cnJlbnQgPSBjaGlsZC0+
cmFuZ2UoKS5lbmQoKTsKICAgICB9CiAKLSAgICBtX3JhbmdlID0gSGVhcFJhbmdlKGJlZ2luLCBj
dXJyZW50KTsKKyAgICBtX3JhbmdlID0gQjM6OkhlYXBSYW5nZShiZWdpbiwgY3VycmVudCk7CiB9
CiAKIHZvaWQgQWJzdHJhY3RIZWFwOjpzaGFsbG93RHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5jcHAKaW5kZXggNTkwM2E4ZTUzZWQzZDU3NTBlMWM1Y2RmMDExOGQyOTIyYzVj
Y2Y5Mi4uNDBjYzhiODE0YzMwZTQxYzUyY2JjNWM5N2JiMTg4ZTQ2MjBjM2E0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkuY3BwCkBAIC00Nyw4ICs0Nyw2IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRM
IHsKIAotdXNpbmcgbmFtZXNwYWNlIEIzOwotCiBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5KCkKICAgICA6IHJvb3QobnVsbHB0ciwgImpzY1Jvb3QiKQogCkBA
IC05Miw0OCArOTAsNDkgQEAgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6fkFic3RyYWN0SGVhcFJl
cG9zaXRvcnkoKQogewogfQogCi12b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRl
TWVtb3J5KGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwgVmFsdWUqIHZhbHVlKQordm9pZCBBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZU1lbW9yeShjb25zdCBBYnN0cmFjdEhlYXAqIGhl
YXAsIEIzOjpWYWx1ZSogdmFsdWUpCiB7CiAgICAgbV9oZWFwRm9yTWVtb3J5LmFwcGVuZChIZWFw
Rm9yVmFsdWUoaGVhcCwgdmFsdWUpKTsKIH0KIAotdm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
OjpkZWNvcmF0ZUNDYWxsUmVhZChjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIFZhbHVlKiB2YWx1
ZSkKK3ZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVDQ2FsbFJlYWQoY29uc3Qg
QWJzdHJhY3RIZWFwKiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQogewogICAgIG1faGVhcEZvckND
YWxsUmVhZC5hcHBlbmQoSGVhcEZvclZhbHVlKGhlYXAsIHZhbHVlKSk7CiB9CiAKLXZvaWQgQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVDQ2FsbFdyaXRlKGNvbnN0IEFic3RyYWN0SGVh
cCogaGVhcCwgVmFsdWUqIHZhbHVlKQordm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNv
cmF0ZUNDYWxsV3JpdGUoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVl
KQogewogICAgIG1faGVhcEZvckNDYWxsV3JpdGUuYXBwZW5kKEhlYXBGb3JWYWx1ZShoZWFwLCB2
YWx1ZSkpOwogfQogCi12b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlUGF0Y2hw
b2ludFJlYWQoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBWYWx1ZSogdmFsdWUpCit2b2lkIEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlUGF0Y2hwb2ludFJlYWQoY29uc3QgQWJzdHJh
Y3RIZWFwKiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQogewogICAgIG1faGVhcEZvclBhdGNocG9p
bnRSZWFkLmFwcGVuZChIZWFwRm9yVmFsdWUoaGVhcCwgdmFsdWUpKTsKIH0KIAotdm9pZCBBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZVBhdGNocG9pbnRXcml0ZShjb25zdCBBYnN0cmFj
dEhlYXAqIGhlYXAsIFZhbHVlKiB2YWx1ZSkKK3ZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6
ZGVjb3JhdGVQYXRjaHBvaW50V3JpdGUoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBCMzo6VmFs
dWUqIHZhbHVlKQogewogICAgIG1faGVhcEZvclBhdGNocG9pbnRXcml0ZS5hcHBlbmQoSGVhcEZv
clZhbHVlKGhlYXAsIHZhbHVlKSk7CiB9CiAKLXZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6
ZGVjb3JhdGVGZW5jZVJlYWQoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBWYWx1ZSogdmFsdWUp
Cit2b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlRmVuY2VSZWFkKGNvbnN0IEFi
c3RyYWN0SGVhcCogaGVhcCwgQjM6OlZhbHVlKiB2YWx1ZSkKIHsKICAgICBtX2hlYXBGb3JGZW5j
ZVJlYWQuYXBwZW5kKEhlYXBGb3JWYWx1ZShoZWFwLCB2YWx1ZSkpOwogfQogCi12b2lkIEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlRmVuY2VXcml0ZShjb25zdCBBYnN0cmFjdEhlYXAq
IGhlYXAsIFZhbHVlKiB2YWx1ZSkKK3ZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3Jh
dGVGZW5jZVdyaXRlKGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwgQjM6OlZhbHVlKiB2YWx1ZSkK
IHsKICAgICBtX2hlYXBGb3JGZW5jZVdyaXRlLmFwcGVuZChIZWFwRm9yVmFsdWUoaGVhcCwgdmFs
dWUpKTsKIH0KIAotdm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUZlbmNlZEFj
Y2Vzcyhjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIFZhbHVlKiB2YWx1ZSkKK3ZvaWQgQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5jZWRBY2Nlc3MoY29uc3QgQWJzdHJhY3RIZWFw
KiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQogewogICAgIG1faGVhcEZvckZlbmNlZEFjY2Vzcy5h
cHBlbmQoSGVhcEZvclZhbHVlKGhlYXAsIHZhbHVlKSk7CiB9CiAKIHZvaWQgQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeTo6Y29tcHV0ZVJhbmdlc0FuZERlY29yYXRlSW5zdHJ1Y3Rpb25zKCkKIHsKKyAg
ICB1c2luZyBuYW1lc3BhY2UgQjM7CiAgICAgcm9vdC5jb21wdXRlKCk7CiAKICAgICBpZiAodmVy
Ym9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEpJVEZpbmFsaXplci5jcHAKaW5kZXggMzZkYzQ5Y2VjMTBjNjU5NzljZjYwYTMzMmU5ZTAw
NGI0ZWM2MTBlZC4uYjI4ZGQ5YTVjMzgyMzlkN2Y4N2FkMjM2NGU3NGI5NDUxMjQxZWYzMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNwcApAQCAtMzcs
OSArMzcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKLXVzaW5nIG5h
bWVzcGFjZSBERkc7Ci0KLUpJVEZpbmFsaXplcjo6SklURmluYWxpemVyKFBsYW4mIHBsYW4pCitK
SVRGaW5hbGl6ZXI6OkpJVEZpbmFsaXplcihERkc6OlBsYW4mIHBsYW4pCiAgICAgOiBGaW5hbGl6
ZXIocGxhbikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TGluay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCmluZGV4IDY3
NmIzOTA5Yzg3ZDBkYTkwYzVkOGRiNjYwOGFkMjE0YzU5ODk2NjkuLjdjMDE4MWQ4ZDFlNGI5Mzhk
ZWU3MGFiOTFkNjYyZTA4NGMwMjkyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTGluay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5r
LmNwcApAQCAtNDEsMTAgKzQxLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwg
ewogCi11c2luZyBuYW1lc3BhY2UgREZHOwotCiB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogewor
ICAgIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAgICAgR3JhcGgmIGdyYXBoID0gc3RhdGUuZ3JhcGg7
CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBncmFwaC5tX2NvZGVCbG9jazsKICAgICBWTSYg
dm0gPSBncmFwaC5tX3ZtOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9u
cy5jcHAKaW5kZXggNDE3MTc4ZDY1ZWZkMGU4NDgzNzlkNzRlNmU2MjYzMDY1MDYxYzIwMi4uOGJj
YTU2YzA2NTk3ZTc4NDY1YzI5MjY4NGYzNmI3MmM5YjE2NzhmZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCkBAIC00MiwxMiArNDIsMTEgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCi11c2luZyBuYW1lc3BhY2UgSlNDOjpERkc7
Ci0KIGV4dGVybiAiQyIgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvcHVsYXRlT2JqZWN0
SW5PU1IoCiAgICAgRXhlY1N0YXRlKiBleGVjLCBFeGl0VGltZU9iamVjdE1hdGVyaWFsaXphdGlv
biogbWF0ZXJpYWxpemF0aW9uLAogICAgIEVuY29kZWRKU1ZhbHVlKiBlbmNvZGVkVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlKiB2YWx1ZXMpCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIERGRzsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29k
ZUJsb2NrKCk7CiAKQEAgLTEyMCw2ICsxMTksNyBAQCBleHRlcm4gIkMiIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKAogZXh0ZXJuICJDIiBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUigKICAgICBFeGVjU3Rh
dGUqIGV4ZWMsIEV4aXRUaW1lT2JqZWN0TWF0ZXJpYWxpemF0aW9uKiBtYXRlcmlhbGl6YXRpb24s
IEVuY29kZWRKU1ZhbHVlKiB2YWx1ZXMpCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIERGRzsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogCiAgICAgLy8gV2UgY2Fubm90IEdDLiBXZSd2ZSBnb3Qg
cG9pbnRlcnMgaW4gZXZpbCBwbGFjZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHAKaW5kZXggMDFjMDZlNzVjNWIwMGVkMTA2OGU3
YjRjZjFhNzI4YzU5NGNmOTFlMi4uYzVhNmM2Njk3NTkyZjc5NDBlZmZhNTU2MTllZjMzYTBkNTAx
ZDZlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0
cmFpbnRTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25z
dHJhaW50U2V0LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIk1hcmtpbmdDb25zdHJh
aW50U2V0LmgiCiAKICNpbmNsdWRlICJPcHRpb25zLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CiAjaW5jbHVkZSA8d3RmL1RpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKQEAgLTEwNiwxNSArMTA3LDE1IEBAIHZvaWQgTWFya2luZ0NvbnN0cmFpbnRTZXQ6
OmRpZFN0YXJ0TWFya2luZygpCiAgICAgbV9pdGVyYXRpb24gPSAxOwogfQogCi12b2lkIE1hcmtp
bmdDb25zdHJhaW50U2V0OjphZGQoQ1N0cmluZyBhYmJyZXZpYXRlZE5hbWUsIENTdHJpbmcgbmFt
ZSwgRnVuY3Rpb248dm9pZChTbG90VmlzaXRvciYsIGNvbnN0IFZpc2l0aW5nVGltZW91dCYpPiBm
dW5jdGlvbiwgQ29uc3RyYWludFZvbGF0aWxpdHkgdm9sYXRpbGl0eSkKK3ZvaWQgTWFya2luZ0Nv
bnN0cmFpbnRTZXQ6OmFkZChDU3RyaW5nIGFiYnJldmlhdGVkTmFtZSwgQ1N0cmluZyBuYW1lLCA6
OkZ1bmN0aW9uPHZvaWQoU2xvdFZpc2l0b3ImLCBjb25zdCBWaXNpdGluZ1RpbWVvdXQmKT4gZnVu
Y3Rpb24sIENvbnN0cmFpbnRWb2xhdGlsaXR5IHZvbGF0aWxpdHkpCiB7CiAgICAgYWRkKHN0ZDo6
bWFrZV91bmlxdWU8TWFya2luZ0NvbnN0cmFpbnQ+KFdURk1vdmUoYWJicmV2aWF0ZWROYW1lKSwg
V1RGTW92ZShuYW1lKSwgV1RGTW92ZShmdW5jdGlvbiksIHZvbGF0aWxpdHkpKTsKIH0KIAogdm9p
ZCBNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKAogICAgIENTdHJpbmcgYWJicmV2aWF0ZWROYW1l
LCBDU3RyaW5nIG5hbWUsCi0gICAgRnVuY3Rpb248dm9pZChTbG90VmlzaXRvciYsIGNvbnN0IFZp
c2l0aW5nVGltZW91dCYpPiBleGVjdXRlRnVuY3Rpb24sCi0gICAgRnVuY3Rpb248ZG91YmxlKFNs
b3RWaXNpdG9yJik+IHF1aWNrV29ya0VzdGltYXRlRnVuY3Rpb24sCisgICAgOjpGdW5jdGlvbjx2
b2lkKFNsb3RWaXNpdG9yJiwgY29uc3QgVmlzaXRpbmdUaW1lb3V0Jik+IGV4ZWN1dGVGdW5jdGlv
biwKKyAgICA6OkZ1bmN0aW9uPGRvdWJsZShTbG90VmlzaXRvciYpPiBxdWlja1dvcmtFc3RpbWF0
ZUZ1bmN0aW9uLAogICAgIENvbnN0cmFpbnRWb2xhdGlsaXR5IHZvbGF0aWxpdHkpCiB7CiAgICAg
YWRkKHN0ZDo6bWFrZV91bmlxdWU8TWFya2luZ0NvbnN0cmFpbnQ+KFdURk1vdmUoYWJicmV2aWF0
ZWROYW1lKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShleGVjdXRlRnVuY3Rpb24pLCBXVEZNb3Zl
KHF1aWNrV29ya0VzdGltYXRlRnVuY3Rpb24pLCB2b2xhdGlsaXR5KSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAKaW5kZXggYWU2
ZTE4MzVlMmUyZTdhNDMwMGY3ZGZhMGExMWIyODZkM2YxZmMzMS4uZjcwNjY2ZDg5NzBmNmM3MzMx
NTkwNzgxNzdkM2VhM2M1NTgwYWI3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2VuLmNwcApAQCAtMzMsNyArMzMsOSBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAorbmFtZXNwYWNlIFNoYWRvd0NoaWNrZW5JbnRlcm5hbCB7CiBzdGF0aWMg
Y29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIHZvaWQgU2hhZG93Q2hpY2tlbjo6UGFj
a2V0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CkBAIC04Niw3ICs4OCw3IEBAIHZv
aWQgU2hhZG93Q2hpY2tlbjo6bG9nKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBQYWNr
ZXQmIHBhY2tldCkKIAogdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3Rh
dGUqIGV4ZWMpCiB7Ci0gICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoU2hhZG93Q2hpY2tlbklu
dGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2coIlJ1bm5pbmcgdXBkYXRlIG9uOiAi
LCAqdGhpcywgIlxuIik7CiAgICAgICAgIFdURlJlcG9ydEJhY2t0cmFjZSgpOwogICAgIH0KQEAg
LTExMiwxMyArMTE0LDEzIEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhl
Y1N0YXRlKiBleGVjKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGlmICh2ZXJib3NlKQor
ICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2co
IkhpZ2hlc3QgcG9pbnQgc2luY2UgbGFzdCB0aW1lOiAiLCBSYXdQb2ludGVyKGhpZ2hlc3RQb2lu
dFNpbmNlTGFzdFRpbWUpLCAiXG4iKTsKICAgICAKICAgICB3aGlsZSAoIW1fc3RhY2suaXNFbXB0
eSgpICYmIChtX3N0YWNrLmxhc3QoKS5mcmFtZSA8IGhpZ2hlc3RQb2ludFNpbmNlTGFzdFRpbWUg
fHwgbV9zdGFjay5sYXN0KCkuaXNUYWlsRGVsZXRlZCkpCiAgICAgICAgIG1fc3RhY2sucmVtb3Zl
TGFzdCgpOwogICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgICBSZXZpc2VkIHN0YWNrOiAiLCBs
aXN0RHVtcChtX3N0YWNrKSwgIlxuIik7CiAgICAgCiAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0
IHRoZSB0b3Agb2Ygc3RhY2sgaXMgbm93IHRhaWwtZGVsZXRlZC4gVGhlIHN0YWNrIG5vIGxvbmdl
ciBjb250YWlucyBhbnkKQEAgLTE0MSw3ICsxNDMsNyBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVw
ZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKICAgICB9CiAKICAgICAKLSAgICBpZiAodmVy
Ym9zZSkKKyAgICBpZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBk
YXRhTG9nKCIgICAgUmV2aXNlZCBzdGFjazogIiwgbGlzdER1bXAobV9zdGFjayksICJcbiIpOwog
ICAgIAogICAgIC8vIFRoZSBsb2ctYmFzZWQgYW5kIGV4ZWMtYmFzZWQgcnVsZXMgcmVxdWlyZSB0
aGF0IFNoYWRvd0NoaWNrZW4gd2FzIGVuYWJsZWQuIFRoZSBwb2ludCBvZgpAQCAtMTY5LDcgKzE3
MSw3IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVj
KQogICAgICAgICAgICAgfSk7CiAgICAgICAgIHN0YWNrUmlnaHROb3cucmV2ZXJzZSgpOwogICAg
ICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgU3RhY2sgcmlnaHQgbm93
OiAiLCBsaXN0RHVtcChzdGFja1JpZ2h0Tm93KSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICB1
bnNpZ25lZCBzaGFkb3dJbmRleCA9IDA7CkBAIC0xOTQsNyArMTk2LDcgQEAgdm9pZCBTaGFkb3dD
aGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIH0KICAgICAg
ICAgbV9zdGFjay5yZXNpemUoc2hhZG93SW5kZXgpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgUmV2aXNlZCBzdGFjazogIiwgbGlzdER1bXAobV9zdGFjayks
ICJcbiIpOwogICAgIH0KICAgICAKQEAgLTIwOCwxNyArMjEwLDE3IEBAIHZvaWQgU2hhZG93Q2hp
Y2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB9CiAgICAgfQog
ICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgICBIaWdoZXN0IHBvaW50IHNpbmNlIGxhc3QgdGlt
ZTogIiwgUmF3UG9pbnRlcihoaWdoZXN0UG9pbnRTaW5jZUxhc3RUaW1lKSwgIlxuIik7CiAgICAg
CiAgICAgLy8gU2V0IGV2ZXJ5dGhpbmcgdXAgc28gdGhhdCB3ZSBrbm93IHdoZXJlIHRoZSB0b3Ag
ZnJhbWUgaXMgaW4gdGhlIGxvZy4KICAgICB1bnNpZ25lZCBpbmRleEluTG9nID0gbG9nQ3Vyc29y
SW5kZXg7CiAgICAgCiAgICAgYXV0byBhZHZhbmNlSW5kZXhJbkxvZ1RvID0gWyZdIChDYWxsRnJh
bWUqIGZyYW1lLCBKU09iamVjdCogY2FsbGVlLCBDYWxsRnJhbWUqIGNhbGxlckZyYW1lKSAtPiBi
b29sIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQWR2YW5jaW5nIHRvIGZy
YW1lID0gIiwgUmF3UG9pbnRlcihmcmFtZSksICIgZnJvbSBpbmRleEluTG9nID0gIiwgaW5kZXhJ
bkxvZywgIlxuIik7CiAgICAgICAgIGlmIChpbmRleEluTG9nID4gbG9nQ3Vyc29ySW5kZXgpIHsK
LSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKFNoYWRvd0NoaWNrZW5J
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGluZy5c
biIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0yNDQsNyArMjQ2
LDcgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgICAgICBpZiAocGFja2V0LmlzUHJvbG9ndWUoKSAmJiBwYWNrZXQuZnJhbWUgPT0g
ZnJhbWUKICAgICAgICAgICAgICAgICAmJiAoIWNhbGxlZSB8fCBwYWNrZXQuY2FsbGVlID09IGNh
bGxlZSkKICAgICAgICAgICAgICAgICAmJiAoIWNhbGxlckZyYW1lIHx8IHBhY2tldC5jYWxsZXJG
cmFtZSA9PSBjYWxsZXJGcmFtZSkpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgICAgICBpZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRm91bmQgYXQgaW5kZXhJbkxvZyA9ICIsIGluZGV4
SW5Mb2csICJcbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
fQpAQCAtMjY2LDcgKzI2OCw3IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwg
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICAvLyBJdCBzZWVtcyBsaWtlIHRoZSBsYXR0ZXIgb3B0
aW9uIGlzIGxlc3MgaGFybWZ1bCwgc28gdGhhdCdzIHdoYXQgd2UgZG8uCiAgICAgICAgIGluZGV4
SW5Mb2cgPSBvbGRJbmRleEluTG9nOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgRGlkbid0IGZpbmQgaXQuXG4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH07CkBAIC0yODYsMTAgKzI4OCwxMCBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShW
TSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSB2aXNpdG9yLT5jYWxsRnJhbWUoKTsKLSAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRXhhbWluaW5nICIsIFJhd1BvaW50ZXIo
Y2FsbEZyYW1lKSwgIlxuIik7CiAgICAgICAgICAgICBpZiAoY2FsbEZyYW1lID09IGhpZ2hlc3RQ
b2ludFNpbmNlTGFzdFRpbWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgICAgICAgICBpZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGluZyBhdCAiLCBSYXdQb2ludGVyKGNhbGxGcmFt
ZSksICIgYmVjYXVzZSBpdCdzIHRoZSBoaWdoZXN0IHBvaW50IHNpbmNlIGxhc3QgdGltZS5cbiIp
OwogICAgICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CiAgICAgICAgICAg
ICB9CkBAIC0zMTIsNyArMzE0LDcgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZt
LCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBjb25kaXRpb24gcHJv
dGVjdHMgdXMgZnJvbSB0aGUgY2FzZSB3aGVyZSBhZHZhbmNlSW5kZXhJbkxvZ1RvIGRpZG4ndCBm
aW5kCiAgICAgICAgICAgICAgICAgLy8gYW55dGhpbmcuCiAgICAgICAgICAgICAgICAgJiYgbV9s
b2dbaW5kZXhJbkxvZ10uZnJhbWUgPT0gdG9QdXNoLmxhc3QoKS5mcmFtZSkgewotICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBHb2luZyB0
byBsb29wIHRocm91Z2ggdG8gZmluZCB0YWlsIGRlbGV0ZWQgZnJhbWVzIHdpdGggaW5kZXhJbkxv
ZyA9ICIsIGluZGV4SW5Mb2csICIgYW5kIHB1c2gtc3RhY2sgdG9wID0gIiwgdG9QdXNoLmxhc3Qo
KSwgIlxuIik7CiAgICAgICAgICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQobV9sb2dbaW5kZXhJbkxvZ10uZnJhbWUgPT0gdG9QdXNoLmxhc3QoKS5mcmFtZSk7
CkBAIC0zMzcsNyArMzM5LDcgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5Mb2ctLTsgLy8gU2tp
cCBvdmVyIHRoZSB0YWlsIHBhY2tldC4KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgICAgIGlmICghYWR2YW5jZUluZGV4SW5Mb2dUbyh0YWlsUGFja2V0LmZyYW1lLCBudWxs
cHRyLCBudWxscHRyKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkNhbid0IGZpbmQgcHJvbG9n
dWUgcGFja2V0IGZvciB0YWlsOiAiLCBSYXdQb2ludGVyKHRhaWxQYWNrZXQuZnJhbWUpLCAiXG4i
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIHdlcmUgdW5hYmxlIHRvIGxvY2F0ZSB0
aGUgcHJvbG9ndWUgcGFja2V0IGZvciB0aGlzIHRhaWwgcGFja2V0LgogICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gVGhpcyBpcyByYXJlIGJ1dCBjYW4gaGFwcGVuIGluIGEgc2l0dWF0aW9uIGxp
a2U6CkBAIC0zNTcsNyArMzU5LDcgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZt
LCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250
aW51ZTsKICAgICAgICAgfSk7CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoU2hhZG93Q2hp
Y2tlbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCIgICAgUHVzaGluZzogIiwg
bGlzdER1bXAodG9QdXNoKSwgIlxuIik7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gdG9Q
dXNoLnNpemUoKTsgaS0tOykKQEAgLTM3Myw3ICszNzUsNyBAQCB2b2lkIFNoYWRvd0NoaWNrZW46
OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKICAgICB9IGVsc2UKICAgICAgICAgbV9s
b2dDdXJzb3IgPSBtX2xvZzsKIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlj
a2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgICBBZnRlciBwdXNoaW5n
OiAiLCAqdGhpcywgIlxuIik7CiAKICAgICAvLyBSZW1vdmUgdGFpbCBmcmFtZXMgdW50aWwgdGhl
IG51bWJlciBvZiB0YWlsIGRlbGV0ZWQgZnJhbWVzIGlzIHNtYWxsIGVub3VnaC4KQEAgLTM5OSw3
ICs0MDEsNyBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTaGFk
b3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgICBBZnRlciBj
bGVhbi11cDogIiwgKnRoaXMsICJcbiIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0JpbmFyeVN3aXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0JpbmFyeVN3aXRjaC5jcHAKaW5kZXggZjNkZGNmY2E5MjFjOTgxZWYyOGMwYjdkNmQ3YTUxZjVl
ZmQ1Mzg4Yi4uMGVhYjU2NTE5MjUzMjllMTdiM2Y1Y2EyNWRiMTM0YWI0ZGQ5YTY3MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9CaW5hcnlTd2l0Y2guY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQmluYXJ5U3dpdGNoLmNwcApAQCAtMzMsNyArMzMsOSBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFtZXNwYWNlIEJpbmFyeVN3aXRjaEludGVybmFsIHsK
IHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogc3RhdGljIHVuc2lnbmVk
IGdsb2JhbENvdW50ZXI7IC8vIFdlIHVzZSBhIGRpZmZlcmVudCBzZWVkIGV2ZXJ5IHRpbWUgd2Ug
YXJlIGludm9rZWQuCiAKQEAgLTQ3LDcgKzQ5LDcgQEAgQmluYXJ5U3dpdGNoOjpCaW5hcnlTd2l0
Y2goR1BSUmVnIHZhbHVlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGNhc2VzLCBUeXBlIHR5cGUK
ICAgICBpZiAoY2FzZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAodmVy
Ym9zZSkKKyAgICBpZiAoQmluYXJ5U3dpdGNoSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRh
dGFMb2coIk9yaWdpbmFsIGNhc2VzOiAiLCBsaXN0RHVtcChjYXNlcyksICJcbiIpOwogICAgIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYXNlcy5zaXplKCk7ICsraSkKQEAgLTU1LDcg
KzU3LDcgQEAgQmluYXJ5U3dpdGNoOjpCaW5hcnlTd2l0Y2goR1BSUmVnIHZhbHVlLCBjb25zdCBW
ZWN0b3I8aW50NjRfdD4mIGNhc2VzLCBUeXBlIHR5cGUKICAgICAKICAgICBzdGQ6OnNvcnQobV9j
YXNlcy5iZWdpbigpLCBtX2Nhc2VzLmVuZCgpKTsKIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlm
IChCaW5hcnlTd2l0Y2hJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiU29ydGVk
IGNhc2VzOiAiLCBsaXN0RHVtcChtX2Nhc2VzKSwgIlxuIik7CiAgICAgCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMTsgaSA8IG1fY2FzZXMuc2l6ZSgpOyArK2kpCkBAIC0xMzcsMTEgKzEzOSwxMSBA
QCBib29sIEJpbmFyeVN3aXRjaDo6YWR2YW5jZShNYWNyb0Fzc2VtYmxlciYgaml0KQogCiB2b2lk
IEJpbmFyeVN3aXRjaDo6YnVpbGQodW5zaWduZWQgc3RhcnQsIGJvb2wgaGFyZFN0YXJ0LCB1bnNp
Z25lZCBlbmQpCiB7Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEJpbmFyeVN3aXRjaEludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJCdWlsZGluZyB3aXRoIHN0YXJ0ID0gIiwg
c3RhcnQsICIsIGhhcmRTdGFydCA9ICIsIGhhcmRTdGFydCwgIiwgZW5kID0gIiwgZW5kLCAiXG4i
KTsKIAogICAgIGF1dG8gYXBwZW5kID0gWyZdIChjb25zdCBCcmFuY2hDb2RlJiBjb2RlKSB7Ci0g
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQmluYXJ5U3dpdGNoSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCI9PT4gIiwgY29kZSwgIlxuIik7CiAgICAgICAg
IG1fYnJhbmNoZXMuYXBwZW5kKGNvZGUpOwogICAgIH07CkBAIC0xNTksNyArMTYxLDcgQEAgdm9p
ZCBCaW5hcnlTd2l0Y2g6OmJ1aWxkKHVuc2lnbmVkIHN0YXJ0LCBib29sIGhhcmRTdGFydCwgdW5z
aWduZWQgZW5kKQogICAgIGNvbnN0IHVuc2lnbmVkIGxlYWZUaHJlc2hvbGQgPSAzOwogICAgIAog
ICAgIGlmIChzaXplIDw9IGxlYWZUaHJlc2hvbGQpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgIGlmIChCaW5hcnlTd2l0Y2hJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRh
dGFMb2coIkl0J3MgYSBsZWFmLlxuIik7CiAgICAgICAgIAogICAgICAgICAvLyBJdCB0dXJucyBv
dXQgdGhhdCBmb3IgZXhhY3RseSB0aHJlZSBjYXNlcyBvciBsZXNzLCBpdCdzIGJldHRlciB0byBq
dXN0IGNvbXBhcmUgZWFjaApAQCAtMTg2LDcgKzE4OCw3IEBAIHZvaWQgQmluYXJ5U3dpdGNoOjpi
dWlsZCh1bnNpZ25lZCBzdGFydCwgYm9vbCBoYXJkU3RhcnQsIHVuc2lnbmVkIGVuZCkKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAo
QmluYXJ5U3dpdGNoSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJhbGxD
b25zZWN1dGl2ZSA9ICIsIGFsbENvbnNlY3V0aXZlLCAiXG4iKTsKICAgICAgICAgCiAgICAgICAg
IFZlY3Rvcjx1bnNpZ25lZCwgMz4gbG9jYWxDYXNlSW5kaWNlczsKQEAgLTIxNCw3ICsyMTYsNyBA
QCB2b2lkIEJpbmFyeVN3aXRjaDo6YnVpbGQodW5zaWduZWQgc3RhcnQsIGJvb2wgaGFyZFN0YXJ0
LCB1bnNpZ25lZCBlbmQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAodmVyYm9z
ZSkKKyAgICBpZiAoQmluYXJ5U3dpdGNoSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFM
b2coIkl0J3Mgbm90IGEgbGVhZi5cbiIpOwogICAgICAgICAKICAgICAvLyBUaGVyZSBhcmUgdHdv
IGRpZmZlcmVudCBzdHJhdGVnaWVzIHdlIGNvdWxkIGNvbnNpZGVyIGhlcmU6CkBAIC0zMTQsNyAr
MzE2LDcgQEAgdm9pZCBCaW5hcnlTd2l0Y2g6OmJ1aWxkKHVuc2lnbmVkIHN0YXJ0LCBib29sIGhh
cmRTdGFydCwgdW5zaWduZWQgZW5kKQogICAgICAgICAKICAgICB1bnNpZ25lZCBtZWRpYW5JbmRl
eCA9IChzdGFydCArIGVuZCkgLyAyOwogCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEJpbmFy
eVN3aXRjaEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJtZWRpYW5JbmRleCA9
ICIsIG1lZGlhbkluZGV4LCAiXG4iKTsKIAogICAgIC8vIFdlIHdhbnQgbWVkaWFuSW5kZXggdG8g
cG9pbnQgdG8gdGhlIHRoaW5nIHdlIHdpbGwgZG8gYSBsZXNzLXRoYW4gY29tcGFyZSBhZ2FpbnN0
LiBXZSB3YW50CkBAIC0zNDcsNyArMzQ5LDcgQEAgdm9pZCBCaW5hcnlTd2l0Y2g6OmJ1aWxkKHVu
c2lnbmVkIHN0YXJ0LCBib29sIGhhcmRTdGFydCwgdW5zaWduZWQgZW5kKQogICAgIFJFTEVBU0Vf
QVNTRVJUKG1lZGlhbkluZGV4ID4gc3RhcnQpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1lZGlhbklu
ZGV4ICsgMSA8IGVuZCk7CiAgICAgICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChCaW5h
cnlTd2l0Y2hJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiZml4ZWQgbWVkaWFu
SW5kZXggPSAiLCBtZWRpYW5JbmRleCwgIlxuIik7CiAKICAgICBhcHBlbmQoQnJhbmNoQ29kZShM
ZXNzVGhhblRvUHVzaCwgbWVkaWFuSW5kZXgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAKaW5kZXggMWU0OWYyZjg1MzI1OGUzOTQxNjFjN2M0NDAwMzk5MzNmYWFh
OTIxYy4uYWQ4NjlmMjBlMmU0ZDFiOWFlMGRhNzg3NDgyZmI2ZmU3ZDI4YWZhYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKQEAgLTIyNSw3ICsyMjUsOSBAQCB2
b2lkIERhdGE6OmZpbmFsaXplU3RhdHMoKQogfQogCiAjaWYgRU5BQkxFKExMSU5UX1NUQVRTKQor
bmFtZXNwYWNlIExMSW50RGF0YUludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2VT
dGF0cyA9IGZhbHNlOworfQogCiBzdGF0aWMgYm9vbCBjb21wYXJlU3RhdHMoY29uc3QgT3Bjb2Rl
U3RhdHMmIGEsIGNvbnN0IE9wY29kZVN0YXRzJiBiKQogewpAQCAtMjgzLDcgKzI4NSw3IEBAIHZv
aWQgRGF0YTo6bG9hZFN0YXRzKCkKICAgICB1bnNpZ25lZCBpbmRleDsKICAgICBjaGFyIG9wY29k
ZU5hbWVbMTAwXTsKICAgICB3aGlsZSAoZnNjYW5mKGZpbGUsICJbJXVdOiBmYXN0OiV6dSBzbG93
OiV6dSBpZDoldSAlc1xuIiwgJmluZGV4LCAmbG9hZGVkLmNvdW50LCAmbG9hZGVkLnNsb3dQYXRo
Q291bnQsICZsb2FkZWQuaWQsIG9wY29kZU5hbWUpICE9IEVPRikgewotICAgICAgICBpZiAodmVy
Ym9zZVN0YXRzKQorICAgICAgICBpZiAoTExJbnREYXRhSW50ZXJuYWw6OnZlcmJvc2VTdGF0cykK
ICAgICAgICAgICAgIGRhdGFMb2dGKCJsb2FkZWQgWyV1XTogZmFzdCAlenUgc2xvdyAlenUgaWQ6
JXUgJXNcbiIsIGluZGV4LCBsb2FkZWQuY291bnQsIGxvYWRlZC5zbG93UGF0aENvdW50LCBsb2Fk
ZWQuaWQsIG9wY29kZU5hbWUpOwogCiAgICAgICAgIE9wY29kZVN0YXRzJiBzdGF0cyA9IG9wY29k
ZVN0YXRzKGxvYWRlZC5pZCk7CkBAIC0yOTEsNyArMjkzLDcgQEAgdm9pZCBEYXRhOjpsb2FkU3Rh
dHMoKQogICAgICAgICBzdGF0cy5zbG93UGF0aENvdW50ID0gbG9hZGVkLnNsb3dQYXRoQ291bnQ7
CiAgICAgfQogCi0gICAgaWYgKHZlcmJvc2VTdGF0cykgeworICAgIGlmIChMTEludERhdGFJbnRl
cm5hbDo6dmVyYm9zZVN0YXRzKSB7CiAgICAgICAgIGRhdGFMb2dGKCJBZnRlciBsb2FkaW5nIGZy
b20gJXMsICIsIGZpbGVuYW1lKTsKICAgICAgICAgZHVtcFN0YXRzKCk7CiAgICAgfQpAQCAtMzMw
LDcgKzMzMiw3IEBAIHZvaWQgRGF0YTo6c2F2ZVN0YXRzKCkKICAgICAgICAgaWYgKCFzdGF0cy5j
b3VudCAmJiAhc3RhdHMuc2xvd1BhdGhDb3VudCkKICAgICAgICAgICAgIGJyZWFrOyAvLyBzdGF0
cyBhcmUgc29ydGVkLiBJZiB3ZSBlbmNvdW50ZXJlZCAwIGNvdW50cywgdGhlbiB0aGVyZSBhcmUg
bm8gbW9yZSBub24temVybyBjb3VudHMuCiAKLSAgICAgICAgaWYgKHZlcmJvc2VTdGF0cykKKyAg
ICAgICAgaWYgKExMSW50RGF0YUludGVybmFsOjp2ZXJib3NlU3RhdHMpCiAgICAgICAgICAgICBk
YXRhTG9nRigic2F2ZWQgWyV1XTogZmFzdDolenUgc2xvdzolenUgaWQ6JXUgJXNcbiIsIGluZGV4
LCBzdGF0cy5jb3VudCwgc3RhdHMuc2xvd1BhdGhDb3VudCwgc3RhdHMuaWQsIG9wY29kZU5hbWVz
W3N0YXRzLmlkXSk7CiAKICAgICAgICAgZnByaW50ZihmaWxlLCAiWyV1XTogZmFzdDolenUgc2xv
dzolenUgaWQ6JXUgJXNcbiIsIGluZGV4LCBzdGF0cy5jb3VudCwgc3RhdHMuc2xvd1BhdGhDb3Vu
dCwgc3RhdHMuaWQsIG9wY29kZU5hbWVzW3N0YXRzLmlkXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggOGY3MTE3YjdmNjE0MmJh
MDZhZTcxY2U3Y2U2ZGRmM2ExNjdlNzcxNy4uM2I3MWEzMDk2N2VhMzk4ZDU5MjkyYjM5OWNiM2Vk
YjU2MDVhNGIxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
UHJvdG90eXBlLmNwcApAQCAtMTM2Niw3ICsxMzY2LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNBcHBlbmRNZW1jcHkoRXhlY1N0YXRlKiBleGVj
KQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSBBcnJheVByb3RvdHlwZS5jb25zdHJ1Y3RvciBX
YXRjaHBvaW50IC0tLS0tLS0tLS0tLS0tLS0tLQogCituYW1lc3BhY2UgQXJyYXlQcm90b3R5cGVJ
bnRlcm5hbCB7CiBzdGF0aWMgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIEFycmF5
UHJvdG90eXBlQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5V2F0Y2hwb2ludCA6IHB1YmxpYyBBZGFw
dGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlIHsKIHB1YmxpYzoKQEAgLTEz
ODgsNyArMTM5MCw3IEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OnRyeUluaXRpYWxpemVTcGVjaWVz
V2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQXJyYXlQcm90b3R5
cGVJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiSW5pdGlhbGl6aW5nIEFycmF5
IHNwZWNpZXMgd2F0Y2hwb2ludHMgZm9yIEFycmF5LnByb3RvdHlwZTogIiwgcG9pbnRlckR1bXAo
dGhpcyksICIgd2l0aCBzdHJ1Y3R1cmU6ICIsIHBvaW50ZXJEdW1wKHRoaXMtPnN0cnVjdHVyZSgp
KSwgIlxuYW5kIEFycmF5OiAiLCBwb2ludGVyRHVtcCh0aGlzLT5nbG9iYWxPYmplY3QoKS0+YXJy
YXlDb25zdHJ1Y3RvcigpKSwgIiB3aXRoIHN0cnVjdHVyZTogIiwgcG9pbnRlckR1bXAodGhpcy0+
Z2xvYmFsT2JqZWN0KCktPmFycmF5Q29uc3RydWN0b3IoKS0+c3RydWN0dXJlKCkpLCAiXG4iKTsK
ICAgICAvLyBGaXJzdCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBBcnJheS5wcm90b3R5
cGUuY29uc3RydWN0b3IgcHJvcGVydHkgcG9pbnRzIHRvIEFycmF5CiAgICAgLy8gYW5kIHRoYXQg
QXJyYXlbU3ltYm9sLnNwZWNpZXNdIGlzIHRoZSBwcmltb3JkaWFsIEdldHRlclNldHRlci4KQEAg
LTE0NjYsNyArMTQ2OCw3IEBAIHZvaWQgQXJyYXlQcm90b3R5cGVBZGFwdGl2ZUluZmVycmVkUHJv
cGVydHlXYXRjaHBvaW50OjpoYW5kbGVGaXJlKGNvbnN0IEZpcmVEZXRhCiAKICAgICBTdHJpbmdG
aXJlRGV0YWlsIHN0cmluZ0RldGFpbChvdXQudG9DU3RyaW5nKCkuZGF0YSgpKTsKIAotICAgIGlm
ICh2ZXJib3NlKQorICAgIGlmIChBcnJheVByb3RvdHlwZUludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICBXVEY6OmRhdGFMb2coc3RyaW5nRGV0YWlsLCAiXG4iKTsKIAogICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2FycmF5UHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKaW5kZXgg
NTQ5M2Y4ZjcwYTM1NzMyMWYxNjdkZTFjNTJiNGYzNTI5OTg4MDQ4Yy4uZmM4Yjg0ODJiZWZkNmIw
YzA3NGI0ZWU4ZmQyN2JhYTIyMjU4YjA4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKQEAgLTEwOCw0MSArMTA4LDYgQEAgc3RhdGljIHZv
aWQgYXBwZW5kU291cmNlVG9FcnJvcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRXJyb3JJbnN0YW5j
ZSogZXhjZXB0aW9uLAogCiB9CiAKLWNsYXNzIEZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVi
bG9ja0Z1bmN0b3IgewotcHVibGljOgotICAgIEZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVi
bG9ja0Z1bmN0b3IoQ2FsbEZyYW1lKiBzdGFydENhbGxGcmFtZSkKLSAgICAgICAgOiBtX3N0YXJ0
Q2FsbEZyYW1lKHN0YXJ0Q2FsbEZyYW1lKQotICAgICAgICAsIG1fZm91bmRDYWxsRnJhbWUobnVs
bHB0cikKLSAgICAgICAgLCBtX2ZvdW5kU3RhcnRDYWxsRnJhbWUoZmFsc2UpCi0gICAgICAgICwg
bV9pbmRleCgwKQotICAgIHsgfQotCi0gICAgU3RhY2tWaXNpdG9yOjpTdGF0dXMgb3BlcmF0b3Io
KShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpCi0gICAgewotICAgICAgICBpZiAoIW1fZm91bmRTdGFy
dENhbGxGcmFtZSAmJiAodmlzaXRvci0+Y2FsbEZyYW1lKCkgPT0gbV9zdGFydENhbGxGcmFtZSkp
Ci0gICAgICAgICAgICBtX2ZvdW5kU3RhcnRDYWxsRnJhbWUgPSB0cnVlOwotCi0gICAgICAgIGlm
IChtX2ZvdW5kU3RhcnRDYWxsRnJhbWUpIHsKLSAgICAgICAgICAgIGlmICh2aXNpdG9yLT5jYWxs
RnJhbWUoKS0+Y29kZUJsb2NrKCkpIHsKLSAgICAgICAgICAgICAgICBtX2ZvdW5kQ2FsbEZyYW1l
ID0gdmlzaXRvci0+Y2FsbEZyYW1lKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlz
aXRvcjo6RG9uZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1faW5kZXgrKzsKLSAgICAg
ICAgfQotCi0gICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwotICAgIH0KLQot
ICAgIENhbGxGcmFtZSogZm91bmRDYWxsRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZvdW5kQ2Fs
bEZyYW1lOyB9Ci0gICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9
Ci0KLXByaXZhdGU6Ci0gICAgQ2FsbEZyYW1lKiBtX3N0YXJ0Q2FsbEZyYW1lOwotICAgIENhbGxG
cmFtZSogbV9mb3VuZENhbGxGcmFtZTsKLSAgICBib29sIG1fZm91bmRTdGFydENhbGxGcmFtZTsK
LSAgICB1bnNpZ25lZCBtX2luZGV4OwotfTsKLQogdm9pZCBFcnJvckluc3RhbmNlOjpmaW5pc2hD
cmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBi
b29sIHVzZUN1cnJlbnRGcmFtZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
LmNwcAppbmRleCA3ZWYwMDA4ZDgzN2NjZjkxMzcxNGYzYTM1YzM5NTUxOTk4YjZmOTdmLi5jOTIw
YWNmNDdlODJjOTUyZThmYjZlMzA3ZDliMGZlM2Y1YTgyYmRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKQEAgLTQ5LDcg
KzQ5LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gSW50bERhdGVUaW1l
Rm9ybWF0OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxEYXRlVGltZUZvcm1hdCkgfTsKIAorbmFtZXNw
YWNlIEludGxEVEZJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgcmVsZXZhbnRF
eHRlbnNpb25LZXlzWzJdID0geyAiY2EiLCAibnUiIH07Cit9CisKIHN0YXRpYyBjb25zdCBzaXpl
X3QgaW5kZXhPZkV4dGVuc2lvbktleUNhID0gMDsKIHN0YXRpYyBjb25zdCBzaXplX3QgaW5kZXhP
ZkV4dGVuc2lvbktleU51ID0gMTsKIApAQCAtMTg5LDYgKzE5Miw3IEBAIHN0YXRpYyBTdHJpbmcg
Y2Fub25pY2FsaXplVGltZVpvbmVOYW1lKGNvbnN0IFN0cmluZyYgdGltZVpvbmVOYW1lKQogICAg
IHJldHVybiBjYW5vbmljYWw7CiB9CiAKK25hbWVzcGFjZSBJbnRsRFRGSW50ZXJuYWwgewogc3Rh
dGljIFZlY3RvcjxTdHJpbmc+IGxvY2FsZURhdGEoY29uc3QgU3RyaW5nJiBsb2NhbGUsIHNpemVf
dCBrZXlJbmRleCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBrZXlMb2NhbGVEYXRhOwpAQCAtMzE5
LDYgKzMyMyw3IEBAIHN0YXRpYyBKU09iamVjdCogdG9EYXRlVGltZU9wdGlvbnNBbnlEYXRlKEV4
ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSBvcmlnaW5hbE9wdGlvCiAgICAgLy8gOS4gUmV0dXJuIG9w
dGlvbnMuCiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9Cit9CiAKIHZvaWQgSW50bERhdGVUaW1lRm9y
bWF0OjpzZXRGb3JtYXRzRnJvbVBhdHRlcm4oY29uc3QgU3RyaW5nVmlldyYgcGF0dGVybikKIHsK
QEAgLTQzMyw3ICs0MzgsNyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURh
dGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSBsb2NhbAogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKICAgICAvLyA1LiBMZXQgb3B0aW9ucyBiZSBU
b0RhdGVUaW1lT3B0aW9ucyhvcHRpb25zLCAiYW55IiwgImRhdGUiKS4KLSAgICBKU09iamVjdCog
b3B0aW9ucyA9IHRvRGF0ZVRpbWVPcHRpb25zQW55RGF0ZShleGVjLCBvcmlnaW5hbE9wdGlvbnMp
OworICAgIEpTT2JqZWN0KiBvcHRpb25zID0gSW50bERURkludGVybmFsOjp0b0RhdGVUaW1lT3B0
aW9uc0FueURhdGUoZXhlYywgb3JpZ2luYWxPcHRpb25zKTsKICAgICAvLyA2LiBSZXR1cm5JZkFi
cnVwdChvcHRpb25zKS4KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwog
CkBAIC00NTAsNyArNDU1LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVE
YXRlVGltZUZvcm1hdChFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUgbG9jYWwKICAgICAvLyAxMS4g
TGV0IGxvY2FsZURhdGEgYmUgdGhlIHZhbHVlIG9mICVEYXRlVGltZUZvcm1hdCUuW1tsb2NhbGVE
YXRhXV0uCiAgICAgLy8gMTIuIExldCByIGJlIFJlc29sdmVMb2NhbGUoICVEYXRlVGltZUZvcm1h
dCUuW1thdmFpbGFibGVMb2NhbGVzXV0sIHJlcXVlc3RlZExvY2FsZXMsIG9wdCwgJURhdGVUaW1l
Rm9ybWF0JS5bW3JlbGV2YW50RXh0ZW5zaW9uS2V5c11dLCBsb2NhbGVEYXRhKS4KICAgICBjb25z
dCBIYXNoU2V0PFN0cmluZz4gYXZhaWxhYmxlTG9jYWxlcyA9IGV4ZWMuanNDYWxsZWUoKS0+Z2xv
YmFsT2JqZWN0KCktPmludGxEYXRlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKTsKLSAgICBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPiByZXNvbHZlZCA9IHJlc29sdmVMb2NhbGUoZXhlYywgYXZh
aWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgbG9jYWxlT3B0LCByZWxldmFudEV4dGVu
c2lvbktleXMsIFdURl9BUlJBWV9MRU5HVEgocmVsZXZhbnRFeHRlbnNpb25LZXlzKSwgbG9jYWxl
RGF0YSk7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcmVzb2x2ZWQgPSByZXNvbHZlTG9j
YWxlKGV4ZWMsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGxvY2FsZU9wdCwg
SW50bERURkludGVybmFsOjpyZWxldmFudEV4dGVuc2lvbktleXMsIFdURl9BUlJBWV9MRU5HVEgo
SW50bERURkludGVybmFsOjpyZWxldmFudEV4dGVuc2lvbktleXMpLCBJbnRsRFRGSW50ZXJuYWw6
OmxvY2FsZURhdGEpOwogCiAgICAgLy8gMTMuIFNldCBkYXRlVGltZUZvcm1hdC5bW2xvY2FsZV1d
IHRvIHRoZSB2YWx1ZSBvZiByLltbbG9jYWxlXV0uCiAgICAgbV9sb2NhbGUgPSByZXNvbHZlZC5n
ZXQodm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLnN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKaW5kZXggMjI0NzQ3OWJh
NDQ4ZGIxYTRjODE3ZDJmNzdjZmMzYzUyZjNmYzY0Yy4uYzJmYjgzNDYzYTM0NDQ3N2EwZmI0ZWZi
NGE0MzVmZTNlZTc3MjcxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdC5jcHAKQEAgLTg4LDEyICs4OCwxNCBAQCB2b2lkIEludGxOdW1i
ZXJGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2JvdW5kRm9ybWF0KTsKIH0KIAor
bmFtZXNwYWNlIEludGxORkludGVybmFsIHsKIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBsb2NhbGVE
YXRhKGNvbnN0IFN0cmluZyYgbG9jYWxlLCBzaXplX3Qga2V5SW5kZXgpCiB7CiAgICAgLy8gOS4x
IEludGVybmFsIHNsb3RzIG9mIFNlcnZpY2UgQ29uc3RydWN0b3JzICYgMTEuMi4zIEludGVybmFs
IHNsb3RzIChFQ01BLTQwMiAyLjApCiAgICAgQVNTRVJUX1VOVVNFRChrZXlJbmRleCwgIWtleUlu
ZGV4KTsgLy8gVGhlIGluZGV4IG9mIHRoZSBleHRlbnNpb24ga2V5ICJudSIgaW4gcmVsZXZhbnRF
eHRlbnNpb25LZXlzIGlzIDAuCiAgICAgcmV0dXJuIG51bWJlcmluZ1N5c3RlbXNGb3JMb2NhbGUo
bG9jYWxlKTsKIH0KK30KIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBjb21wdXRlQ3VycmVuY3lT
b3J0S2V5KGNvbnN0IFN0cmluZyYgY3VycmVuY3kpCiB7CkBAIC0xOTIsNyArMTk0LDcgQEAgdm9p
ZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVmFsdWUgbG9jYWxlcywKICAgICAvLyAxMS4gTGV0IGxvY2FsZURhdGEgYmUgJU51bWJl
ckZvcm1hdCUuW1tsb2NhbGVEYXRhXV0uCiAgICAgLy8gMTIuIExldCByIGJlIFJlc29sdmVMb2Nh
bGUoJU51bWJlckZvcm1hdCUuW1thdmFpbGFibGVMb2NhbGVzXV0sIHJlcXVlc3RlZExvY2FsZXMs
IG9wdCwgJU51bWJlckZvcm1hdCUuW1tyZWxldmFudEV4dGVuc2lvbktleXNdXSwgbG9jYWxlRGF0
YSkuCiAgICAgYXV0byYgYXZhaWxhYmxlTG9jYWxlcyA9IHN0YXRlLmpzQ2FsbGVlKCktPmdsb2Jh
bE9iamVjdCgpLT5pbnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOwotICAgIGF1dG8g
cmVzdWx0ID0gcmVzb2x2ZUxvY2FsZShzdGF0ZSwgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVk
TG9jYWxlcywgb3B0LCByZWxldmFudEV4dGVuc2lvbktleXMsIFdURl9BUlJBWV9MRU5HVEgocmVs
ZXZhbnRFeHRlbnNpb25LZXlzKSwgbG9jYWxlRGF0YSk7CisgICAgYXV0byByZXN1bHQgPSByZXNv
bHZlTG9jYWxlKHN0YXRlLCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHQs
IHJlbGV2YW50RXh0ZW5zaW9uS2V5cywgV1RGX0FSUkFZX0xFTkdUSChyZWxldmFudEV4dGVuc2lv
bktleXMpLCBJbnRsTkZJbnRlcm5hbDo6bG9jYWxlRGF0YSk7CiAKICAgICAvLyAxMy4gU2V0IG51
bWJlckZvcm1hdC5bW2xvY2FsZV1dIHRvIHRoZSB2YWx1ZSBvZiByLltbbG9jYWxlXV0uCiAgICAg
bV9sb2NhbGUgPSByZXN1bHQuZ2V0KEFTQ0lJTGl0ZXJhbCgibG9jYWxlIikpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Q29uc3RydWN0b3Jz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheUNvbnN0cnVj
dG9ycy5jcHAKaW5kZXggMGFiYzUzMDg2OTdlYjI1MzQxZmFkMTJmMDNkZTA4YzBhMWYxNWY0NS4u
NzhjOWU2NDA0ZjFiZjFkMzlkNTY0OGNkNGE0OWVjNDZjMmEwNjAwMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlDb25zdHJ1Y3Rv
cnMuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisjdW5kZWYgTUFL
RV9TX0lORk8KICNkZWZpbmUgTUFLRV9TX0lORk8odHlwZSkgXAogICAgIHRlbXBsYXRlPD4gY29u
c3QgQ2xhc3NJbmZvIEpTIyN0eXBlIyNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyJGdW5jdGlvbiIs
ICZKUyMjdHlwZSMjQ29uc3RydWN0b3I6OkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKUyMjdHlwZSMjQ29uc3RydWN0b3IpfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlQcm90b3R5cGVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVByb3RvdHlwZXMu
Y3BwCmluZGV4IDY2ZDc0ZTY5ZWNhNGYxNzI1ZTgyYzEyZWFkM2FkZGUyNGJlOTI5ZmEuLmIxNDM0
NTViMGQxMWNkMzkyZTUyMWMwYjhiMGE4MmEwMzJhODRiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwCkBA
IC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogY29uc3QgQ2xhc3NJbmZvIEpTVHlwZWRB
cnJheVZpZXdQcm90b3R5cGU6OnNfaW5mbyA9IHsiUHJvdG90eXBlIiwgJkpTVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGU6OkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwKICAgICBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUpfTsKIAorI3VuZGVmIE1BS0Vf
U19JTkZPCiAjZGVmaW5lIE1BS0VfU19JTkZPKHR5cGUpIFwKICAgICB0ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKUyMjdHlwZSMjUHJvdG90eXBlOjpzX2luZm8gPSB7I3R5cGUgIlByb3RvdHlw
ZSIsICZKUyMjdHlwZSMjUHJvdG90eXBlOjpCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlMjI3R5cGUjI1Byb3RvdHlwZSl9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5cy5jcHAKaW5kZXggZDBhOTNjNDI1
NTc0OGU3ZTU4NDFhNjc4ODFhMTEyNGE0NjY5ZDBkNi4uMDkxODlkMmM1Y2E1YjUzNWRhNDMzMzE0
NjkzNGJlY2ZkMzAzZjVjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUeXBlZEFycmF5cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlZEFycmF5cy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
KyN1bmRlZiBNQUtFX1NfSU5GTwogI2RlZmluZSBNQUtFX1NfSU5GTyh0eXBlKSBcCiAgICAgdGVt
cGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlMjI3R5cGUjI0FycmF5OjpzX2luZm8gPSB7IFwKICAg
ICAgICAgI3R5cGUgIkFycmF5IiwgJkpTIyN0eXBlIyNBcnJheTo6QmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdWxsR2V0dGVyRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TnVsbEdldHRlckZ1bmN0aW9uLmNwcAppbmRleCAzZjZmMjgyMTUzZTA0YjMzYjEwZDkzNDA5NmNk
NWIxNjI0NmYxMGNhLi5iYTQ2YjMwMmM4MmE0MmI3YmY2ZGRkODhmMDQ2ZGU0ODVkODYwMWUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsR2V0dGVyRnVuY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxHZXR0ZXJGdW5j
dGlvbi5jcHAKQEAgLTMzLDE0ICszMywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xh
c3NJbmZvIE51bGxHZXR0ZXJGdW5jdGlvbjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE51bGxHZXR0ZXJG
dW5jdGlvbikgfTsKIAorbmFtZXNwYWNlIE51bGxHZXR0ZXJGdW5jdGlvbkludGVybmFsIHsKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZXR1cm5VbmRlZmluZWQoRXhl
Y1N0YXRlKikKIHsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQorfQogCiBDYWxsVHlwZSBOdWxsR2V0dGVyRnVuY3Rpb246OmdldENhbGxEYXRhKEpTQ2VsbCos
IENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKLSAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBj
YWxsUmV0dXJuVW5kZWZpbmVkOworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IE51bGxH
ZXR0ZXJGdW5jdGlvbkludGVybmFsOjpjYWxsUmV0dXJuVW5kZWZpbmVkOwogICAgIHJldHVybiBD
YWxsVHlwZTo6SG9zdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAKaW5kZXggNTBjNWI4MGRjZjk1YTUzOTBkMWU2MDEw
MWVlYmQ2YjU2NjY1OWYyOC4uNmFmMGQxYTg1ZGYyMGZmMDgxYTk4N2NmZGRkYTY3ZDUxYWI2ZTBl
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1
bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVy
RnVuY3Rpb24uY3BwCkBAIC03MCw2ICs3MCw3IEBAIHN0YXRpYyBib29sIGNhbGxlcklzU3RyaWN0
KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gaXRlci5jYWxsZXJJc1N0cmljdCgpOwogfQog
CituYW1lc3BhY2UgTnVsbFNldHRlckZ1bmN0aW9uSW50ZXJuYWwgewogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJldHVyblVuZGVmaW5lZChFeGVjU3RhdGUqIGV4ZWMp
CiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTc5LDEwICs4MCwxMSBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUmV0dXJuVW5kZWZpbmVkKEV4ZWNTdGF0
ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJTZXR0aW5nIGEgcHJvcGVydHkgdGhhdCBoYXMgb25s
eSBhIGdldHRlciIpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KK30KIAogQ2FsbFR5cGUgTnVsbFNldHRlckZ1bmN0aW9uOjpnZXRDYWxsRGF0YShKU0Nl
bGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7Ci0gICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9u
ID0gY2FsbFJldHVyblVuZGVmaW5lZDsKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBO
dWxsU2V0dGVyRnVuY3Rpb25JbnRlcm5hbDo6Y2FsbFJldHVyblVuZGVmaW5lZDsKICAgICByZXR1
cm4gQ2FsbFR5cGU6Okhvc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCmluZGV4IGMxN2I1ZWJkZmExMmEwZjNlY2I2MmU2Njhh
NjY5ZjNiYWQ3ZTdjNTguLjYxM2NkMDkyNWViNTY3MDE5ZDA0ZDhlNTk0OGZhMjM4Zjk0YjA5NDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBl
LmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL2R0b2EvZG91YmxlLWNvbnZlcnNpb24uaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdU
Rjo6ZG91YmxlX2NvbnZlcnNpb247Cit1c2luZyBEb3VibGVUb1N0cmluZ0NvbnZlcnRlciA9IFdU
Rjo6ZG91YmxlX2NvbnZlcnNpb246OkRvdWJsZVRvU3RyaW5nQ29udmVydGVyOwogCiAvLyBUbyBh
dm9pZCBjb25mbGljdCB3aXRoIFdURjo6U3RyaW5nQnVpbGRlci4KIHR5cGVkZWYgV1RGOjpkb3Vi
bGVfY29udmVyc2lvbjo6U3RyaW5nQnVpbGRlciBEb3VibGVDb252ZXJzaW9uU3RyaW5nQnVpbGRl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VEZWZl
cnJlZFRpbWVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VEZWZl
cnJlZFRpbWVyLmNwcAppbmRleCAzZGNhZWFhZmU1YjM4ZmJhNWJhOGFmOTc2NjBmNTFiYzY1OWZk
MjQ1Li4wODc4MDQ2OTVjZGYzNWE3NDk0YmJkNTg5NDQyOTA0ZWI5Y2E3MDM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlRGVmZXJyZWRUaW1lci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZURlZmVycmVkVGltZXIu
Y3BwCkBAIC0zNCw3ICszNCw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCituYW1lc3BhY2UgUHJv
bWlzZURlZmVycmVkVGltZXJJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7Cit9CiAKIFByb21pc2VEZWZlcnJlZFRpbWVyOjpQcm9taXNlRGVmZXJyZWRUaW1lcihW
TSYgdm0pCiAgICAgOiBCYXNlKCZ2bSkKQEAgLTU1LDcgKzU3LDcgQEAgdm9pZCBQcm9taXNlRGVm
ZXJyZWRUaW1lcjo6ZG9Xb3JrKCkKICAgICAgICAgSlNQcm9taXNlRGVmZXJyZWQqIHRpY2tldDsK
ICAgICAgICAgVGFzayB0YXNrOwogICAgICAgICBzdGQ6OnRpZSh0aWNrZXQsIHRhc2spID0gbV90
YXNrcy50YWtlTGFzdCgpOwotICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiRG9pbmcgd29y
ayBvbiBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworICAgICAgICBkYXRhTG9nTG5J
ZihQcm9taXNlRGVmZXJyZWRUaW1lckludGVybmFsOjp2ZXJib3NlLCAiRG9pbmcgd29yayBvbiBw
cm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwogCiAgICAgICAgIC8vIFdlIG1heSBoYXZl
IGFscmVhZHkgY2FuY2VsZWQgdGhlc2UgcHJvbWlzZXMuCiAgICAgICAgIGlmIChtX3BlbmRpbmdQ
cm9taXNlcy5jb250YWlucyh0aWNrZXQpKSB7CkBAIC0xMDUsMTEgKzEwNywxMSBAQCB2b2lkIFBy
b21pc2VEZWZlcnJlZFRpbWVyOjphZGRQZW5kaW5nUHJvbWlzZShKU1Byb21pc2VEZWZlcnJlZCog
dGlja2V0LCBWZWN0b3I8UwogCiAgICAgYXV0byByZXN1bHQgPSBtX3BlbmRpbmdQcm9taXNlcy5h
ZGQodGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+KCkpOwogICAgIGlmIChyZXN1bHQuaXNO
ZXdFbnRyeSkgewotICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiQWRkaW5nIG5ldyBwZW5k
aW5nIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CisgICAgICAgIGRhdGFMb2dMbklm
KFByb21pc2VEZWZlcnJlZFRpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJBZGRpbmcgbmV3IHBlbmRp
bmcgcHJvbWlzZTogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKICAgICAgICAgZGVwZW5kZW5jaWVz
LmFwcGVuZChTdHJvbmc8SlNDZWxsPigqbV92bSwgdGlja2V0KSk7CiAgICAgICAgIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGRlcGVuZGVuY2llcyk7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIkFkZGluZyBuZXcgZGVwZW5kZW5jaWVzIGZvciBw
cm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworICAgICAgICBkYXRhTG9nTG5JZihQcm9t
aXNlRGVmZXJyZWRUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQWRkaW5nIG5ldyBkZXBlbmRlbmNp
ZXMgZm9yIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CiAgICAgICAgIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUuYXBwZW5kVmVjdG9yKGRlcGVuZGVuY2llcyk7CiAgICAgfQogCkBAIC0x
MjQsNyArMTI2LDcgQEAgYm9vbCBQcm9taXNlRGVmZXJyZWRUaW1lcjo6Y2FuY2VsUGVuZGluZ1By
b21pc2UoSlNQcm9taXNlRGVmZXJyZWQqIHRpY2tldCkKICAgICBib29sIHJlc3VsdCA9IG1fcGVu
ZGluZ1Byb21pc2VzLnJlbW92ZSh0aWNrZXQpOwogCiAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAg
ZGF0YUxvZ0xuSWYodmVyYm9zZSwgIkNhbmNlbGluZyBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRp
Y2tldCkpOworICAgICAgICBkYXRhTG9nTG5JZihQcm9taXNlRGVmZXJyZWRUaW1lckludGVybmFs
Ojp2ZXJib3NlLCAiQ2FuY2VsaW5nIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CiAK
ICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVQcm9maWxlci5jcHAKaW5kZXggZTMxNWM0MTJiOTMzMzBiMDVhZjY2NDA3MGNhMTE2Y2Q1
M2U5MmRiNy4uMGY4NWVmODgyODVjMmU4YjgxZDVmZjAwYmNhYTJiOTljZjZkYzgwYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwCkBAIC0zMiw3
ICszMiw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCituYW1lc3BhY2UgVHlwZVByb2ZpbGVySW50
ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBUeXBlUHJv
ZmlsZXI6OlR5cGVQcm9maWxlcigpCiAgICAgOiBtX25leHRVbmlxdWVWYXJpYWJsZUlEKDEpCkBA
IC01OSw3ICs2MSw3IEBAIHZvaWQgVHlwZVByb2ZpbGVyOjpsb2dUeXBlc0ZvclR5cGVMb2NhdGlv
bihUeXBlTG9jYXRpb24qIGxvY2F0aW9uLCBWTSYgdm0pCiAKIHZvaWQgVHlwZVByb2ZpbGVyOjpp
bnNlcnROZXdMb2NhdGlvbihUeXBlTG9jYXRpb24qIGxvY2F0aW9uKQogewotICAgIGlmICh2ZXJi
b3NlKQorICAgIGlmIChUeXBlUHJvZmlsZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0
YUxvZ0YoIlJlZ2lzdGVyaW5nIGxvY2F0aW9uOjogZGl2b3RTdGFydDoldSwgZGl2b3RFbmQ6JXVc
biIsIGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQsIGxvY2F0aW9uLT5tX2Rpdm90RW5kKTsKIAogICAg
IGlmICghbV9idWNrZXRNYXAuY29udGFpbnMobG9jYXRpb24tPm1fc291cmNlSUQpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcAppbmRl
eCA4NWM0OWQwNDZiYWZlYWM3YzJmZGVhMjE1MjU4ZDNjNDRlZmNkMTE1Li41M2Q3M2U4OGIxNGUz
ODZiNzM3OGI4ODI0N2I3NzY5NjRmNmI1N2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHAKQEAgLTM3LDcgKzM3LDkgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKK25hbWVzcGFjZSBUeXBlUHJvZmlsZXJMb2dJbnRlcm5hbCB7CiBzdGF0
aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIHZvaWQgVHlwZVByb2ZpbGVyTG9n
Ojppbml0aWFsaXplTG9nKCkKIHsKQEAgLTU2LDcgKzU4LDcgQEAgVHlwZVByb2ZpbGVyTG9nOjp+
VHlwZVByb2ZpbGVyTG9nKCkKIHZvaWQgVHlwZVByb2ZpbGVyTG9nOjpwcm9jZXNzTG9nRW50cmll
cyhjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKICAgICBkb3VibGUgYmVmb3JlID0gMDsKLSAgICBp
ZiAodmVyYm9zZSkgeworICAgIGlmIChUeXBlUHJvZmlsZXJMb2dJbnRlcm5hbDo6dmVyYm9zZSkg
ewogICAgICAgICBkYXRhTG9nKCJQcm9jZXNzIGNhbGxlcjonIiwgcmVhc29uLCAiJyIpOwogICAg
ICAgICBiZWZvcmUgPSBjdXJyZW50VGltZU1TKCk7CiAgICAgfQpAQCAtOTUsNyArOTcsNyBAQCB2
b2lkIFR5cGVQcm9maWxlckxvZzo6cHJvY2Vzc0xvZ0VudHJpZXMoY29uc3QgU3RyaW5nJiByZWFz
b24pCiAgICAgLy8gcGF1c2VzIGFuZCBjYXVzZXMgdGhlIGNvbGxlY3RvciB0byBtYXJrIHRoZSBs
b2cuCiAgICAgbV9jdXJyZW50TG9nRW50cnlQdHIgPSBtX2xvZ1N0YXJ0UHRyOwogCi0gICAgaWYg
KHZlcmJvc2UpIHsKKyAgICBpZiAoVHlwZVByb2ZpbGVyTG9nSW50ZXJuYWw6OnZlcmJvc2UpIHsK
ICAgICAgICAgZG91YmxlIGFmdGVyID0gY3VycmVudFRpbWVNUygpOwogICAgICAgICBkYXRhTG9n
RigiIFByb2Nlc3NpbmcgdGhlIGxvZyB0b29rOiAnJWYnIG1zXG4iLCBhZnRlciAtIGJlZm9yZSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJH
ZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0
b3IuY3BwCmluZGV4IDAwYWMzYzFhZGJkN2FjODJkMjE1OTBmNjAxMjhiOTRhNDAwYzYyOGUuLmFk
N2Q2MjFlYzg3ODg1YWMwMzZkODEzMTNkNWIwZmEwOTFhNGVmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTc2LDcgKzc2LDkg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIHVzaW5nIG5hbWVzcGFjZSBCMzsK
IAogbmFtZXNwYWNlIHsKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIFdh
c21CM0lSR2VuZXJhdG9ySW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZh
bHNlOworfQogfQogCiBjbGFzcyBCM0lSR2VuZXJhdG9yIHsKQEAgLTE1NjYsOSArMTU2OCw5IEBA
IEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiwgU3RyaW5nPiBwYXJz
ZUFuZENvbXBpbGUoQ29tcGlsYXRpb25DCiAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpCiAgICAg
ICAgIHZhbGlkYXRlKHByb2NlZHVyZSwgIkFmdGVyIHBhcnNpbmc6XG4iKTsKIAotICAgIGRhdGFM
b2dJZih2ZXJib3NlLCAiUHJlIFNTQTogIiwgcHJvY2VkdXJlKTsKKyAgICBkYXRhTG9nSWYoV2Fz
bUIzSVJHZW5lcmF0b3JJbnRlcm5hbDo6dmVyYm9zZSwgIlByZSBTU0E6ICIsIHByb2NlZHVyZSk7
CiAgICAgZml4U1NBKHByb2NlZHVyZSk7Ci0gICAgZGF0YUxvZ0lmKHZlcmJvc2UsICJQb3N0IFNT
QTogIiwgcHJvY2VkdXJlKTsKKyAgICBkYXRhTG9nSWYoV2FzbUIzSVJHZW5lcmF0b3JJbnRlcm5h
bDo6dmVyYm9zZSwgIlBvc3QgU1NBOiAiLCBwcm9jZWR1cmUpOwogICAgIAogICAgIHsKICAgICAg
ICAgQjM6OnByZXBhcmVGb3JHZW5lcmF0aW9uKHByb2NlZHVyZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKaW5kZXggNTBmZWI3MzBiMDBmZGQ5ZDBmMDE2ZTM2
NjkwODEwNzIyZGJhZGIxNS4uMjJlZGQxNjAxM2U1MTk2ZmU3NGFiZGQ4NDBjNmU0YmNjOTc1MGQw
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcApAQCAtNDks
NyArNDksOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCituYW1lc3Bh
Y2UgV2FzbUJCUVBsYW5JbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFs
c2U7Cit9CiAKIEJCUVBsYW46OkJCUVBsYW4oVk0qIHZtLCBSZWY8TW9kdWxlSW5mb3JtYXRpb24+
IGluZm8sIEFzeW5jV29yayB3b3JrLCBDb21wbGV0aW9uVGFzayYmIHRhc2spCiAgICAgOiBCYXNl
KHZtLCBXVEZNb3ZlKGluZm8pLCBXVEZNb3ZlKHRhc2spKQpAQCAtODYsNyArODgsNyBAQCBjb25z
dCBjaGFyKiBCQlFQbGFuOjpzdGF0ZVN0cmluZyhTdGF0ZSBzdGF0ZSkKIHZvaWQgQkJRUGxhbjo6
bW92ZVRvU3RhdGUoU3RhdGUgc3RhdGUpCiB7CiAgICAgQVNTRVJUKHN0YXRlID49IG1fc3RhdGUp
OwotICAgIGRhdGFMb2dMbklmKHZlcmJvc2UgJiYgc3RhdGUgIT0gbV9zdGF0ZSwgIm1vdmluZyB0
byBzdGF0ZTogIiwgc3RhdGVTdHJpbmcoc3RhdGUpLCAiIGZyb20gc3RhdGU6ICIsIHN0YXRlU3Ry
aW5nKG1fc3RhdGUpKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJi
b3NlICYmIHN0YXRlICE9IG1fc3RhdGUsICJtb3ZpbmcgdG8gc3RhdGU6ICIsIHN0YXRlU3RyaW5n
KHN0YXRlKSwgIiBmcm9tIHN0YXRlOiAiLCBzdGF0ZVN0cmluZyhtX3N0YXRlKSk7CiAgICAgbV9z
dGF0ZSA9IHN0YXRlOwogfQogCkBAIC05NSw5ICs5Nyw5IEBAIGJvb2wgQkJRUGxhbjo6cGFyc2VB
bmRWYWxpZGF0ZU1vZHVsZSgpCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkluaXRpYWwpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgInN0YXJ0aW5n
IHZhbGlkYXRpb24iKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJi
b3NlLCAic3RhcnRpbmcgdmFsaWRhdGlvbiIpOwogICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1l
OwotICAgIGlmICh2ZXJib3NlIHx8IE9wdGlvbnM6OnJlcG9ydENvbXBpbGVUaW1lcygpKQorICAg
IGlmIChXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlIHx8IE9wdGlvbnM6OnJlcG9ydENvbXBp
bGVUaW1lcygpKQogICAgICAgICBzdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAog
ICAgIHsKQEAgLTExMSw3ICsxMTMsNyBAQCBib29sIEJCUVBsYW46OnBhcnNlQW5kVmFsaWRhdGVN
b2R1bGUoKQogCiAgICAgY29uc3QgYXV0byYgZnVuY3Rpb25Mb2NhdGlvbnMgPSBtX21vZHVsZUlu
Zm9ybWF0aW9uLT5mdW5jdGlvbkxvY2F0aW9uSW5CaW5hcnk7CiAgICAgZm9yICh1bnNpZ25lZCBm
dW5jdGlvbkluZGV4ID0gMDsgZnVuY3Rpb25JbmRleCA8IGZ1bmN0aW9uTG9jYXRpb25zLnNpemUo
KTsgKytmdW5jdGlvbkluZGV4KSB7Ci0gICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJQcm9j
ZXNzaW5nIGZ1bmN0aW9uIHN0YXJ0aW5nIGF0OiAiLCBmdW5jdGlvbkxvY2F0aW9uc1tmdW5jdGlv
bkluZGV4XS5zdGFydCwgIiBhbmQgZW5kaW5nIGF0OiAiLCBmdW5jdGlvbkxvY2F0aW9uc1tmdW5j
dGlvbkluZGV4XS5lbmQpOworICAgICAgICBkYXRhTG9nTG5JZihXYXNtQkJRUGxhbkludGVybmFs
Ojp2ZXJib3NlLCAiUHJvY2Vzc2luZyBmdW5jdGlvbiBzdGFydGluZyBhdDogIiwgZnVuY3Rpb25M
b2NhdGlvbnNbZnVuY3Rpb25JbmRleF0uc3RhcnQsICIgYW5kIGVuZGluZyBhdDogIiwgZnVuY3Rp
b25Mb2NhdGlvbnNbZnVuY3Rpb25JbmRleF0uZW5kKTsKICAgICAgICAgY29uc3QgdWludDhfdCog
ZnVuY3Rpb25TdGFydCA9IG1fc291cmNlICsgZnVuY3Rpb25Mb2NhdGlvbnNbZnVuY3Rpb25JbmRl
eF0uc3RhcnQ7CiAgICAgICAgIHNpemVfdCBmdW5jdGlvbkxlbmd0aCA9IGZ1bmN0aW9uTG9jYXRp
b25zW2Z1bmN0aW9uSW5kZXhdLmVuZCAtIGZ1bmN0aW9uTG9jYXRpb25zW2Z1bmN0aW9uSW5kZXhd
LnN0YXJ0OwogICAgICAgICBBU1NFUlQoZnVuY3Rpb25MZW5ndGggPD0gbV9zb3VyY2VMZW5ndGgp
OwpAQCAtMTIwLDcgKzEyMiw3IEBAIGJvb2wgQkJRUGxhbjo6cGFyc2VBbmRWYWxpZGF0ZU1vZHVs
ZSgpCiAKICAgICAgICAgYXV0byB2YWxpZGF0aW9uUmVzdWx0ID0gdmFsaWRhdGVGdW5jdGlvbihm
dW5jdGlvblN0YXJ0LCBmdW5jdGlvbkxlbmd0aCwgc2lnbmF0dXJlLCBtX21vZHVsZUluZm9ybWF0
aW9uLmdldCgpKTsKICAgICAgICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0KSB7Ci0gICAgICAgICAg
ICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgaWYgKFdhc21CQlFQbGFuSW50ZXJuYWw6OnZl
cmJvc2UpIHsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnVuY3Rp
b25MZW5ndGg7ICsraSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uU3RhcnRbaV0pKSwgIiwgIik7CiAgICAgICAg
ICAgICAgICAgZGF0YUxvZ0xuKCk7CkBAIC0xMzAsNyArMTMyLDcgQEAgYm9vbCBCQlFQbGFuOjpw
YXJzZUFuZFZhbGlkYXRlTW9kdWxlKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICh2ZXJi
b3NlIHx8IE9wdGlvbnM6OnJlcG9ydENvbXBpbGVUaW1lcygpKQorICAgIGlmIChXYXNtQkJRUGxh
bkludGVybmFsOjp2ZXJib3NlIHx8IE9wdGlvbnM6OnJlcG9ydENvbXBpbGVUaW1lcygpKQogICAg
ICAgICBkYXRhTG9nTG4oIlRvb2sgIiwgKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1l
KS5taWNyb3NlY29uZHMoKSwgIiB1cyB0byB2YWxpZGF0ZSBtb2R1bGUiKTsKIAogICAgIG1vdmVU
b1N0YXRlKFN0YXRlOjpWYWxpZGF0ZWQpOwpAQCAtMTQyLDcgKzE0NCw3IEBAIGJvb2wgQkJRUGxh
bjo6cGFyc2VBbmRWYWxpZGF0ZU1vZHVsZSgpCiB2b2lkIEJCUVBsYW46OnByZXBhcmUoKQogewog
ICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpWYWxpZGF0ZWQpOwotICAgIGRhdGFMb2dMbklm
KHZlcmJvc2UsICJTdGFydGluZyBwcmVwYXJhdGlvbiIpOworICAgIGRhdGFMb2dMbklmKFdhc21C
QlFQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJTdGFydGluZyBwcmVwYXJhdGlvbiIpOwogCiAgICAg
YXV0byB0cnlSZXNlcnZlQ2FwYWNpdHkgPSBbdGhpc10gKGF1dG8mIHZlY3Rvciwgc2l6ZV90IHNp
emUsIGNvbnN0IGNoYXIqIHdoYXQpIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCF2ZWN0b3IudHJ5
UmVzZXJ2ZUNhcGFjaXR5KHNpemUpKSkgewpAQCAtMTc0LDcgKzE3Niw3IEBAIHZvaWQgQkJRUGxh
bjo6cHJlcGFyZSgpCiAgICAgICAgIGlmIChpbXBvcnQtPmtpbmQgIT0gRXh0ZXJuYWxLaW5kOjpG
dW5jdGlvbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB1bnNpZ25lZCBpbXBvcnRG
dW5jdGlvbkluZGV4ID0gbV93YXNtVG9XYXNtRXhpdFN0dWJzLnNpemUoKTsKLSAgICAgICAgZGF0
YUxvZ0xuSWYodmVyYm9zZSwgIlByb2Nlc3NpbmcgaW1wb3J0IGZ1bmN0aW9uIG51bWJlciAiLCBp
bXBvcnRGdW5jdGlvbkluZGV4LCAiOiAiLCBtYWtlU3RyaW5nKGltcG9ydC0+bW9kdWxlKSwgIjog
IiwgbWFrZVN0cmluZyhpbXBvcnQtPmZpZWxkKSk7CisgICAgICAgIGRhdGFMb2dMbklmKFdhc21C
QlFQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJQcm9jZXNzaW5nIGltcG9ydCBmdW5jdGlvbiBudW1i
ZXIgIiwgaW1wb3J0RnVuY3Rpb25JbmRleCwgIjogIiwgbWFrZVN0cmluZyhpbXBvcnQtPm1vZHVs
ZSksICI6ICIsIG1ha2VTdHJpbmcoaW1wb3J0LT5maWVsZCkpOwogICAgICAgICBhdXRvIGJpbmRp
bmcgPSB3YXNtVG9XYXNtKGltcG9ydEZ1bmN0aW9uSW5kZXgpOwogICAgICAgICBpZiAoVU5MSUtF
TFkoIWJpbmRpbmcpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGJpbmRpbmcuZXJyb3IoKSkgewpA
QCAtMjMwLDcgKzIzMiw3IEBAIHB1YmxpYzoKIHZvaWQgQkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9u
cyhDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPj0gU3Rh
dGU6OlByZXBhcmVkKTsKLSAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiU3RhcnRpbmcgY29tcGls
YXRpb24iKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlLCAi
U3RhcnRpbmcgY29tcGlsYXRpb24iKTsKIAogICAgIGlmICghaGFzV29yaygpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yOTQsNyArMjk2LDcgQEAgdm9pZCBCQlFQbGFuOjpjb21waWxlRnVuY3Rpb25z
KENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKIHZvaWQgQkJRUGxhbjo6Y29tcGxldGUoY29uc3Qg
QWJzdHJhY3RMb2NrZXImIGxvY2tlcikKIHsKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6
Q29tcGlsZWQgfHwgbV9jdXJyZW50SW5kZXggPj0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+ZnVuY3Rp
b25Mb2NhdGlvbkluQmluYXJ5LnNpemUoKSk7Ci0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIlN0
YXJ0aW5nIENvbXBsZXRpb24iKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtQkJRUGxhbkludGVybmFs
Ojp2ZXJib3NlLCAiU3RhcnRpbmcgQ29tcGxldGlvbiIpOwogCiAgICAgaWYgKCFmYWlsZWQoKSAm
JiBtX3N0YXRlID09IFN0YXRlOjpDb21waWxlZCkgewogICAgICAgICBmb3IgKHVpbnQzMl90IGZ1
bmN0aW9uSW5kZXggPSAwOyBmdW5jdGlvbkluZGV4IDwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+ZnVu
Y3Rpb25Mb2NhdGlvbkluQmluYXJ5LnNpemUoKTsgZnVuY3Rpb25JbmRleCsrKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3Bw
CmluZGV4IGU4NmZkNDc5OTBlODg4OGQyNmZkZGZhNzM5NGU0NzZhYmNjODAxODQuLjJiMWQ4Mjhl
MjdjNzUzNTBmZGQ5NGZjMTk1Y2U2NGQ3YzFlYzVhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCkBAIC00Miw4ICs0
MiwxMCBAQAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAogbmFtZXNwYWNlIHsK
K25hbWVzcGFjZSBXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWwgewogc3RhdGljIGNvbnN0
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogfQorfQogCiBzdGF0aWMgU3RhdGljTG9jayBjb2RlTG9j
YXRpb25zTG9jazsKIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxzdGQ6OnR1cGxl
PHZvaWQqLCB2b2lkKj4+PiBjb2RlTG9jYXRpb25zOyAvLyAoc3RhcnQsIGVuZCkKQEAgLTU1LDMz
ICs1NywzMyBAQCBzdGF0aWMgYm9vbCBmYXN0SGFuZGxlckluc3RhbGxlZCB7IGZhbHNlIH07CiBz
dGF0aWMgU2lnbmFsQWN0aW9uIHRyYXBIYW5kbGVyKFNpZ25hbCwgU2lnSW5mbyYgc2lnSW5mbywg
UGxhdGZvcm1SZWdpc3RlcnMmIGNvbnRleHQpCiB7CiAgICAgdm9pZCogZmF1bHRpbmdJbnN0cnVj
dGlvbiA9IE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIoY29udGV4dCk7Ci0gICAg
ZGF0YUxvZ0xuSWYodmVyYm9zZSwgInN0YXJ0aW5nIGhhbmRsZXIgZm9yIGZhdWx0IGF0OiAiLCBS
YXdQb2ludGVyKGZhdWx0aW5nSW5zdHJ1Y3Rpb24pKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtRmF1
bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJzdGFydGluZyBoYW5kbGVyIGZvciBm
YXVsdCBhdDogIiwgUmF3UG9pbnRlcihmYXVsdGluZ0luc3RydWN0aW9uKSk7CiAKLSAgICBkYXRh
TG9nTG5JZih2ZXJib3NlLCAiSklUIG1lbW9yeSBzdGFydDogIiwgUmF3UG9pbnRlcihyZWludGVy
cHJldF9jYXN0PHZvaWQqPihzdGFydE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCkpLCAiIGVu
ZDogIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihlbmRPZkZpeGVkRXhlY3V0
YWJsZU1lbW9yeVBvb2wpKSk7CisgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxl
ckludGVybmFsOjp2ZXJib3NlLCAiSklUIG1lbW9yeSBzdGFydDogIiwgUmF3UG9pbnRlcihyZWlu
dGVycHJldF9jYXN0PHZvaWQqPihzdGFydE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCkpLCAi
IGVuZDogIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihlbmRPZkZpeGVkRXhl
Y3V0YWJsZU1lbW9yeVBvb2wpKSk7CiAgICAgLy8gRmlyc3Qgd2UgbmVlZCB0byBtYWtlIHN1cmUg
d2UgYXJlIGluIEpJVCBjb2RlIGJlZm9yZSB3ZSBjYW4gYXF1aXJlIGFueSBsb2Nrcy4gT3RoZXJ3
aXNlLAogICAgIC8vIHdlIG1pZ2h0IGhhdmUgY3Jhc2hlZCBpbiBjb2RlIHRoYXQgaXMgYWxyZWFk
eSBob2xkaW5nIG9uZSBvZiB0aGUgbG9ja3Mgd2Ugd2FudCB0byBhcXVpcmUuCiAgICAgaWYgKGlz
SklUUEMoZmF1bHRpbmdJbnN0cnVjdGlvbikpIHsKICAgICAgICAgYm9vbCBmYXVsdGVkSW5BY3Rp
dmVGYXN0TWVtb3J5ID0gZmFsc2U7CiAgICAgICAgIHsKICAgICAgICAgICAgIHZvaWQqIGZhdWx0
aW5nQWRkcmVzcyA9IHNpZ0luZm8uZmF1bHRpbmdBZGRyZXNzOwotICAgICAgICAgICAgZGF0YUxv
Z0xuSWYodmVyYm9zZSwgImNoZWNraW5nIGZhdWx0aW5nIGFkZHJlc3M6ICIsIFJhd1BvaW50ZXIo
ZmF1bHRpbmdBZGRyZXNzKSwgIiBpcyBpbiBhbiBhY3RpdmUgZmFzdCBtZW1vcnkiKTsKKyAgICAg
ICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9z
ZSwgImNoZWNraW5nIGZhdWx0aW5nIGFkZHJlc3M6ICIsIFJhd1BvaW50ZXIoZmF1bHRpbmdBZGRy
ZXNzKSwgIiBpcyBpbiBhbiBhY3RpdmUgZmFzdCBtZW1vcnkiKTsKICAgICAgICAgICAgIGZhdWx0
ZWRJbkFjdGl2ZUZhc3RNZW1vcnkgPSBXYXNtOjpNZW1vcnk6OmFkZHJlc3NJc0luQWN0aXZlRmFz
dE1lbW9yeShmYXVsdGluZ0FkZHJlc3MpOwogICAgICAgICB9CiAgICAgICAgIGlmIChmYXVsdGVk
SW5BY3RpdmVGYXN0TWVtb3J5KSB7Ci0gICAgICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAi
Zm91bmQgYWN0aXZlIGZhc3QgbWVtb3J5IGZvciBmYXVsdGluZyBhZGRyZXNzIik7CisgICAgICAg
ICAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2Us
ICJmb3VuZCBhY3RpdmUgZmFzdCBtZW1vcnkgZm9yIGZhdWx0aW5nIGFkZHJlc3MiKTsKICAgICAg
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGNvZGVMb2NhdGlvbnNMb2NrKTsKICAgICAgICAgICAg
IGZvciAoYXV0byByYW5nZSA6IGNvZGVMb2NhdGlvbnMuZ2V0KCkpIHsKICAgICAgICAgICAgICAg
ICB2b2lkKiBzdGFydDsKICAgICAgICAgICAgICAgICB2b2lkKiBlbmQ7CiAgICAgICAgICAgICAg
ICAgc3RkOjp0aWUoc3RhcnQsIGVuZCkgPSByYW5nZTsKLSAgICAgICAgICAgICAgICBkYXRhTG9n
TG5JZih2ZXJib3NlLCAiZnVuY3Rpb24gc3RhcnQ6ICIsIFJhd1BvaW50ZXIoc3RhcnQpLCAiIGVu
ZDogIiwgUmF3UG9pbnRlcihlbmQpKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihXYXNt
RmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJmdW5jdGlvbiBzdGFydDogIiwg
UmF3UG9pbnRlcihzdGFydCksICIgZW5kOiAiLCBSYXdQb2ludGVyKGVuZCkpOwogICAgICAgICAg
ICAgICAgIGlmIChzdGFydCA8PSBmYXVsdGluZ0luc3RydWN0aW9uICYmIGZhdWx0aW5nSW5zdHJ1
Y3Rpb24gPCBlbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwg
ImZvdW5kIG1hdGNoIik7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVs
dFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZvdW5kIG1hdGNoIik7CiAgICAgICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBleGNlcHRpb25TdHViID0gVGh1bmtz
OjpzaW5nbGV0b24oKS5leGlzdGluZ1N0dWIodGhyb3dFeGNlcHRpb25Gcm9tV2FzbVRodW5rR2Vu
ZXJhdG9yKTsKICAgICAgICAgICAgICAgICAgICAgLy8gSWYgZm9yIHdoYXRldmVyIHJlYXNvbiB3
ZSBkb24ndCBoYXZlIGEgc3R1YiB0aGVuIHdlIHNob3VsZCBqdXN0IHRyZWF0IHRoaXMgbGlrZSBh
IHJlZ3VsYXIgY3Jhc2guCiAgICAgICAgICAgICAgICAgICAgIGlmICghZXhjZXB0aW9uU3R1YikK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nTG5JZih2ZXJib3NlLCAiZm91bmQgc3R1YjogIiwgUmF3UG9pbnRlcihleGNlcHRpb25TdHVi
LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZvdW5kIHN0
dWI6ICIsIFJhd1BvaW50ZXIoZXhjZXB0aW9uU3R1Yi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSkpOwogICAgICAgICAgICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6YXJndW1lbnRQb2ludGVy
PDE+KGNvbnRleHQpID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oRXhjZXB0aW9uVHlwZTo6T3V0
T2ZCb3VuZHNNZW1vcnlBY2Nlc3MpOwogICAgICAgICAgICAgICAgICAgICBNYWNoaW5lQ29udGV4
dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRleHQpID0gZXhjZXB0aW9uU3R1Yi5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNpZ25hbEFjdGlv
bjo6SGFuZGxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21P
TUdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcApp
bmRleCA1OTE4ZjkyYmI4MGJiZGVlNTQwMTA0NzEzMWQ4MzJiZDE5NmJmNzViLi43NGNmNjUzNDk3
NTI1Y2UyNjFkNDBjNzJjNDYyM2FjZDgwZjY1Y2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU9NR1BsYW4uY3BwCkBAIC00Nyw3ICs0Nyw5IEBACiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgV2FzbSB7CiAKK25hbWVzcGFjZSBXYXNtT01HUGxhbkludGVybmFsIHsKIHN0
YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogT01HUGxhbjo6T01HUGxhbihS
ZWY8TW9kdWxlPiBtb2R1bGUsIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIE1lbW9yeU1vZGUgbW9k
ZSwgQ29tcGxldGlvblRhc2smJiB0YXNrKQogICAgIDogQmFzZShudWxscHRyLCBtYWtlUmVmKGNv
bnN0X2Nhc3Q8TW9kdWxlSW5mb3JtYXRpb24mPihtb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkp
KSwgV1RGTW92ZSh0YXNrKSkKQEAgLTU4LDcgKzYwLDcgQEAgT01HUGxhbjo6T01HUGxhbihSZWY8
TW9kdWxlPiBtb2R1bGUsIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIE1lbW9yeU1vZGUgbW9kZSwg
Q28KICAgICBzZXRNb2RlKG1vZGUpOwogICAgIEFTU0VSVChtX2NvZGVCbG9jay0+cnVubmFibGUo
KSk7CiAgICAgQVNTRVJUKG1fY29kZUJsb2NrLnB0cigpID09IG1fbW9kdWxlLT5jb2RlQmxvY2tG
b3IobV9tb2RlKSk7Ci0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIlN0YXJ0aW5nIE9NRyBwbGFu
IGZvciAiLCBmdW5jdGlvbkluZGV4LCAiIG9mIG1vZHVsZTogIiwgUmF3UG9pbnRlcigmbV9tb2R1
bGUuZ2V0KCkpKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtT01HUGxhbkludGVybmFsOjp2ZXJib3Nl
LCAiU3RhcnRpbmcgT01HIHBsYW4gZm9yICIsIGZ1bmN0aW9uSW5kZXgsICIgb2YgbW9kdWxlOiAi
LCBSYXdQb2ludGVyKCZtX21vZHVsZS5nZXQoKSkpOwogfQogCiB2b2lkIE9NR1BsYW46Ondvcmso
Q29tcGlsYXRpb25FZmZvcnQpCkBAIC0xMzgsOSArMTQwLDkgQEAgdm9pZCBPTUdQbGFuOjp3b3Jr
KENvbXBpbGF0aW9uRWZmb3J0KQogCiAgICAgICAgIGF1dG8gcmVwYXRjaENhbGxzID0gWyZdIChj
b25zdCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mICBjYWxsc2l0ZXMpIHsKICAgICAg
ICAgICAgIGZvciAoYXV0byYgY2FsbCA6IGNhbGxzaXRlcykgewotICAgICAgICAgICAgICAgIGRh
dGFMb2dMbklmKHZlcmJvc2UsICJDb25zaWRlcmluZyByZXBhdGNoaW5nIGNhbGwgYXQ6ICIsIFJh
d1BvaW50ZXIoY2FsbC5jYWxsTG9jYXRpb24uZGF0YUxvY2F0aW9uKCkpLCAiIHRoYXQgdGFyZ2V0
cyAiLCBjYWxsLmZ1bmN0aW9uSW5kZXhTcGFjZSk7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xu
SWYoV2FzbU9NR1BsYW5JbnRlcm5hbDo6dmVyYm9zZSwgIkNvbnNpZGVyaW5nIHJlcGF0Y2hpbmcg
Y2FsbCBhdDogIiwgUmF3UG9pbnRlcihjYWxsLmNhbGxMb2NhdGlvbi5kYXRhTG9jYXRpb24oKSks
ICIgdGhhdCB0YXJnZXRzICIsIGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlKTsKICAgICAgICAgICAg
ICAgICBpZiAoY2FsbC5mdW5jdGlvbkluZGV4U3BhY2UgPT0gZnVuY3Rpb25JbmRleFNwYWNlKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJSZXBhdGNoaW5nIGNh
bGwgYXQ6ICIsIFJhd1BvaW50ZXIoY2FsbC5jYWxsTG9jYXRpb24uZGF0YUxvY2F0aW9uKCkpLCAi
IHRvICIsIFJhd1BvaW50ZXIoZW50cnlwb2ludCkpOworICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nTG5JZihXYXNtT01HUGxhbkludGVybmFsOjp2ZXJib3NlLCAiUmVwYXRjaGluZyBjYWxsIGF0
OiAiLCBSYXdQb2ludGVyKGNhbGwuY2FsbExvY2F0aW9uLmRhdGFMb2NhdGlvbigpKSwgIiB0byAi
LCBSYXdQb2ludGVyKGVudHJ5cG9pbnQpKTsKICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGF0Y2hOZWFyQ2FsbChjYWxsLmNhbGxMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFi
ZWwoZW50cnlwb2ludCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTE1
Niw3ICsxNTgsNyBAQCB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGlsYXRpb25FZmZvcnQpCiAgICAg
ICAgIHJlcGF0Y2hDYWxscyh1bmxpbmtlZENhbGxzKTsKICAgICB9CiAKLSAgICBkYXRhTG9nTG5J
Zih2ZXJib3NlLCAiRmluaXNoZWQgd2l0aCB0aWVyIHVwIGNvdW50IGF0OiAiLCBtX2NvZGVCbG9j
ay0+dGllclVwQ291bnQobV9mdW5jdGlvbkluZGV4KS5jb3VudCgpKTsKKyAgICBkYXRhTG9nTG5J
ZihXYXNtT01HUGxhbkludGVybmFsOjp2ZXJib3NlLCAiRmluaXNoZWQgd2l0aCB0aWVyIHVwIGNv
dW50IGF0OiAiLCBtX2NvZGVCbG9jay0+dGllclVwQ291bnQobV9mdW5jdGlvbkluZGV4KS5jb3Vu
dCgpKTsKICAgICBjb21wbGV0ZShob2xkTG9jayhtX2xvY2spKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwCmluZGV4IDE0ODNhYzc0ODkyYjJmMTY0MmE2Y2IzNjBi
YzY0OTg3YmNmNWYxMWYuLmJhMjdjZjlmOTZmNTU1MGYyZjQ4MTJlMDkxMjRiNWJmODEwMDVhY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKQEAgLTQ3LDcgKzQ3LDkg
QEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAorbmFtZXNwYWNlIFdhc21Q
bGFuSW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBQ
bGFuOjpQbGFuKFZNKiB2bSwgUmVmPE1vZHVsZUluZm9ybWF0aW9uPiBpbmZvLCBDb21wbGV0aW9u
VGFzayYmIHRhc2spCiAgICAgOiBtX21vZHVsZUluZm9ybWF0aW9uKFdURk1vdmUoaW5mbykpCkBA
IC0xMjgsNyArMTMwLDcgQEAgYm9vbCBQbGFuOjp0cnlSZW1vdmVWTUFuZENhbmNlbElmTGFzdChW
TSYgdm0pCiAKIHZvaWQgUGxhbjo6ZmFpbChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBT
dHJpbmcmJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgImZhaWxp
bmcgd2l0aCBtZXNzYWdlOiAiLCBlcnJvck1lc3NhZ2UpOworICAgIGRhdGFMb2dMbklmKFdhc21Q
bGFuSW50ZXJuYWw6OnZlcmJvc2UsICJmYWlsaW5nIHdpdGggbWVzc2FnZTogIiwgZXJyb3JNZXNz
YWdlKTsKICAgICBtX2Vycm9yTWVzc2FnZSA9IFdURk1vdmUoZXJyb3JNZXNzYWdlKTsKICAgICBj
b21wbGV0ZShsb2NrZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVNpZ25hdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2ln
bmF0dXJlLmNwcAppbmRleCBiMjI5OGQ2NWNiYWI4ZDUwYmU4N2UwMjJkYTQzYmI2MjJjNThmZTdi
Li44YjYwMGVkMzg2NDQzMTI4ODJmMTNjNWY0OWZjOGZkOWU2NzkyOTc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcApAQCAtMzYsNyArMzYsOSBAQAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAogbmFtZXNwYWNlIHsKLWNvbnN0IGJv
b2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIFdhc21TaWduYXR1cmVJbnRlcm5hbCB7Citz
dGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiB9CiAKIFN0cmluZyBTaWduYXR1
cmU6OnRvU3RyaW5nKCkgY29uc3QKQEAgLTEwMyw3ICsxMDUsNyBAQCBzdGQ6OnBhaXI8U2lnbmF0
dXJlSW5kZXgsIFJlZjxTaWduYXR1cmU+PiBTaWduYXR1cmVJbmZvcm1hdGlvbjo6YWRvcHQoUmVm
PFNpZ25hdAogICAgICAgICArK2luZm8ubV9uZXh0SW5kZXg7CiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGluZm8ubV9uZXh0SW5kZXggPiBuZXh0VmFsdWUpOyAvLyBjcmFzaCBvbiBvdmVyZmxvdy4K
ICAgICAgICAgQVNTRVJUKG5leHRWYWx1ZSA9PSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsK
LSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChXYXNtU2lnbmF0dXJlSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nTG4oIkFkb3B0IG5ldyBzaWduYXR1cmUgIiwg
c2lnbmF0dXJlLmdldCgpLCAiIHdpdGggaW5kZXggIiwgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSwgIiBoYXNoOiAiLCBzaWduYXR1cmUtPmhhc2goKSk7CiAKICAgICAgICAgYXV0byBhZGRSZXN1
bHQgPSBpbmZvLm1faW5kZXhNYXAuYWRkKG5leHRWYWx1ZSwgc2lnbmF0dXJlLmNvcHlSZWYoKSk7
CkBAIC0xMTEsNyArMTEzLDcgQEAgc3RkOjpwYWlyPFNpZ25hdHVyZUluZGV4LCBSZWY8U2lnbmF0
dXJlPj4gU2lnbmF0dXJlSW5mb3JtYXRpb246OmFkb3B0KFJlZjxTaWduYXQKICAgICAgICAgQVNT
RVJUKGluZm8ubV9pbmRleE1hcC5zaXplKCkgPT0gaW5mby5tX3NpZ25hdHVyZU1hcC5zaXplKCkp
OwogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIobmV4dFZhbHVlLCBXVEZNb3ZlKHNpZ25h
dHVyZSkpOwogICAgIH0KLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoV2FzbVNpZ25hdHVyZUlu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nTG4oIkV4aXN0aW5nIHNpZ25hdHVyZSAi
LCBzaWduYXR1cmUuZ2V0KCksICIgd2l0aCBpbmRleCAiLCBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLCAiIGhhc2g6ICIsIHNpZ25hdHVyZS0+aGFzaCgpKTsKICAgICBBU1NFUlQoYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSAhPSBTaWduYXR1cmU6OmludmFsaWRJbmRleCk7CiAgICAgQVNTRVJU
KGluZm8ubV9pbmRleE1hcC5jb250YWlucyhhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcAppbmRleCA3NmE4N2Fj
MWI0NzM2ZjNjZjM3YzM1MzlkYmM5NjFmNjc4NmEwMTM0Li45YzViNjg0NGM0NmI3NGYwMjZlMGQ4
NTZiNDE5Y2U5NzVjNjAwOTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtV29ya2xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21X
b3JrbGlzdC5jcHAKQEAgLTMzLDcgKzMzLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBXYXNtIHsKIAorbmFtZXNwYWNlIFdhc21Xb3JrbGlzdEludGVybmFsIHsKIHN0YXRpYyBjb25z
dCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogY29uc3QgY2hhciogV29ya2xpc3Q6OnByaW9y
aXR5U3RyaW5nKFByaW9yaXR5IHByaW9yaXR5KQogewpAQCAtMTQ0LDcgKzE0Niw3IEBAIHZvaWQg
V29ya2xpc3Q6OmVucXVldWUoUmVmPFBsYW4+IHBsYW4pCiAgICAgICAgICAgICBBU1NFUlRfVU5V
U0VEKGVsZW1lbnQsIGVsZW1lbnQucGxhbi5nZXQoKSAhPSAmcGxhbi5nZXQoKSk7CiAgICAgfQog
Ci0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIkVucXVldWluZyBwbGFuIik7CisgICAgZGF0YUxv
Z0xuSWYoV2FzbVdvcmtsaXN0SW50ZXJuYWw6OnZlcmJvc2UsICJFbnF1ZXVpbmcgcGxhbiIpOwog
ICAgIG1fcXVldWUuZW5xdWV1ZSh7IFByaW9yaXR5OjpQcmVwYXJhdGlvbiwgbmV4dFRpY2tldCgp
LCAgV1RGTW92ZShwbGFuKSB9KTsKICAgICBtX3BsYW5FbnF1ZXVlZC0+bm90aWZ5T25lKGxvY2tl
cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2dlbmVyYXRlLXVuaWZpZWQtc291cmNlLWJ1
bmRsZXMucmIgYi9Tb3VyY2UvV1RGL2dlbmVyYXRlLXVuaWZpZWQtc291cmNlLWJ1bmRsZXMucmIK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjg1ODJlMjU2MjM5MWY2ZGRlMjAzNGFlMTQ4NDMwYmY5ODVkNTUwNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvZ2VuZXJhdGUtdW5pZmllZC1zb3VyY2UtYnVuZGxl
cy5yYgpAQCAtMCwwICsxLDE1MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworcmVxdWlyZSAnZmlsZXV0aWxzJworcmVxdWlyZSAncGF0aG5hbWUnCityZXF1
aXJlICdnZXRvcHRsb25nJworCitkZWYgdXNhZ2UKKyAgICBwdXRzICItLWhlbHAgICAgICAgICAg
ICAgICAgICAgICAgICAgICgtaCkgUHJpbnQgdGhpcyBtZXNzYWdlIgorICAgIHB1dHMgIi0tZGVy
aXZlZC1zb3VyY2VzLXBhdGggICAgICAgICAgKC1wKSBQYXRoIHRvIHRoZSBkaXJlY3Rvcnkgd2hl
cmUgdGhlIHVuaWZpZWQgc291cmNlIGZpbGVzIHNob3VsZCBiZSBwbGFjZWQuIFRoaXMgYXJndW1l
bnQgaXMgcmVxdWlyZWQuIgorICAgIHB1dHMgIi0tdmVyYm9zZSAgICAgICAgICAgICAgICAgICAg
ICAgKC12KSBBZGRzIGV4dHJhIGxvZ2dpbmcgdG8gc3RkZXJyLiIKKyAgICBleGl0IDEKK2VuZAor
CitNQVhfQlVORExFX1NJWkUgPSA4CiskZGVyaXZlZFNvdXJjZXNQYXRoID0gbmlsCiskdmVyYm9z
ZSA9IGZhbHNlCisjIFBpY2sgYW4gdW5yZWFzb25hYmxlIG51bWJlciBiZWNhdXNlLi4uIHdoYXRl
dmVyLgorIyBGSVhNRTogVXNlIHRoZXNlIHdoZW4gWGNvZGUgdXNlcyB1bmlmaWVkIHNvdXJjZXMu
CiskbWF4Q3BwQnVuZGxlQ291bnQgPSAxMDAwMDAKKyRtYXhDQnVuZGxlQ291bnQgPSAxMDAwMDAK
KyRtYXhPYmpDQnVuZGxlQ291bnQgPSAxMDAwMDAKKworR2V0b3B0TG9uZy5uZXcoWyctLWhlbHAn
LCAnLWgnLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCisgICAgICAgICAgICAgICBbJy0tZGVy
aXZlZC1zb3VyY2VzLXBhdGgnLCAnLXAnLCBHZXRvcHRMb25nOjpSRVFVSVJFRF9BUkdVTUVOVF0s
CisgICAgICAgICAgICAgICBbJy0tdmVyYm9zZScsICctdicsIEdldG9wdExvbmc6Ok5PX0FSR1VN
RU5UXSwKKyAgICAgICAgICAgICAgIFsnLS1tYXgtY3BwLWJ1bmRsZS1jb3VudCcsIEdldG9wdExv
bmc6OlJFUVVJUkVEX0FSR1VNRU5UXSwKKyAgICAgICAgICAgICAgIFsnLS1tYXgtYy1idW5kbGUt
Y291bnQnLCBHZXRvcHRMb25nOjpSRVFVSVJFRF9BUkdVTUVOVF0sCisgICAgICAgICAgICAgICBb
Jy0tbWF4LW9iai1jLWJ1bmRsZS1jb3VudCcsIEdldG9wdExvbmc6OlJFUVVJUkVEX0FSR1VNRU5U
XSkuZWFjaCB7CisgICAgfCBvcHQsIGFyZyB8CisgICAgY2FzZSBvcHQKKyAgICB3aGVuICctLWhl
bHAnCisgICAgICAgIHVzYWdlCisgICAgd2hlbiAnLS1kZXJpdmVkLXNvdXJjZXMtcGF0aCcKKyAg
ICAgICAgJGRlcml2ZWRTb3VyY2VzUGF0aCA9IFBhdGhuYW1lLm5ldyhhcmcpCisgICAgd2hlbiAn
LS12ZXJib3NlJworICAgICAgICAkdmVyYm9zZSA9IHRydWUKKyAgICB3aGVuICctLW1heC1jcHAt
YnVuZGxlLWNvdW50JworICAgICAgICAkbWF4Q3BwQnVuZGxlQ291bnQgPSBhcmcKKyAgICB3aGVu
ICctLW1heC1jLWJ1bmRsZS1jb3VudCcKKyAgICAgICAgJG1heENCdW5kbGVDb3VudCA9IGFyZwor
ICAgIHdoZW4gJy0tbWF4LW9iai1jLWJ1bmRsZS1jb3VudCcKKyAgICAgICAgJG1heE9iakNCdW5k
bGVDb3VudCA9IGFyZworICAgIGVuZAorfQorCit1c2FnZSB1bmxlc3MgJGRlcml2ZWRTb3VyY2Vz
UGF0aAorCitkZWYgbG9nKHRleHQpCisgICAgJHN0ZGVyci5wdXRzIHRleHQgaWYgJHZlcmJvc2UK
K2VuZAorCiskZ2VuZXJhdGVkU291cmNlcyA9IFtdCisKK2NsYXNzIEJ1bmRsZU1hbmFnZXIKKyAg
ICBhdHRyX3JlYWRlciA6YnVuZGxlQ291bnQsIDpleHRlbnNpb24sIDpmaWxlQ291bnQsIDpjdXJy
ZW50QnVuZGxlRmlsZSwgOmN1cnJlbnRCdW5kbGVUZXh0CisKKyAgICBkZWYgaW5pdGlhbGl6ZShl
eHRlbnNpb24pCisgICAgICAgIEBleHRlbnNpb24gPSBleHRlbnNpb24KKyAgICAgICAgQGZpbGVD
b3VudCA9IDAKKyAgICAgICAgQGJ1bmRsZUNvdW50ID0gMAorICAgIGVuZAorCisgICAgZGVmIGZs
dXNoKCkKKyAgICAgICAgIyBObyBwb2ludCBpbiB3YXN0aW5nIGJ1bmRsZXMKKyAgICAgICAgcmV0
dXJuIGlmIEBjdXJyZW50QnVuZGxlVGV4dCA9PSAiIgorICAgICAgICBpZiAoQGN1cnJlbnRCdW5k
bGVGaWxlKQorICAgICAgICAgICAgbG9nKCJ3cml0aW5nIGJ1bmRsZSAje0BjdXJyZW50QnVuZGxl
RmlsZX0gd2l0aDogXG4je0BjdXJyZW50QnVuZGxlVGV4dH0iKQorICAgICAgICAgICAgSU86Ondy
aXRlKEBjdXJyZW50QnVuZGxlRmlsZSwgQGN1cnJlbnRCdW5kbGVUZXh0KQorICAgICAgICAgICAg
JGdlbmVyYXRlZFNvdXJjZXMgPDwgQGN1cnJlbnRCdW5kbGVGaWxlCisgICAgICAgICAgICBAYnVu
ZGxlQ291bnQgKz0gMQorICAgICAgICBlbmQKKyAgICAgICAgQGN1cnJlbnRCdW5kbGVGaWxlID0g
JGRlcml2ZWRTb3VyY2VzUGF0aCArICJVbmlmaWVkU291cmNlI3soJGdlbmVyYXRlZFNvdXJjZXMu
bGVuZ3RoICsgMSkudG9fcyArIGV4dGVuc2lvbn0iCisgICAgICAgIEBjdXJyZW50QnVuZGxlVGV4
dCA9ICIiCisgICAgICAgIEBmaWxlQ291bnQgPSAwCisgICAgZW5kCisKKyAgICBkZWYgYWRkRmls
ZShmaWxlKQorICAgICAgICByYWlzZSAid3JvbmcgZXh0ZW5zaW9uOiAje2ZpbGUuZXh0bmFtZX0g
ZXhwZWN0ZWQgI3tAZXh0ZW5zaW9ufSIgdW5sZXNzIGZpbGUuZXh0bmFtZSA9PSBAZXh0ZW5zaW9u
CisgICAgICAgIGlmIChAZmlsZUNvdW50ICUgTUFYX0JVTkRMRV9TSVpFID09IDApCisgICAgICAg
ICAgICBsb2coImZsdXNoaW5nIGJlY2F1c2UgbmV3IGJ1bmRsZSBpcyBmdWxsICN7QGZpbGVDb3Vu
dH0iKQorICAgICAgICAgICAgZmx1c2gKKyAgICAgICAgZW5kCisgICAgICAgIEBjdXJyZW50QnVu
ZGxlVGV4dCArPSAiI2luY2x1ZGUgXCIje2ZpbGV9XCJcbiIKKyAgICAgICAgQGZpbGVDb3VudCAr
PSAxCisgICAgZW5kCitlbmQKKworI0ZJWE1FOiBXZSBzaG91bGQgZmlndXJlIG91dCBob3cgdG8g
YnVuZGxlIEMgZmlsZXMuIFRoZSBsYWNrIG9mIG5hbWVzcGFjZXMgbWFrZXMgdGhpcyBkaWZmaWN1
bHQuLi4KK2NsYXNzIENGaWxlTWFuYWdlcgorICAgIGRlZiBmbHVzaCgpCisgICAgZW5kCisKKyAg
ICBkZWYgYWRkRmlsZShmaWxlKQorICAgICAgICAkZ2VuZXJhdGVkU291cmNlcyA8PCBmaWxlCisg
ICAgZW5kCitlbmQKKworJGJ1bmRsZU1hbmFnZXJzID0geworICAgICIuY3BwIiA9PiBCdW5kbGVN
YW5hZ2VyLm5ldygiLmNwcCIpLAorICAgICIuYyIgPT4gQ0ZpbGVNYW5hZ2VyLm5ldygpLAorICAg
ICIubW0iID0+IEJ1bmRsZU1hbmFnZXIubmV3KCIubW0iKQorfQorCiskY3VycmVudERpcmVjdG9y
eSA9IFBhdGhuYW1lLm5ldyhBUkdWWzBdKS5kaXJuYW1lCisKK0FSR1Yuc29ydC5lYWNoIHsKKyAg
ICB8IGZpbGUgfAorCisgICAgcGF0aCA9IFBhdGhuYW1lLm5ldyhmaWxlKQorICAgIGlmICgkY3Vy
cmVudERpcmVjdG9yeSAhPSBwYXRoLmRpcm5hbWUpCisgICAgICAgIGxvZygiZmx1c2hpbmcgYmVj
YXVzZSBuZXcgZGlybmFtZSIpCisgICAgICAgICRidW5kbGVNYW5hZ2Vycy5lYWNoX3ZhbHVlIHsK
KyAgICAgICAgICAgIHwgYnVuZGxlIHwKKyAgICAgICAgICAgIGJ1bmRsZS5mbHVzaAorICAgICAg
ICB9CisgICAgICAgICRjdXJyZW50RGlyZWN0b3J5ID0gcGF0aC5kaXJuYW1lCisgICAgZW5kCisK
KyAgICBidW5kbGUgPSAkYnVuZGxlTWFuYWdlcnNbcGF0aC5leHRuYW1lXQorICAgIHJhaXNlICJ1
bmtub3duIHNvdXJjZSBleHRlbnNpb246ICN7cGF0aC5leHRuYW1lfSBrbm93biBleHRlbnNpb25z
OiAjeyRidW5kbGVNYW5hZ2Vycy5rZXlzLnRvX3N9IiB1bmxlc3MgYnVuZGxlCisgICAgYnVuZGxl
LmFkZEZpbGUocGF0aCkKK30KKworJGJ1bmRsZU1hbmFnZXJzLmVhY2hfdmFsdWUgeworICAgIHwg
YnVuZGxlIHwKKyAgICBidW5kbGUuZmx1c2gKK30KKworcHV0cyAkZ2VuZXJhdGVkU291cmNlcy5q
b2luKCI7IikgKyAiOyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaCBi
L1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaAppbmRleCAzYjA0Mzc5OWEwYTRlNGJkZTBhZmRm
NTBjMmFkMDYwZTE1OTI5NjNhLi4xNzlmNTE4ZWQ2NGU4YjUyZDBhM2NkN2ZkY2VkZmVjN2UzYzI3
ZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgKKysrIGIvU291cmNl
L1dURi93dGYvQXNzZXJ0aW9ucy5oCkBAIC01MzUsMTggKzUzNSwyMiBAQCBpbmxpbmUgdm9pZCBj
b21waWxlckZlbmNlRm9yQ3Jhc2goKQogI2VuZGlmCiB9CiAKLSNpZm5kZWYgQ1JBU0hfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTl9BTkRfSU5GTworI2lmbmRlZiBDUkFTSF9XSVRIX0lORk8KIC8v
IFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBhcmUgZ29pbmcgdG8gc3R1ZmYgZGF0YSBpbnRvIHJlZ2lz
dGVycyBiZWZvcmUgY3Jhc2hpbmcuIExpa2UgdGhlIGNyYXNoV2l0aEluZm8gZnVuY3Rpb25zIGJl
bG93Li4uCiAvLyBHQ0MgZG9lc24ndCBsaWtlIHRoZSAjI19fVkFfQVJHU19fIGhlcmUgc2luY2Ug
dGhpcyBtYWNybyBpcyBjYWxsZWQgZnJvbSBhbm90aGVyIG1hY3JvIHNvIHdlIGp1c3QgQ1JBU0gg
aW5zdGVhZCB0aGVyZS4KICNpZiBDT01QSUxFUihDTEFORykgfHwgQ09NUElMRVIoTVNWQykKLSNk
ZWZpbmUgQ1JBU0hfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTl9BTkRfSU5GTyguLi4pIGRvIHsg
XAorI2RlZmluZSBDUkFTSF9XSVRIX0lORk8oLi4uKSBkbyB7IFwKICAgICAgICAgV1RGOjppc0lu
dGVncmFsVHlwZShfX1ZBX0FSR1NfXyk7IFwKICAgICAgICAgY29tcGlsZXJGZW5jZUZvckNyYXNo
KCk7IFwKICAgICAgICAgV1RGQ3Jhc2hXaXRoSW5mbyhfX0xJTkVfXywgX19GSUxFX18sIFdURl9Q
UkVUVFlfRlVOQ1RJT04sIF9fQ09VTlRFUl9fLCAjI19fVkFfQVJHU19fKTsgXAogICAgIH0gd2hp
bGUgKGZhbHNlKQogI2Vsc2UKLSNkZWZpbmUgQ1JBU0hfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
Tl9BTkRfSU5GTyguLi4pIENSQVNIKCkKKyNkZWZpbmUgQ1JBU0hfV0lUSF9JTkZPKC4uLikgQ1JB
U0goKQogI2VuZGlmCisjZW5kaWYgLy8gQ1JBU0hfV0lUSF9JTkZPCisKKyNpZm5kZWYgQ1JBU0hf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTl9BTkRfSU5GTworI2RlZmluZSBDUkFTSF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OX0FORF9JTkZPIENSQVNIX1dJVEhfSU5GTwogI2VuZGlmIC8vIENS
QVNIX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fQU5EX0lORk8KIAogI2VuZGlmIC8vIF9fY3Bs
dXNwbHVzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320552</attachid>
            <date>2017-09-12 09:26:21 -0700</date>
            <delta_ts>2017-09-12 12:20:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176076-20170912092544.patch</filename>
            <type>text/plain</type>
            <size>235897</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxOTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YzgyZjNlZjRiYTgwZDBlY2RjODRkN2MwNjljNTk3NDdjMGUyNWMzLi5iMGNlNDFmYmRhYzdlOGY1
NWMyMjFlM2U4NjgwNDg5ZTQ3MWI0NzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzcgQEAKKzIwMTctMDktMTEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgRG8gdW5pZmllZCBzb3VyY2UgYnVpbGRzIGZvciBKU0MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjA3NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggc3dp
dGNocyB0aGUgQ01ha2UgSmF2YVNjcmlwdENvcmUgYnVpbGQgdG8gdXNlIHVuaWZpZWQgc291cmNl
cy4KKyAgICAgICAgVGhlIFhjb2RlIGJ1aWxkIHdpbGwgYmUgdXBncmFkZWQgaW4gYSBmb2xsb3cg
dXAgcGF0Y2guCisKKyAgICAgICAgTW9zdCBvZiB0aGUgc291cmNlIGNoYW5nZXMgaW4gdGhpcyBw
YXRjaCBhcmUgZml4aW5nIHN0YXRpYworICAgICAgICB2YXJpYWJsZS9mdW5jdGlvbnMgbmFtZSBj
b2xsaXNpb25zLiBUaGUgbW9zdCBjb21tb24gY29sbGlzaW9ucworICAgICAgICB3ZXJlIGZyb20g
b3VyIHVzZSBvZiAic3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSIgYW5kICJ1c2luZworICAgICAg
ICBuYW1lc3BhY2UgLi4uIi4gSSBmaXhlZCBhbGwgdGhlIHZlcmJvc2UgY2FzZXMgYW5kIGZpeGVk
IHRoZSAidXNpbmcKKyAgICAgICAgbmFtZXNwYWNlIiBpc3N1ZXMgdGhhdCBvY2N1cnJlZCB1bmRl
ciB0aGUgY3VycmVudCBidW5kbGluZworICAgICAgICBzdHJhdGVneS4gSXQncyBsaWtlbHkgdGhh
dCBtb3JlIG9mIHRoZSAidXNpbmcgbmFtZXNwYWNlIiBpc3N1ZXMKKyAgICAgICAgd2lsbCBuZWVk
IHRvIGJlIHJlc29sdmVkIGluIHRoZSBmdXR1cmUsIHBhcnRpY3VsYXJseSBpbiB0aGUgRlRMLgor
CisgICAgICAgIEkgZG9uJ3QgZXhwZWN0IGVpdGhlciBvZiB0aGVzZSBwcm9ibGVtcyB3aWxsIGFw
cGx5IHRvIG90aGVyIHBhcnRzCisgICAgICAgIG9mIHRoZSBwcm9qZWN0IG5lYXJseSBhcyBtdWNo
IGFzIGluIEpTQy4gVXNpbmcgYSB2ZXJib3NlIHZhcmlhYmxlCisgICAgICAgIGlzIGEgSlNDIGlk
aW9tIGFuZCBKU0MgdGVuZHMgdXNlIHRoZSBzYW1lLCBjYW5vbmljYWwsIGNsYXNzIG5hbWUKKyAg
ICAgICAgaW4gbXVsdGlwbGUgcGFydHMgb2YgdGhlIGVuZ2luZS4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIGIzL0IzQ2hlY2tTcGVjaWFsLmNwcDoKKyAgICAgICAgKEpT
Qzo6QjM6OkNoZWNrU3BlY2lhbDo6Zm9yRWFjaEFyZyk6CisgICAgICAgIChKU0M6OkIzOjpDaGVj
a1NwZWNpYWw6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6bnVtQjNBcmdzKTog
RGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM0R1cGxpY2F0ZVRhaWxzLmNwcDoKKyAgICAgICAgKiBi
My9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcDoKKyAgICAgICAgKiBiMy9CM0Zp
eFNTQS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpkZW1vdGVWYWx1ZXMpOgorICAgICAgICAqIGIz
L0IzRm9sZFBhdGhDb25zdGFudHMuY3BwOgorICAgICAgICAqIGIzL0IzSW5mZXJTd2l0Y2hlcy5j
cHA6CisgICAgICAgICogYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHA6Cisg
ICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Okxvd2VyVG9BaXIpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpydW4pOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzaG91bGRDb3B5UHJvcGFnYXRlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6QXJnUHJvbWlz
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21p
c2U6OnN3YXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpB
cmdQcm9taXNlOjpvcGVyYXRvcj0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpBcmdQcm9taXNlOjp+QXJnUHJvbWlzZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OnNldFRyYXBzKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6dG1wKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6b3Bl
cmF0b3IgYm9vbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6OkFyZ1Byb21pc2U6OmtpbmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjpwZWVrIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6Y29uc3VtZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6Omlu
c3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0bXApOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0bXBQcm9taXNlKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y2FuQmVJbnRlcm5h
bCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNvbW1pdElu
dGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3Jv
c3Nlc0ludGVyZmVyZW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6OnNjYWxlRm9yU2hsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6ZWZmZWN0aXZlQWRkcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okxvd2VyVG9BaXI6OmFkZHIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjp0cmFwcGluZ0luc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpsb2FkUHJvbWlzZUFueU9wY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmxvYWRQcm9taXNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6aW1tKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6TG93ZXJUb0Fpcjo6Yml0SW1tKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6Yml0SW1tNjQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjppbW1PclRtcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okxvd2VyVG9BaXI6OnRyeU9wY29kZUZvclR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpMb3dlclRvQWlyOjpvcGNvZGVGb3JUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kVW5PcCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnByZWZlclJpZ2h0Rm9yUmVzdWx0KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kQmluT3ApOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRTaGlmdCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyeUFwcGVuZFN0b3JlVW5P
cCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyeUFwcGVu
ZFN0b3JlQmluT3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
OjpjcmVhdGVTdG9yZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OnN0b3JlT3Bjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJU
b0Fpcjo6YXBwZW5kU3RvcmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjptb3ZlRm9yVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6OnJlbGF4ZWRNb3ZlRm9yVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OnByaW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6YXBwZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
TG93ZXJUb0Fpcjo6YXBwZW5kVHJhcHBpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpMb3dlclRvQWlyOjpmaW5pc2hBcHBlbmRpbmdJbnN0cnVjdGlvbnMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpuZXdCbG9jayk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnNwbGl0QmxvY2spOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjplbnN1cmVTcGVjaWFsKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6ZW5zdXJlQ2hlY2tTcGVjaWFs
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6ZmlsbFN0YWNr
bWFwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRl
R2VuZXJpY0NvbXBhcmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRv
QWlyOjpjcmVhdGVCcmFuY2gpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpjcmVhdGVDb21wYXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
TG93ZXJUb0Fpcjo6Y3JlYXRlU2VsZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6dHJ5QXBwZW5kTGVhKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kWDg2RGl2KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kWDg2VURpdik6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmxvYWRMaW5rT3Bjb2RlKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6c3RvcmVDb25kT3Bjb2RlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kQ0FTKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kVm9pZEF0b21pYyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZEdlbmVyYWxB
dG9taWMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpsb3dl
cik6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHA6CisgICAg
ICAgIChKU0M6OkIzOjpQYXRjaHBvaW50U3BlY2lhbDo6Z2VuZXJhdGUpOgorICAgICAgICAqIGIz
L0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpyZWR1Y2VEb3Vi
bGVUb0Zsb2F0KToKKyAgICAgICAgKiBiMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcDoKKyAgICAgICAg
KiBiMy9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5jcHA6CisgICAgICAgICogYjMvQjNTdGFj
a21hcFNwZWNpYWwuY3BwOgorICAgICAgICAoSlNDOjpCMzo6U3RhY2ttYXBTcGVjaWFsOjpyZXBz
SW1wbCk6CisgICAgICAgIChKU0M6OkIzOjpTdGFja21hcFNwZWNpYWw6OnJlcEZvckFyZyk6Cisg
ICAgICAgICogYjMvYWlyL0FpckFsbG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcuY3BwOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjphbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nKToKKyAgICAg
ICAgKiBiMy9haXIvQWlyRW1pdFNodWZmbGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpl
bWl0U2h1ZmZsZSk6CisgICAgICAgICogYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwOgor
ICAgICAgICAqIGIzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpsb3dlckFmdGVyUmVnQWxsb2MpOgorICAgICAgICAqIGIzL2Fpci9BaXJTdGFj
a0FsbG9jYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjphdHRlbXB0QXNzaWdubWVu
dCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmFzc2lnbik6CisgICAgICAgICogYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6
CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZURGR1N0YXR1c2VzKToKKyAgICAgICAgKiBieXRlY29kZS9H
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZTo6ZW1pdERPTUpJVEdldHRlcik6CisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKToKKyAg
ICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgorICAgICAgICAqIGJ5
dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlDb25k
aXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50IGNvbnN0
KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHA6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKToKKyAgICAgICAgKiBkZmcvREZH
QXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6RGVsYXllZFNl
dExvY2FsOjpEZWxheWVkU2V0TG9jYWwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjppbmxpbmluZ0Nvc3QpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpp
bmxpbmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRv
SW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGxhbkxvYWQpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpzdG9yZSk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpsaW5rQmxvY2tzKToKKyAgICAgICAgKiBkZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAg
ICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
SW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKToKKyAgICAgICAgKiBkZmcvREZHSW50ZWdlckNo
ZWNrQ29tYmluaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkludGVnZXJDaGVja0Nv
bWJpbmluZ1BoYXNlOjpoYW5kbGVCbG9jayk6CisgICAgICAgICogZGZnL0RGR0ludGVnZXJSYW5n
ZU9wdGltaXphdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHTW92SGludFJlbW92YWxQ
aGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2Uu
Y3BwOgorICAgICAgICAqIGRmZy9ERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAqIGRmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0
b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHVmFyYXJnc0Zv
cndhcmRpbmdQaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwOjpjb21wdXRlKToKKyAgICAgICAgKiBmdGwv
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVNZW1vcnkpOgorICAgICAgICAoSlNDOjpGVEw6OkFi
c3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlQ0NhbGxSZWFkKToKKyAgICAgICAgKEpTQzo6
RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUNDYWxsV3JpdGUpOgorICAgICAg
ICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlUGF0Y2hwb2ludFJl
YWQpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRl
UGF0Y2hwb2ludFdyaXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5OjpkZWNvcmF0ZUZlbmNlUmVhZCk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFw
UmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5jZVdyaXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUZlbmNlZEFjY2Vzcyk6CisgICAgICAgIChKU0M6
OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6Y29tcHV0ZVJhbmdlc0FuZERlY29yYXRlSW5z
dHJ1Y3Rpb25zKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6bGluayk6CisgICAgICAgICogaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHA6CisgICAg
ICAgIChKU0M6Ok1hcmtpbmdDb25zdHJhaW50U2V0OjphZGQpOgorICAgICAgICAqIGludGVycHJl
dGVyL1NoYWRvd0NoaWNrZW4uY3BwOgorICAgICAgICAoSlNDOjpTaGFkb3dDaGlja2VuOjp1cGRh
dGUpOgorICAgICAgICAqIGppdC9CaW5hcnlTd2l0Y2guY3BwOgorICAgICAgICAoSlNDOjpCaW5h
cnlTd2l0Y2g6OkJpbmFyeVN3aXRjaCk6CisgICAgICAgIChKU0M6OkJpbmFyeVN3aXRjaDo6YnVp
bGQpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50
OjpEYXRhOjpsb2FkU3RhdHMpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6c2F2ZVN0YXRz
KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
QXJyYXlQcm90b3R5cGU6OnRyeUluaXRpYWxpemVTcGVjaWVzV2F0Y2hwb2ludCk6CisgICAgICAg
IChKU0M6OkFycmF5UHJvdG90eXBlQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5V2F0Y2hwb2ludDo6
aGFuZGxlRmlyZSk6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2NrRnVuY3Rvcjo6RmluZEZp
cnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2NrRnVuY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3I6Om9wZXJhdG9yKCkp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGaW5kRmlyc3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxv
Y2tGdW5jdG9yOjpmb3VuZENhbGxGcmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3I6OmluZGV4IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAg
ICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KToK
KyAgICAgICAgKiBydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6UHJvbWlzZURlZmVycmVkVGltZXI6OmRvV29yayk6CisgICAgICAgIChKU0M6OlByb21pc2VE
ZWZlcnJlZFRpbWVyOjphZGRQZW5kaW5nUHJvbWlzZSk6CisgICAgICAgIChKU0M6OlByb21pc2VE
ZWZlcnJlZFRpbWVyOjpjYW5jZWxQZW5kaW5nUHJvbWlzZSk6CisgICAgICAgICogcnVudGltZS9U
eXBlUHJvZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXI6Omluc2VydE5ld0xv
Y2F0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHA6CisgICAgICAg
IChKU0M6OlR5cGVQcm9maWxlckxvZzo6cHJvY2Vzc0xvZ0VudHJpZXMpOgorICAgICAgICAqIHJ1
bnRpbWUvV2Vha01hcFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtN
YXBEZWxldGUpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwR2V0KToKKyAgICAgICAg
KEpTQzo6cHJvdG9GdW5jV2Vha01hcEhhcyk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtN
YXBTZXQpOgorICAgICAgICAoSlNDOjpnZXRXZWFrTWFwRGF0YSk6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6cHJvdG9GdW5j
V2Vha1NldERlbGV0ZSk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtTZXRIYXMpOgorICAg
ICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrU2V0QWRkKToKKyAgICAgICAgKEpTQzo6Z2V0V2Vha01h
cERhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHRlc3RSZWdFeHAuY3BwOgorICAgICAgICAodGVz
dE9uZVJlZ0V4cCk6CisgICAgICAgIChydW5Gcm9tRmlsZXMpOgorICAgICAgICAqIHdhc20vV2Fz
bUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpwYXJzZUFuZENvbXBpbGUp
OgorICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpC
QlFQbGFuOjptb3ZlVG9TdGF0ZSk6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OnBhcnNl
QW5kVmFsaWRhdGVNb2R1bGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpwcmVwYXJl
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9ucyk6CisgICAg
ICAgIChKU0M6Oldhc206OkJCUVBsYW46OmNvbXBsZXRlKToKKyAgICAgICAgKiB3YXNtL1dhc21G
YXVsdFNpZ25hbEhhbmRsZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp0cmFwSGFuZGxlcik6
CisgICAgICAgICogd2FzbS9XYXNtT01HUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok9N
R1BsYW46Ok9NR1BsYW4pOgorICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAg
ICAgICAgKiB3YXNtL1dhc21QbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGxhbjo6ZmFp
bCk6CisgICAgICAgICogd2FzbS9XYXNtU2lnbmF0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6U2lnbmF0dXJlSW5mb3JtYXRpb246OmFkb3B0KToKKyAgICAgICAgKiB3YXNtL1dhc21Xb3Jr
bGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjplbnF1ZXVlKToKKwogMjAx
Ny0wOS0xMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgTW9yZSBl
eGNlcHRpb24gY2hlY2sgYm9vay1rZWVwaW5nIG5lZWRlZCBmb3VuZCBieSAzMi1iaXQgSlNDIHRl
c3QgZmFpbHVyZXMuCkBAIC0zMiw2ICsyNjYsNDQyIEBACiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYwMTAKICAgICAgICAgaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvMjIxODU0CiAKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBiMy9CM0NoZWNrU3BlY2lhbC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpDaGVja1Nw
ZWNpYWw6OmZvckVhY2hBcmcpOgorICAgICAgICAoSlNDOjpCMzo6Q2hlY2tTcGVjaWFsOjpnZW5l
cmF0ZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Om51bUIzQXJncyk6IERlbGV0ZWQuCisgICAg
ICAgICogYjMvQjNEdXBsaWNhdGVUYWlscy5jcHA6CisgICAgICAgICogYjMvQjNFbGltaW5hdGVD
b21tb25TdWJleHByZXNzaW9ucy5jcHA6CisgICAgICAgICogYjMvQjNGaXhTU0EuY3BwOgorICAg
ICAgICAoSlNDOjpCMzo6ZGVtb3RlVmFsdWVzKToKKyAgICAgICAgKiBiMy9CM0ZvbGRQYXRoQ29u
c3RhbnRzLmNwcDoKKyAgICAgICAgKiBiMy9CM0luZmVyU3dpdGNoZXMuY3BwOgorICAgICAgICAq
IGIzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwOgorICAgICAgICAoKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpMb3dlclRvQWlyOjpMb3dlclRvQWlyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6TG93ZXJUb0Fpcjo6cnVuKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
TG93ZXJUb0Fpcjo6c2hvdWxkQ29weVByb3BhZ2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OkFyZ1Byb21pc2UpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjpzd2FwKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6b3Bl
cmF0b3I9KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJn
UHJvbWlzZTo6fkFyZ1Byb21pc2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpBcmdQcm9taXNlOjpzZXRUcmFwcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OnRtcCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6Om9wZXJhdG9yIGJvb2wgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9t
aXNlOjpraW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJU
b0Fpcjo6QXJnUHJvbWlzZTo6cGVlayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OmNvbnN1bWUpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjppbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dG1wKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dG1wUHJvbWlzZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNhbkJlSW50ZXJuYWwpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpjb21taXRJbnRlcm5hbCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyb3NzZXNJbnRlcmZlcmVu
Y2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzY2FsZUZv
clNobCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmVmZmVj
dGl2ZUFkZHIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjph
ZGRyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJhcHBp
bmdJbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG9h
ZFByb21pc2VBbnlPcGNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpsb2FkUHJvbWlzZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6OmltbSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OmJpdEltbSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OmJpdEltbTY0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
aW1tT3JUbXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0
cnlPcGNvZGVGb3JUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJU
b0Fpcjo6b3Bjb2RlRm9yVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6OmFwcGVuZFVuT3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpwcmVmZXJSaWdodEZvclJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZEJpbk9wKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kU2hpZnQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0cnlBcHBlbmRTdG9yZVVuT3ApOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0cnlBcHBlbmRTdG9yZUJpbk9wKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRlU3RvcmUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzdG9yZU9wY29k
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFN0
b3JlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bW92ZUZv
clR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpyZWxh
eGVkTW92ZUZvclR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRv
QWlyOjpwcmludCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OmFwcGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFw
cGVuZFRyYXBwaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fp
cjo6ZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bmV3QmxvY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpMb3dlclRvQWlyOjpzcGxpdEJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6ZW5zdXJlU3BlY2lhbCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmVuc3VyZUNoZWNrU3BlY2lhbCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmZpbGxTdGFja21hcCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZUdlbmVyaWNDb21wYXJl
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRlQnJh
bmNoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRl
Q29tcGFyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNy
ZWF0ZVNlbGVjdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OnRyeUFwcGVuZExlYSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OmFwcGVuZFg4NkRpdik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6OmFwcGVuZFg4NlVEaXYpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpsb2FkTGlua09wY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6OnN0b3JlQ29uZE9wY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZENBUyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFZvaWRBdG9taWMpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRHZW5lcmFsQXRvbWljKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG93ZXIpOiBEZWxldGVkLgor
ICAgICAgICAqIGIzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwOgorICAgICAgICAoSlNDOjpCMzo6
UGF0Y2hwb2ludFNwZWNpYWw6OmdlbmVyYXRlKToKKyAgICAgICAgKiBiMy9CM1JlZHVjZURvdWJs
ZVRvRmxvYXQuY3BwOgorICAgICAgICAoSlNDOjpCMzo6cmVkdWNlRG91YmxlVG9GbG9hdCk6Cisg
ICAgICAgICogYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHA6CisgICAgICAgICogYjMvQjNTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMuY3BwOgorICAgICAgICAqIGIzL0IzU3RhY2ttYXBTcGVjaWFsLmNw
cDoKKyAgICAgICAgKEpTQzo6QjM6OlN0YWNrbWFwU3BlY2lhbDo6cmVwc0ltcGwpOgorICAgICAg
ICAoSlNDOjpCMzo6U3RhY2ttYXBTcGVjaWFsOjpyZXBGb3JBcmcpOgorICAgICAgICAqIGIzL2Fp
ci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6YWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZyk6CisgICAgICAgICogYjMvYWlyL0Fp
ckVtaXRTaHVmZmxlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6ZW1pdFNodWZmbGUpOgor
ICAgICAgICAqIGIzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcDoKKyAgICAgICAgKiBiMy9h
aXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6bG93
ZXJBZnRlclJlZ0FsbG9jKToKKyAgICAgICAgKiBiMy9haXIvQWlyU3RhY2tBbGxvY2F0aW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6YXR0ZW1wdEFzc2lnbm1lbnQpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjphc3NpZ24pOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVERkdTdGF0dXNlcyk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRE
T01KSVRHZXR0ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0LmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAg
ICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcyk6CisgICAgICAgIChKU0M6OlBv
bHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Qcm9wZXJ0
eUNvbmRpdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxs
VmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCBjb25zdCk6CisgICAgICAgICog
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVT
dHViSW5mbzo6YWRkQWNjZXNzQ2FzZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SGVhcC5j
cHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGRmZy9ERkdBcmd1
bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpEZWxheWVkU2V0TG9j
YWw6OkRlbGF5ZWRTZXRMb2NhbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmlubGluaW5nQ29zdCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGlu
ZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9Jbmxp
bmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5p
bmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwbGFuTG9hZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnN0b3JlKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmxpbmtCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmxpbmtCbG9ja3MpOgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5jcHA6CisgICAgICAgICog
ZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBs
YWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UpOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyQ2hlY2tD
b21iaW5pbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW50ZWdlckNoZWNrQ29tYmlu
aW5nUGhhc2U6OmhhbmRsZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHSW50ZWdlclJhbmdlT3B0
aW1pemF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdNb3ZIaW50UmVtb3ZhbFBoYXNl
LmNwcDoKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHA6
CisgICAgICAgICogZGZnL0RGR1BoYW50b21JbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICog
ZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3RvcmVC
YXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdWYXJhcmdzRm9yd2Fy
ZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXA6OmNvbXB1dGUpOgorICAgICAgICAqIGZ0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5OjpkZWNvcmF0ZU1lbW9yeSk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVDQ2FsbFJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6
OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlQ0NhbGxXcml0ZSk6CisgICAgICAgIChK
U0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVQYXRjaHBvaW50UmVhZCk6
CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVQYXRj
aHBvaW50V3JpdGUpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6
OmRlY29yYXRlRmVuY2VSZWFkKToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5OjpkZWNvcmF0ZUZlbmNlV3JpdGUpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0
SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlRmVuY2VkQWNjZXNzKToKKyAgICAgICAgKEpTQzo6RlRM
OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Ojpjb21wdXRlUmFuZ2VzQW5kRGVjb3JhdGVJbnN0cnVj
dGlvbnMpOgorICAgICAgICAqIGZ0bC9GVExKSVRGaW5hbGl6ZXIuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OkpJVEZpbmFsaXplcjo6SklURmluYWxpemVyKToKKyAgICAgICAgKiBmdGwvRlRMTGlu
ay5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICogZnRsL0ZUTE9wZXJh
dGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5P
U1IpOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1Ip
OgorICAgICAgICAqIGhlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwOgorICAgICAgICAoSlND
OjpNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9TaGFk
b3dDaGlja2VuLmNwcDoKKyAgICAgICAgKEpTQzo6U2hhZG93Q2hpY2tlbjo6dXBkYXRlKToKKyAg
ICAgICAgKiBqaXQvQmluYXJ5U3dpdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6QmluYXJ5U3dpdGNo
OjpCaW5hcnlTd2l0Y2gpOgorICAgICAgICAoSlNDOjpCaW5hcnlTd2l0Y2g6OmJ1aWxkKToKKyAg
ICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6
bG9hZFN0YXRzKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnNhdmVTdGF0cyk6CisgICAg
ICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFycmF5UHJv
dG90eXBlOjp0cnlJbml0aWFsaXplU3BlY2llc1dhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpB
cnJheVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ6OmhhbmRsZUZp
cmUpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6
OkZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3I6OkZpbmRGaXJzdENhbGxl
ckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGaW5k
Rmlyc3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjpvcGVyYXRvcigpKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2NrRnVuY3Rv
cjo6Zm91bmRDYWxsRnJhbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGaW5kRmly
c3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjppbmRleCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlND
OjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCk6CisgICAgICAg
IChKU0M6OmxvY2FsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjp0b0RhdGVUaW1lT3B0
aW9uc0FueURhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJG
b3JtYXQpOgorICAgICAgICAoSlNDOjpsb2NhbGVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0pTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgICogcnVudGltZS9K
U1R5cGVkQXJyYXlQcm90b3R5cGVzLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZWRBcnJh
eXMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvTnVsbEdldHRlckZ1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6TnVsbEdldHRlckZ1bmN0aW9uOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6
OmNhbGxSZXR1cm5VbmRlZmluZWQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvTnVsbFNl
dHRlckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6TnVsbFNldHRlckZ1bmN0aW9uOjpnZXRD
YWxsRGF0YSk6CisgICAgICAgIChKU0M6OmNhbGxSZXR1cm5VbmRlZmluZWQpOiBEZWxldGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvbWlzZURlZmVycmVkVGltZXIuY3BwOgorICAgICAgICAoSlND
OjpQcm9taXNlRGVmZXJyZWRUaW1lcjo6ZG9Xb3JrKToKKyAgICAgICAgKEpTQzo6UHJvbWlzZURl
ZmVycmVkVGltZXI6OmFkZFBlbmRpbmdQcm9taXNlKToKKyAgICAgICAgKEpTQzo6UHJvbWlzZURl
ZmVycmVkVGltZXI6OmNhbmNlbFBlbmRpbmdQcm9taXNlKToKKyAgICAgICAgKiBydW50aW1lL1R5
cGVQcm9maWxlci5jcHA6CisgICAgICAgIChKU0M6OlR5cGVQcm9maWxlcjo6aW5zZXJ0TmV3TG9j
YXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcDoKKyAgICAgICAg
KEpTQzo6VHlwZVByb2ZpbGVyTG9nOjpwcm9jZXNzTG9nRW50cmllcyk6CisgICAgICAgICogd2Fz
bS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OnBhcnNlQW5kQ29t
cGlsZSk6CisgICAgICAgICogd2FzbS9XYXNtQkJRUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OkJCUVBsYW46Om1vdmVUb1N0YXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6
cGFyc2VBbmRWYWxpZGF0ZU1vZHVsZSk6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OnBy
ZXBhcmUpOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpjb21waWxlRnVuY3Rpb25zKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6Y29tcGxldGUpOgorICAgICAgICAqIHdhc20v
V2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OnRyYXBIYW5k
bGVyKToKKyAgICAgICAgKiB3YXNtL1dhc21PTUdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6T01HUGxhbjo6T01HUGxhbik6CisgICAgICAgIChKU0M6Oldhc206Ok9NR1BsYW46Ondvcmsp
OgorICAgICAgICAqIHdhc20vV2FzbVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpQbGFu
OjpmYWlsKToKKyAgICAgICAgKiB3YXNtL1dhc21TaWduYXR1cmUuY3BwOgorICAgICAgICAoSlND
OjpXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6YWRvcHQpOgorICAgICAgICAqIHdhc20vV2Fz
bVdvcmtsaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6V29ya2xpc3Q6OmVucXVldWUpOgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogYjMvQjNDaGVja1NwZWNpYWwu
Y3BwOgorICAgICAgICAoSlNDOjpCMzo6Q2hlY2tTcGVjaWFsOjpmb3JFYWNoQXJnKToKKyAgICAg
ICAgKEpTQzo6QjM6OkNoZWNrU3BlY2lhbDo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpudW1CM0FyZ3MpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzRHVwbGljYXRlVGFpbHMu
Y3BwOgorICAgICAgICAqIGIzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwOgor
ICAgICAgICAqIGIzL0IzRml4U1NBLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OmRlbW90ZVZhbHVl
cyk6CisgICAgICAgICogYjMvQjNGb2xkUGF0aENvbnN0YW50cy5jcHA6CisgICAgICAgICogYjMv
QjNJbmZlclN3aXRjaGVzLmNwcDoKKyAgICAgICAgKiBiMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRp
bWl6YXRpb25zLmNwcDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNMb3dl
clRvQWlyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6TG93ZXJUb0Fp
cik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnJ1bik6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnNob3VsZENvcHlQcm9w
YWdhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQ
cm9taXNlOjpBcmdQcm9taXNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6c3dhcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6On5BcmdQcm9taXNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6c2V0
VHJhcHMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQ
cm9taXNlOjp0bXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
OjpBcmdQcm9taXNlOjpvcGVyYXRvciBib29sIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6a2luZCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OnBlZWsgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9t
aXNlOjpjb25zdW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fp
cjo6QXJnUHJvbWlzZTo6aW5zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6OnRtcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OnRtcFByb21pc2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRv
QWlyOjpjYW5CZUludGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6Y29tbWl0SW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjpjcm9zc2VzSW50ZXJmZXJlbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6c2NhbGVGb3JTaGwpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjplZmZlY3RpdmVBZGRyKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YWRkcik6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyYXBwaW5nSW5zdCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmxvYWRQcm9taXNlQW55T3Bjb2RlKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG9hZFByb21pc2UpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjppbW0pOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpiaXRJbW0pOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpiaXRJbW02NCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmltbU9yVG1wKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJ5T3Bjb2RlRm9yVHlwZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Om9wY29kZUZvclR5cGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRVbk9wKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6cHJlZmVyUmlnaHRGb3JS
ZXN1bHQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBl
bmRCaW5PcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFw
cGVuZFNoaWZ0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
dHJ5QXBwZW5kU3RvcmVVbk9wKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6dHJ5QXBwZW5kU3RvcmVCaW5PcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZVN0b3JlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6c3RvcmVPcGNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRTdG9yZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Om1vdmVGb3JUeXBlKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6cmVsYXhlZE1vdmVGb3JUeXBlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6cHJpbnQpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmQpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRUcmFwcGluZyk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmZpbmlzaEFwcGVuZGluZ0luc3RydWN0
aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Om5ld0Js
b2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6c3BsaXRC
bG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmVuc3Vy
ZVNwZWNpYWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpl
bnN1cmVDaGVja1NwZWNpYWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpmaWxsU3RhY2ttYXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpjcmVhdGVHZW5lcmljQ29tcGFyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZUJyYW5jaCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZUNvbXBhcmUpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpjcmVhdGVTZWxlY3QpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0cnlBcHBlbmRMZWEpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRYODZEaXYpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRYODZVRGl2KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG9hZExpbmtPcGNvZGUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzdG9yZUNvbmRP
cGNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBl
bmRDQVMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBl
bmRWb2lkQXRvbWljKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fp
cjo6YXBwZW5kR2VuZXJhbEF0b21pYyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okxvd2VyVG9BaXI6Omxvd2VyKTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM1BhdGNocG9pbnRT
cGVjaWFsLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlBhdGNocG9pbnRTcGVjaWFsOjpnZW5lcmF0
ZSk6CisgICAgICAgICogYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcDoKKyAgICAgICAgKEpT
Qzo6QjM6OnJlZHVjZURvdWJsZVRvRmxvYXQpOgorICAgICAgICAqIGIzL0IzUmVkdWNlU3RyZW5n
dGguY3BwOgorICAgICAgICAqIGIzL0IzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmNwcDoKKyAg
ICAgICAgKiBiMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpTdGFj
a21hcFNwZWNpYWw6OnJlcHNJbXBsKToKKyAgICAgICAgKEpTQzo6QjM6OlN0YWNrbWFwU3BlY2lh
bDo6cmVwRm9yQXJnKToKKyAgICAgICAgKiBiMy9haXIvQWlyQWxsb2NhdGVTdGFja0J5R3JhcGhD
b2xvcmluZy5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmFsbG9jYXRlU3RhY2tCeUdyYXBo
Q29sb3JpbmcpOgorICAgICAgICAqIGIzL2Fpci9BaXJFbWl0U2h1ZmZsZS5jcHA6CisgICAgICAg
IChKU0M6OkIzOjpBaXI6OmVtaXRTaHVmZmxlKToKKyAgICAgICAgKiBiMy9haXIvQWlyRml4T2J2
aW91c1NwaWxscy5jcHA6CisgICAgICAgICogYjMvYWlyL0Fpckxvd2VyQWZ0ZXJSZWdBbGxvYy5j
cHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Omxvd2VyQWZ0ZXJSZWdBbGxvYyk6CisgICAgICAg
ICogYjMvYWlyL0FpclN0YWNrQWxsb2NhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6
OmF0dGVtcHRBc3NpZ25tZW50KToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6YXNzaWduKToKKyAg
ICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2Fz
ZTo6Z2VuZXJhdGVJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHA6
CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRlREZHU3RhdHVzZXMpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlND
OjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjplbWl0RE9NSklUR2V0dGVyKToKKyAgICAgICAgKiBi
eXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHA6CisgICAgICAgICogYnl0ZWNv
ZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vz
czo6YWRkQ2FzZXMpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uY3BwOgorICAgICAgICAo
SlNDOjpQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0
eVdhdGNocG9pbnQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgor
ICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEhlYXAuY3BwOgorICAgICAgICAoV1RGOjpwcmludElu
dGVybmFsKToKKyAgICAgICAgKiBkZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6RGVsYXllZFNldExvY2FsOjpEZWxheWVkU2V0TG9jYWwpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6cGxhbkxvYWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpzdG9yZSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2spOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2tzKToKKyAgICAgICAgKiBk
ZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKToK
KyAgICAgICAgKiBkZmcvREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlOjpoYW5kbGVCbG9jayk6Cisg
ICAgICAgICogZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHTW92SGludFJlbW92YWxQaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR09i
amVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdQaGFudG9t
SW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFz
ZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHA6CisgICAgICAgICog
ZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFw
Ojpjb21wdXRlKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVNZW1v
cnkpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRl
Q0NhbGxSZWFkKToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Ojpk
ZWNvcmF0ZUNDYWxsV3JpdGUpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9z
aXRvcnk6OmRlY29yYXRlUGF0Y2hwb2ludFJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3Ry
YWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlUGF0Y2hwb2ludFdyaXRlKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUZlbmNlUmVhZCk6CisgICAg
ICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5jZVdyaXRl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUZl
bmNlZEFjY2Vzcyk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6
Y29tcHV0ZVJhbmdlc0FuZERlY29yYXRlSW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKiBmdGwvRlRM
SklURmluYWxpemVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpKSVRGaW5hbGl6ZXI6OkpJVEZp
bmFsaXplcik6CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OmxpbmspOgorICAgICAgICAqIGZ0bC9GVExPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKToKKyAgICAgICAgKEpTQzo6RlRMOjpv
cGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NSKToKKyAgICAgICAgKiBoZWFwL01hcmtpbmdD
b25zdHJhaW50U2V0LmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFk
ZCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHA6CisgICAgICAgIChK
U0M6OlNoYWRvd0NoaWNrZW46OnVwZGF0ZSk6CisgICAgICAgICogaml0L0JpbmFyeVN3aXRjaC5j
cHA6CisgICAgICAgIChKU0M6OkJpbmFyeVN3aXRjaDo6QmluYXJ5U3dpdGNoKToKKyAgICAgICAg
KEpTQzo6QmluYXJ5U3dpdGNoOjpidWlsZCk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNw
cDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmxvYWRTdGF0cyk6CisgICAgICAgIChKU0M6
OkxMSW50OjpEYXRhOjpzYXZlU3RhdHMpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheVByb3RvdHlwZTo6dHJ5SW5pdGlhbGl6ZVNwZWNp
ZXNXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGVBZGFwdGl2ZUluZmVy
cmVkUHJvcGVydHlXYXRjaHBvaW50OjpoYW5kbGVGaXJlKToKKyAgICAgICAgKiBydW50aW1lL0Vy
cm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpGaW5kRmlyc3RDYWxsZXJGcmFtZVdpdGhD
b2RlYmxvY2tGdW5jdG9yOjpGaW5kRmlyc3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9y
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJs
b2NrRnVuY3Rvcjo6b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZpbmRGaXJz
dENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3I6OmZvdW5kQ2FsbEZyYW1lIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2Nr
RnVuY3Rvcjo6aW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bERh
dGVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojppbml0
aWFsaXplRGF0ZVRpbWVGb3JtYXQpOgorICAgICAgICAoSlNDOjpsb2NhbGVEYXRhKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6dG9EYXRlVGltZU9wdGlvbnNBbnlEYXRlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRs
TnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKEpTQzo6bG9j
YWxlRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlDb25zdHJ1
Y3RvcnMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5UHJvdG90eXBlcy5jcHA6
CisgICAgICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlzLmNwcDoKKyAgICAgICAgKiBydW50aW1l
L051bGxHZXR0ZXJGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6Ok51bGxHZXR0ZXJGdW5jdGlv
bjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpjYWxsUmV0dXJuVW5kZWZpbmVkKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6Ok51bGxTZXR0ZXJGdW5jdGlvbjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpj
YWxsUmV0dXJuVW5kZWZpbmVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1Byb21pc2VE
ZWZlcnJlZFRpbWVyLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvbWlzZURlZmVycmVkVGltZXI6OmRv
V29yayk6CisgICAgICAgIChKU0M6OlByb21pc2VEZWZlcnJlZFRpbWVyOjphZGRQZW5kaW5nUHJv
bWlzZSk6CisgICAgICAgIChKU0M6OlByb21pc2VEZWZlcnJlZFRpbWVyOjpjYW5jZWxQZW5kaW5n
UHJvbWlzZSk6CisgICAgICAgICogcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwOgorICAgICAgICAo
SlNDOjpUeXBlUHJvZmlsZXI6Omluc2VydE5ld0xvY2F0aW9uKToKKyAgICAgICAgKiBydW50aW1l
L1R5cGVQcm9maWxlckxvZy5jcHA6CisgICAgICAgIChKU0M6OlR5cGVQcm9maWxlckxvZzo6cHJv
Y2Vzc0xvZ0VudHJpZXMpOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpwYXJzZUFuZENvbXBpbGUpOgorICAgICAgICAqIHdhc20vV2Fz
bUJCUVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjptb3ZlVG9TdGF0ZSk6
CisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OnBhcnNlQW5kVmFsaWRhdGVNb2R1bGUpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpwcmVwYXJlKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9ucyk6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBs
YW46OmNvbXBsZXRlKToKKyAgICAgICAgKiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjp0cmFwSGFuZGxlcik6CisgICAgICAgICogd2FzbS9XYXNt
T01HUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok9NR1BsYW46Ok9NR1BsYW4pOgorICAg
ICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21QbGFu
LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGxhbjo6ZmFpbCk6CisgICAgICAgICogd2FzbS9X
YXNtU2lnbmF0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2lnbmF0dXJlSW5mb3JtYXRp
b246OmFkb3B0KToKKyAgICAgICAgKiB3YXNtL1dhc21Xb3JrbGlzdC5jcHA6CisgICAgICAgIChK
U0M6Oldhc206OldvcmtsaXN0OjplbnF1ZXVlKToKKwogMjAxNy0wOS0wMyAgWXVzdWtlIFN1enVr
aSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbREZHXSBPcHRpbWl6ZSBXZWFr
TWFwOjpnZXQgYnkgYWRkaW5nIGludHJpbnNpYyBhbmQgZml4dXAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODEzMDgzMGVhODg2
NGE3NGQxZmI3NGFiNTVlOGI3NTk3YjJhMTc0Ni4uYzg5YTk3YWViZjFmOTQ3OGRkMDZmMGYyZjkz
MjhlODJhYTFiNTk2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxNy0wOS0xMSAgS2VpdGggTWls
bGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBEbyB1bmlmaWVkIHNvdXJj
ZSBidWlsZHMgZm9yIEpTQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc2MDc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgc2NyaXB0IHRoYXQgd2lsbCBhdXRvbWF0aWNhbGx5
IGJ1bmRsZSBzb3VyY2UKKyAgICAgICAgZmlsZXMsIHdoaWNoIGlzIGN1cnJlbnRseSBvbmx5IHVz
ZWQgYnkgdGhlIENNYWtlIGJ1aWxkLiBJdCdzCisgICAgICAgIGltcG9ydGFudCB0aGF0IHdlIHVz
ZSB0aGUgc2FtZSBzY3JpcHQgdG8gZ2VuZXJhdGUgdGhlIHRoZSBidW5kbGVzCisgICAgICAgIGZv
ciB0aGUgQ01ha2UgYnVpbGQgYXMgdGhlIFhjb2RlIGJ1aWxkLiBJZiB3ZSBkaWRuJ3QgZG8gdGhp
cyB0aGVuCisgICAgICAgIGl0J3MgbGlrZWx5IHRoYXQgdGhlcmUgd291bGQgYmUgYnVpbGQgZXJy
b3JzIHRoYXQgb2NjdXIgaW4gb25seQorICAgICAgICBvbmUgYnVpbGQgc3lzdGVtLiBPbiB0aGUg
c2FtZSBub3RlLCB3ZSBhbHNvIG5lZWQgdG8gYmUgY2FyZWZ1bCB0bworICAgICAgICBub3QgYnVu
ZGxlIHBsYXRmb3JtIHNwZWNpZmljIHNvdXJjZSBmaWxlcyB3aXRoIHBsYXRmb3JtCisgICAgICAg
IGluZGVwZW5kZW50IG9uZXMuIFRoZXJlIGFyZSBhIGNvdXBsZSBvZiB0aGluZ3MgdGhlIHNjcmlw
dCBkb2VzIG5vdAorICAgICAgICBjdXJyZW50bHkgaGFuZGxlIGJ1dCBhcmUgbm90IGVzc2VudGlh
bCBmb3IgdGhlIENNYWtlIGJ1aWxkLiBGaXJzdCwKKyAgICAgICAgaXQgZG9lcyBub3QgaGFuZGxl
IHRoZSBtYXggYnVuZGxlIHNpemUgcmVzdHJpY3Rpb25zIHRoYXQgdGhlIFhjb2RlCisgICAgICAg
IGJ1aWxkIHdpbGwgcmVxdWlyZS4gSXQgYWxzbyBkb2VzIG5vdCBoYW5kbGUgQyBmaWxlcy4KKwor
ICAgICAgICBUaGUgdW5pZmllZCBzb3VyY2UgZ2VuZXJhdG9yIHNjcmlwdCB3b3JrcyBieSBjb2xs
ZWN0aW5nIGdyb3VwcyBvZgorICAgICAgICB1cCB0byA4IGZpbGVzIGZyb20gdGhlIHNhbWUgZGly
ZWN0b3J5LiBXZSBkb24ndCBidW5kbGUgZmlsZXMgZnJvbQorICAgICAgICBhY3Jvc3MgZGlyZWN0
b3JpZXMgc2luY2UgSSBkaWRuJ3Qgc2VlIGEgc3BlZWR1cCBmcm9tIGRvaW5nCisgICAgICAgIHNv
LiBBZGRpdGlvbmFsbHksIHNwbGl0dGluZyBhdCB0aGUgZGlyZWN0b3J5IGJvdW5kYXJ5IG1lYW5z
IHRoYXQKKyAgICAgICAgaXQgaXMgbGVzcyBsaWtlbHkgdGhhdCBhZGRpbmcgYSBuZXcgZmlsZSB3
aWxsIGZvcmNlIGEgImNsZWFuIgorICAgICAgICBidWlsZC4gVGhpcyB3b3VsZCBoYXBwZW4gYmVj
YXVzZSB0aGUgbmV3IGZpbGUgd2lsbCBzaGlmdCBldmVyeQorICAgICAgICBzdWJzZXF1ZW50IGZp
bGUgaW50byB0aGUgbmV4dCB1bmlmaWVkIHNvdXJjZSBidW5kbGUuCisKKyAgICAgICAgVXNpbmcg
dW5pZmllZCBzb3VyY2VzIGFwcGVhcnMgdG8gYmUgYSByb3VnaGx5IDMuNXggYnVpbGQgdGltZQor
ICAgICAgICBzcGVlZCB1cCBmb3IgY2xlYW4gYnVpbGRzIG9uIG15IE1CUCBhbmQgYXBwZWFycyB0
byBoYXZlIGEKKyAgICAgICAgbmVnbGlnaWJsZSBlZmZlY3QgaW4gaW5jcmVtZW50YWwgYnVpbGRz
LgorCisgICAgICAgICogZ2VuZXJhdGUtdW5pZmllZC1zb3VyY2UtYnVuZGxlcy5yYjogQWRkZWQu
CisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuaDoKKwogMjAxNy0wOS0xMSAgUnlhbiBIYWRkYWQg
IDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMjIxODU0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGRhMWJhMWQ5
YmUxNTdiNTgzYzgxMDc4YmFkYmVmZGVhZDViYjIwZmEuLjhjNGQzMmU2MDE0MTI2N2MyOTU0MmU1
NzhlNmExMWJkODcwM2RlMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTQ2LDcgKzQ2LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9S
SUVTCiAgICAgIiR7SUNVX0lOQ0xVREVfRElSU30iCiApCiAKLXNldChKYXZhU2NyaXB0Q29yZV9T
T1VSQ0VTCitzZXQoSmF2YVNjcmlwdENvcmVfT0dfU09VUkNFUwogICAgIEFQSS9KU0Jhc2UuY3Bw
CiAgICAgQVBJL0pTQ1Rlc3RSdW5uZXJVdGlscy5jcHAKICAgICBBUEkvSlNDYWxsYmFja0NvbnN0
cnVjdG9yLmNwcApAQCAtODc5LDcgKzg3OSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VT
CiAgICAgcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcAogICAgIHJ1bnRpbWUvUHJvdG90eXBlTWFw
LmNwcAogICAgIHJ1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAKLSAgICBydW50aW1lL1Byb3h5
T2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvUHJveHlSZXZva2UuY3BwCiAgICAgcnVudGltZS9SZWZs
ZWN0T2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvUmVnRXhwLmNwcApAQCAtMTAxNyw2ICsxMDE2LDMx
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgeWFyci9ZYXJyU3ludGF4Q2hlY2tl
ci5jcHAKICkKIAorCitmb3JlYWNoIChfc291cmNlRmlsZSBJTiBMSVNUUyBKYXZhU2NyaXB0Q29y
ZV9PR19TT1VSQ0VTKQorICAgIGlmIChOT1QgKCR7X3NvdXJjZUZpbGV9IE1BVENIRVMgIi4qYyQi
KSkKKyAgICAgICAgc2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzKCR7X3NvdXJjZUZpbGV9IFBS
T1BFUlRJRVMgSEVBREVSX0ZJTEVfT05MWSBPTikKKyAgICAgICAgbGlzdChBUFBFTkQgSmF2YVNj
cmlwdENvcmVfSEVBREVSUyAke19zb3VyY2VGaWxlfSkKKyAgICBlbmRpZiAoKQorZW5kZm9yZWFj
aCAoKQorCitleGVjdXRlX3Byb2Nlc3MoQ09NTUFORCAke1JVQllfRVhFQ1VUQUJMRX0gJHtDTUFL
RV9DVVJSRU5UX1NPVVJDRV9ESVJ9Ly4uL1dURi9nZW5lcmF0ZS11bmlmaWVkLXNvdXJjZS1idW5k
bGVzLnJiCisgICItLWRlcml2ZWQtc291cmNlcy1wYXRoIiAke0RFUklWRURfU09VUkNFU19KQVZB
U0NSSVBUQ09SRV9ESVJ9ICR7SmF2YVNjcmlwdENvcmVfT0dfU09VUkNFU30KKyAgUkVTVUxUX1ZB
UklBQkxFIGdlbmVyYXRlVW5pZmllZFNvdXJjZXNSZXN1bHQKKyAgT1VUUFVUX1ZBUklBQkxFIGdl
bmVyYXRlVW5pZmllZFNvdXJjZXNPdXRwdXQKKykKKworaWYgKCR7Z2VuZXJhdGVVbmlmaWVkU291
cmNlc1Jlc3VsdH0pCisgICAgbWVzc2FnZSgiV0FSTklORzogdW5pZmllZC1zb3VyY2UtYnVuZGxl
ci5yYiBleGl0ZWQgd2l0aCBub24temVybyBzdGF0dXMgbm90IGFwcGVuZGluZyByZXN1bHRzIikK
K2Vsc2UgKCkKKyAgICBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTICR7Z2VuZXJh
dGVVbmlmaWVkU291cmNlc091dHB1dH0pCitlbmRpZiAoKQorCisjIFRoZXNlIGFyZSBzcGVjaWFs
IGZpbGVzIHRoYXQgd2UgY2FuJ3Qgb3IgZG9uJ3Qgd2FudCB0byB1bmlmaWVkIHNvdXJjZSBjb21w
aWxlCitsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCisgICAgcnVudGltZS9Qcm94
eU9iamVjdC5jcHAKKykKKwogIyBFeHRyYSBmbGFncyBmb3IgY29tcGlsZSBzb3VyY2VzIGNhbiBn
byBoZXJlLgogaWYgKE5PVCBNU1ZDKQogICAgIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcyhy
dW50aW1lL1Byb3h5T2JqZWN0LmNwcCBQUk9QRVJUSUVTIENPTVBJTEVfRkxBR1MgLWZuby1vcHRp
bWl6ZS1zaWJsaW5nLWNhbGxzKQpAQCAtMTMzNiw2ICsxMzYwLDcgQEAgYWRkX2N1c3RvbV9jb21t
YW5kKAogICAgIE1BSU5fREVQRU5ERU5DWSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vY3Jl
YXRlX3JlZ2V4X3RhYmxlcwogICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFL
RV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2NyZWF0ZV9yZWdleF90YWJsZXMgPiAke0RFUklWRURfU09V
UkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L1JlZ0V4cEppdFRhYmxlcy5oCiAgICAgVkVSQkFUSU0p
CitsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vUmVnRXhwSml0VGFibGVzLmgpCiBXRUJLSVRfQUREX1NPVVJDRV9E
RVBFTkRFTkNJRVMoJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3lhcnIvWWFyclBhdHRlcm4u
Y3BwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vUmVnRXhwSml0VGFibGVz
LmgpCiAKIGFkZF9jdXN0b21fY29tbWFuZCgKQEAgLTEzNTYsNiArMTM4MSw3IEBAIGFkZF9jdXN0
b21fY29tbWFuZCgKICAgICBERVBFTkRTICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9wYXJz
ZXIvS2V5d29yZHMudGFibGUKICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7Q01B
S0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9LZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5ICR7Q01BS0Vf
Q1VSUkVOVF9TT1VSQ0VfRElSfS9wYXJzZXIvS2V5d29yZHMudGFibGUgPiAke0RFUklWRURfU09V
UkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0tleXdvcmRMb29rdXAuaAogICAgIFZFUkJBVElNKQor
bGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUyAke0RFUklWRURfU09VUkNFU19KQVZB
U0NSSVBUQ09SRV9ESVJ9L0tleXdvcmRMb29rdXAuaCkKIFdFQktJVF9BRERfU09VUkNFX0RFUEVO
REVOQ0lFUygke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vcGFyc2VyL0xleGVyLmNwcCAke0RF
UklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0tleXdvcmRMb29rdXAuaCkKIAogCkBA
IC0xNTAzLDcgKzE1MjksNyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgV09SS0lOR19ESVJF
Q1RPUlkgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfQogKQogCi1saXN0KEFQ
UEVORCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCitsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9I
RUFERVJTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9BaXJPcGNv
ZGUuaAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vQWlyT3Bjb2Rl
R2VuZXJhdGVkLmgKICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0No
ZWNrU3BlY2lhbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwu
Y3BwCmluZGV4IGJlYjg3OTI4NTg4ZmQ1YjZkNzMxMGY3ZjM0ODViYzE3NWJhM2RiZmYuLjdjNTM3
MmFjNWUyNzExNDE5OTNmNzhiZTE2ODNlMDkzMTg1M2M4OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcApAQCAtMzYsMTEgKzM2LDEzIEBACiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi11c2luZyBuYW1lc3BhY2UgQWlyOwordXNpbmcg
SW5zdCA9IEFpcjo6SW5zdDsKK3VzaW5nIEFyZyA9IEFpcjo6QXJnOwordXNpbmcgR2VuZXJhdGlv
bkNvbnRleHQgPSBBaXI6OkdlbmVyYXRpb25Db250ZXh0OwogCiBuYW1lc3BhY2UgewogCi11bnNp
Z25lZCBudW1CM0FyZ3MoQjM6OktpbmQga2luZCkKK3Vuc2lnbmVkIG51bUIzQXJncyhLaW5kIGtp
bmQpCiB7CiAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7CiAgICAgY2FzZSBDaGVja0FkZDoK
QEAgLTEwOCw2ICsxMTAsNyBAQCBJbnN0IENoZWNrU3BlY2lhbDo6aGlkZGVuQnJhbmNoKGNvbnN0
IEluc3QmIGluc3QpIGNvbnN0CiAKIHZvaWQgQ2hlY2tTcGVjaWFsOjpmb3JFYWNoQXJnKEluc3Qm
IGluc3QsIGNvbnN0IFNjb3BlZExhbWJkYTxJbnN0OjpFYWNoQXJnQ2FsbGJhY2s+JiBjYWxsYmFj
aykKIHsKKyAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAgIHN0ZDo6b3B0aW9uYWw8V2lkdGg+
IG9wdGlvbmFsRGVmQXJnV2lkdGg7CiAgICAgSW5zdCBoaWRkZW4gPSBoaWRkZW5CcmFuY2goaW5z
dCk7CiAgICAgaGlkZGVuLmZvckVhY2hBcmcoCkBAIC0xNTYsNiArMTU5LDcgQEAgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gQ2hlY2tTcGVjaWFsOjpzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0JiBp
bnN0KQogCiBDQ2FsbEhlbHBlcnM6Okp1bXAgQ2hlY2tTcGVjaWFsOjpnZW5lcmF0ZShJbnN0JiBp
bnN0LCBDQ2FsbEhlbHBlcnMmIGppdCwgR2VuZXJhdGlvbkNvbnRleHQmIGNvbnRleHQpCiB7Cisg
ICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZmFpbCA9IGhp
ZGRlbkJyYW5jaChpbnN0KS5nZW5lcmF0ZShqaXQsIGNvbnRleHQpOwogICAgIEFTU0VSVChmYWls
LmlzU2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNEdXBs
aWNhdGVUYWlscy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNEdXBsaWNhdGVUYWls
cy5jcHAKaW5kZXggZmQ2NTc5MGU5OWMyZmVhZDRmNWZiYjllYWY2MGMxYTc1YzkzMjI1NS4uY2Zm
NDRhNGMxZTAwOTFlYmE0YTc4M2IzOGYzNWEzYmRjZWQxYmNmNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzRHVwbGljYXRlVGFpbHMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0R1cGxpY2F0ZVRhaWxzLmNwcApAQCAtNDQsNyArNDQsOSBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2
ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgQjNEdXBsaWNhdGVUYWlsc0ludGVybmFsIHsKK3N0
YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogY2xhc3MgRHVwbGljYXRlVGFp
bHMgewogcHVibGljOgpAQCAtOTQsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICAgICAgZGVtb3RlVmFsdWVzKG1fcHJvYywgdmFsdWVzVG9EZW1vdGUpOwot
ICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoQjNEdXBsaWNhdGVUYWlsc0ludGVy
bmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJQcm9jZWR1cmUgYWZ0ZXIgdmFs
dWUgZGVtb3Rpb246XG4iKTsKICAgICAgICAgICAgIGRhdGFMb2cobV9wcm9jKTsKICAgICAgICAg
fQpAQCAtMTE2LDcgKzExOCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIHBvaW50LgogICAg
ICAgICAgICAgY2FuZGlkYXRlcy5yZW1vdmUoYmxvY2spOwogCi0gICAgICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgICAgIGlmIChCM0R1cGxpY2F0ZVRhaWxzSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICAgICAgZGF0YUxvZygiRHVwbGljYXRpbmcgIiwgKnRhaWwsICIgaW50byAi
LCAqYmxvY2ssICJcbiIpOwogCiAgICAgICAgICAgICBibG9jay0+cmVtb3ZlTGFzdChtX3Byb2Mp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9u
U3ViZXhwcmVzc2lvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWxpbWluYXRl
Q29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCmluZGV4IDFhZTQzNTU2MTUxN2U5MWMwOWU2NjhjNjll
YWZjMTU0YTc0OGJkZTYuLjlhMmU5OGFhNDM4NTYyODAwOWYxMmE0NDUyNGE0ZDFhZmY1NWY5YmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1
YmV4cHJlc3Npb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5h
dGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAKQEAgLTUzLDcgKzUzLDkgQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5hbWVzcGFjZSB7CiAKLWNvbnN0IGJvb2wgdmVyYm9zZSA9
IGZhbHNlOworbmFtZXNwYWNlIEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5h
bCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIC8vIEZJWE1FOiBX
ZSBjb3VsZCB0cmVhdCBQYXRjaHBvaW50cyB3aXRoIGEgbm9uLWVtcHR5IHNldCBvZiByZWFkcyBh
cyBhICJtZW1vcnkgdmFsdWUiIGFuZCBzb21laG93CiAvLyBlbGltaW5hdGUgcmVkdW5kYW50IG9u
ZXMuIFdlIHdvdWxkIG5lZWQgc29tZSB3YXkgb2YgZGV0ZXJtaW5pbmcgaWYgdHdvIHBhdGNocG9p
bnRzIGFyZSByZXBsYWNhYmxlLgpAQCAtMTYwLDcgKzE2Miw3IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgcnVuKCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQjNFbGlt
aW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ZGF0YUxvZygiQjMgYmVmb3JlIENTRTpcbiIsIG1fcHJvYyk7CiAgICAgICAgIAogICAgICAgICBt
X3Byb2MucmVzZXRWYWx1ZU93bmVycygpOwpAQCAtMTg4LDcgKzE5MCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICAgICAgZGF0YS5tZW1vcnlWYWx1ZXNBdFRhaWwuYWRkKG1lbW9yeSk7CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYg
KEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJCbG9jayAiLCAqYmxvY2ssICI6ICIsIGRhdGEsICJcbiIpOwog
ICAgICAgICB9CiAKQEAgLTE5Niw3ICsxOTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZlY3RvcjxC
YXNpY0Jsb2NrKj4gcG9zdE9yZGVyID0gbV9wcm9jLmJsb2Nrc0luUG9zdE9yZGVyKCk7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IHBvc3RPcmRlci5zaXplKCk7IGktLTspIHsKICAgICAgICAg
ICAgIG1fYmxvY2sgPSBwb3N0T3JkZXJbaV07Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiTG9va2luZyBhdCAiLCAqbV9ibG9jaywg
IjpcbiIpOwogCiAgICAgICAgICAgICBtX2RhdGEgPSBJbXB1cmVCbG9ja0RhdGEoKTsKQEAgLTIy
Miw3ICsyMjQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRl
KGJsb2NrKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAo
QjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgZGF0YUxvZygiQjMgYWZ0ZXIgQ1NFOlxuIiwgbV9wcm9jKTsKIAogICAgICAgICByZXR1
cm4gbV9jaGFuZ2VkOwpAQCAtNDg3LDcgKzQ4OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGV4
cGVuc2l2ZSwgYnV0IGluIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3JpdHkgb2YgY2FzZXMgaXQgd2ls
bCBhbG1vc3QgaW1tZWRpYXRlbHkgaGl0IGFuIAogICAgICAgICAvLyBvcGVyYXRpb24gdGhhdCBp
bnRlcmZlcmVzLgogCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQjNFbGltaW5h
dGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0
YUxvZygqbV92YWx1ZSwgIjogbG9va2luZyBmb3J3YXJkIGZvciBzdG9yZXMgdG8gIiwgKnB0ciwg
Ii4uLlxuIik7CiAKICAgICAgICAgLy8gRmlyc3Qgc2VhcmNoIGZvcndhcmQgaW4gdGhpcyBiYXNp
YyBibG9jay4KQEAgLTU1Nyw3ICs1NTksNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAobWF0Y2hl
cy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJFbGltaW5hdGluZyAiLCAqbV92YWx1
ZSwgIiBkdWUgdG8gIiwgcG9pbnRlckxpc3REdW1wKG1hdGNoZXMpLCAiXG4iKTsKICAgICAgICAg
CiAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CkBAIC01NjYsNyArNTY4LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBkb21pbmF0aW5nTWF0Y2ggPSBtYXRjaGVzWzBdOwog
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9kb21pbmF0b3JzLmRvbWluYXRlcyhkb21pbmF0
aW5nTWF0Y2gtPm93bmVyLCBtX2Jsb2NrKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lv
bnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRWxpbWlu
YXRpbmcgdXNpbmcgIiwgKmRvbWluYXRpbmdNYXRjaCwgIlxuIik7CiAgICAgICAgICAgICBWZWN0
b3I8VmFsdWUqPiBleHRyYVZhbHVlczsKICAgICAgICAgICAgIGlmIChWYWx1ZSogdmFsdWUgPSBy
ZXBsYWNlKGRvbWluYXRpbmdNYXRjaCwgZXh0cmFWYWx1ZXMpKSB7CkBAIC01OTAsNyArNTkyLDcg
QEAgcHJpdmF0ZToKIAogICAgICAgICBWYXJpYWJsZVZhbHVlKiBnZXQgPSBtX2luc2VydGlvblNl
dC5pbnNlcnQ8VmFyaWFibGVWYWx1ZT4oCiAgICAgICAgICAgICBtX2luZGV4LCBHZXQsIG1fdmFs
dWUtPm9yaWdpbigpLCB2YXJpYWJsZSk7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBp
ZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICAgICAgZGF0YUxvZygiICAgIEluc2VydGluZyBnZXQgb2YgdmFsdWU6ICIsICpnZXQsICJc
biIpOwogICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KGdldCk7CiAgICAgICAg
ICAgICAKQEAgLTYxNSwyMyArNjE3LDIzIEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRmlsdGVyPgogICAgIE1lbW9yeU1hdGNoZXMgZmluZE1lbW9yeVZhbHVlKFZhbHVlKiBwdHIs
IEhlYXBSYW5nZSByYW5nZSwgY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiAgICAgewotICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coKm1fdmFsdWUsICI6IGxvb2tp
bmcgYmFja3dhcmQgZm9yICIsICpwdHIsICIuLi5cbiIpOwogICAgICAgICAKICAgICAgICAgaWYg
KG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpKSB7Ci0gICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Np
b25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEdpdmlu
ZyB1cCBiZWNhdXNlIGZlbmNlcy5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgaWYgKE1lbW9yeVZhbHVlKiBtYXRjaCA9IG1fZGF0YS5t
ZW1vcnlWYWx1ZXNBdFRhaWwuZmluZChwdHIsIGZpbHRlcikpIHsKLSAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRm91bmQgIiwg
Km1hdGNoLCAiIGxvY2FsbHkuXG4iKTsKICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoIH07CiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAobV9kYXRhLndyaXRlcy5vdmVybGFwcyhyYW5nZSkpIHsK
LSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29t
bW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1c2Ugb2Ygd3JpdGVzLlxuIik7CiAgICAgICAgICAgICBy
ZXR1cm4geyB9OwogICAgICAgICB9CkBAIC02NDIsMjcgKzY0NCwyNyBAQCBwcml2YXRlOgogICAg
ICAgICBNZW1vcnlNYXRjaGVzIG1hdGNoZXM7CiAKICAgICAgICAgd2hpbGUgKEJhc2ljQmxvY2sq
IGJsb2NrID0gd29ya2xpc3QucG9wKCkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgTG9va2luZyBhdCAiLCAqYmxvY2ss
ICJcbiIpOwogCiAgICAgICAgICAgICBJbXB1cmVCbG9ja0RhdGEmIGRhdGEgPSBtX2ltcHVyZUJs
b2NrRGF0YVtibG9ja107CiAKICAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBtYXRjaCA9IGRhdGEu
bWVtb3J5VmFsdWVzQXRUYWlsLmZpbmQocHRyLCBmaWx0ZXIpOwogICAgICAgICAgICAgaWYgKG1h
dGNoICYmIG1hdGNoICE9IG1fdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRm91bmQgbWF0
Y2g6ICIsICptYXRjaCwgIlxuIik7CiAgICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQobWF0
Y2gpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBpZiAoZGF0YS53cml0ZXMub3ZlcmxhcHMocmFuZ2UpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhw
cmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
ICAgIEdpdmluZyB1cCBiZWNhdXNlIG9mIHdyaXRlcy5cbiIpOwogICAgICAgICAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghYmxvY2stPm51bVBy
ZWRlY2Vzc29ycygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAg
ICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEdpdmluZyB1cCBiZWNhdXNlIGl0
J3MgbGl2ZSBhdCByb290LlxuIik7CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBlc3NlbnRpYWxs
eSBwcm92ZXMgdGhhdCB0aGlzIGlzIGxpdmUgYXQgdGhlIHByb2xvZ3VlLiBUaGF0IG1lYW5zIHRo
YXQgd2UKICAgICAgICAgICAgICAgICAvLyBjYW5ub3QgcmVsaWFibHkgb3B0aW1pemUgdGhpcyBj
YXNlLgpAQCAtNjcyLDcgKzY3NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3b3JrbGlzdC5w
dXNoQWxsKGJsb2NrLT5wcmVkZWNlc3NvcnMoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBHb3QgbWF0Y2hlczogIiwg
cG9pbnRlckxpc3REdW1wKG1hdGNoZXMpLCAiXG4iKTsKICAgICAgICAgcmV0dXJuIG1hdGNoZXM7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRml4U1NBLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZpeFNTQS5jcHAKaW5kZXggZDIwMzgxZDIw
MjJmYTA0ZjI2M2E4N2VmYjFiM2NkOTIwMmU2NzU4YS4uYjI4ZjIxZjExMDdjODI2ZmFmNjJiM2Y4
MzcwNjI1ODM2ODdlMzdmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
Rml4U1NBLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGaXhTU0EuY3BwCkBA
IC00OCw3ICs0OCw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBuYW1lc3Bh
Y2UgewogCi1jb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBCM0ZpeFNTQUlu
dGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogdm9pZCBr
aWxsRGVhZFZhcmlhYmxlcyhQcm9jZWR1cmUmIHByb2MpCiB7CkBAIC0xNTcsNyArMTU5LDcgQEAg
dm9pZCBmaXhTU0FHbG9iYWxseShQcm9jZWR1cmUmIHByb2MpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFZhbHVl
KiBwaGkgPSBwcm9jLmFkZDxWYWx1ZT4oUGhpLCB2YXJpYWJsZS0+dHlwZSgpLCBibG9jay0+YXQo
MCktPm9yaWdpbigpKTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAg
ICAgICAgIGlmIChCM0ZpeFNTQUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAiQWRkaW5nIFBoaSBmb3IgIiwg
cG9pbnRlckR1bXAodmFyaWFibGUpLCAiIGF0ICIsICpibG9jaywgIjogIiwKICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlZXBEdW1wKHByb2MsIHBoaSksICJcbiIpOwpAQCAtMjMxLDcgKzIzMyw3
IEBAIHZvaWQgZml4U1NBR2xvYmFsbHkoUHJvY2VkdXJlJiBwcm9jKQogICAgICAgICAgICAgICAg
IFZhcmlhYmxlKiB2YXJpYWJsZSA9IGNhbGNWYXJUb1ZhcmlhYmxlW2NhbGNWYXItPmluZGV4KCld
OwogCiAgICAgICAgICAgICAgICAgVmFsdWUqIG1hcHBlZFZhbHVlID0gZW5zdXJlTWFwcGluZyh2
YXJpYWJsZSwgdXBzaWxvbkluc2VydGlvblBvaW50LCB1cHNpbG9uT3JpZ2luKTsKLSAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgICAgIGlmIChCM0ZpeFNTQUludGVy
bmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAg
ICAgICAgICAgICAgICAiTWFwcGVkIHZhbHVlIGZvciAiLCAqdmFyaWFibGUsICIgd2l0aCBzdWNj
ZXNzb3IgUGhpICIsICpwaGksCiAgICAgICAgICAgICAgICAgICAgICAgICAiIGF0IGVuZCBvZiAi
LCAqYmxvY2ssICI6ICIsIHBvaW50ZXJEdW1wKG1hcHBlZFZhbHVlKSwgIlxuIik7CkBAIC0yNDUs
NyArMjQ3LDcgQEAgdm9pZCBmaXhTU0FHbG9iYWxseShQcm9jZWR1cmUmIHByb2MpCiAgICAgICAg
IGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKICAgICB9CiAKLSAgICBpZiAodmVyYm9zZSkg
eworICAgIGlmIChCM0ZpeFNTQUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2co
IkIzIGFmdGVyIFNTQSBjb252ZXJzaW9uOlxuIik7CiAgICAgICAgIGRhdGFMb2cocHJvYyk7CiAg
ICAgfQpAQCAtMjY2LDcgKzI2OCw3IEBAIHZvaWQgZGVtb3RlVmFsdWVzKFByb2NlZHVyZSYgcHJv
YywgY29uc3QgSW5kZXhTZXQ8VmFsdWUqPiYgdmFsdWVzKQogICAgICAgICAgICAgcGhpTWFwLmFk
ZCh2YWx1ZSwgcHJvYy5hZGRWYXJpYWJsZSh2YWx1ZS0+dHlwZSgpKSk7CiAgICAgfQogCi0gICAg
aWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoQjNGaXhTU0FJbnRlcm5hbDo6dmVyYm9zZSkgewogICAg
ICAgICBkYXRhTG9nKCJEZW1vdGluZyB2YWx1ZXMgYXMgZm9sbG93czpcbiIpOwogICAgICAgICBk
YXRhTG9nKCIgICBtYXAgPSAiKTsKICAgICAgICAgQ29tbWFQcmludGVyIGNvbW1hOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRm9sZFBhdGhDb25zdGFudHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRm9sZFBhdGhDb25zdGFudHMuY3BwCmluZGV4IGI5
YmRjOGQ0ZjI4OGI4MmM2MzMxZWYzMTBkMzMzZTNhNTY0N2UwNGQuLjIyMjUwY2JjN2YzNWM0Y2Zj
Zjk5MTZhNWFiMmVlNzI2YWZjNGFkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0ZvbGRQYXRoQ29uc3RhbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNGb2xkUGF0aENvbnN0YW50cy5jcHAKQEAgLTQxLDcgKzQxLDkgQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5hbWVzcGFjZSB7CiAKLWNvbnN0IGJvb2wgdmVyYm9zZSA9
IGZhbHNlOworbmFtZXNwYWNlIEIzRm9sZFBhdGhDb25zdGFudHNJbnRlcm5hbCB7CitzdGF0aWMg
Y29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIEZvbGRQYXRoQ29uc3RhbnRz
IHsKIHB1YmxpYzoKQEAgLTU1LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgYm9v
bCBjaGFuZ2VkID0gZmFsc2U7CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChC
M0ZvbGRQYXRoQ29uc3RhbnRzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9n
KCJCMyBiZWZvcmUgZm9sZGluZyBwYXRoIGNvbnN0YW50czogXG4iLCBtX3Byb2MsICJcbiIpOwog
ICAgICAgICAKICAgICAgICAgLy8gRmluZCBhbGwgb2YgdGhlIHZhbHVlcyB0aGF0IGFyZSB0aGUg
c3ViamVjdCBvZiBhIGJyYW5jaCBvciBzd2l0Y2guIEZvciBhbnkgc3VjY2Vzc29yCkBAIC04MCw3
ICs4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChvdGhl
ck92ZXJyaWRlLCBvdGhlck92ZXJyaWRlLmJsb2NrICE9IG92ZXJyaWRlLmJsb2NrKTsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNG
b2xkUGF0aENvbnN0YW50c0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFM
b2coIk92ZXJyaWRpbmcgIiwgKnZhbHVlLCAiIGZyb20gIiwgKmZyb20sICI6ICIsIG92ZXJyaWRl
LCAiXG4iKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yVmFsdWUuYXBwZW5kKG92ZXJy
aWRlKTsKQEAgLTE0OSw3ICsxNTEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdCA9IG92ZXJyaWRlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAodmVyYm9z
ZSkKKyAgICAgICAgICAgIGlmIChCM0ZvbGRQYXRoQ29uc3RhbnRzSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICAgICAgZGF0YUxvZygiSW4gYmxvY2sgIiwgKmJsb2NrLCAiIGdldHRpbmcg
b3ZlcnJpZGUgZm9yICIsICp2YWx1ZSwgIjogIiwgcmVzdWx0LCAiXG4iKTsKIAogICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0luZmVyU3dpdGNoZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5mZXJTd2l0
Y2hlcy5jcHAKaW5kZXggZjI5ZjRmMDk1NGIyYWU3MjAwNWExMzAyZWZmY2NkNGUzNGRmYjg3OC4u
ZWU2MTJmZWYyOGM2YTc3YWFjMTVjOThhOTdhYzkzOTJiMTNjNWFkMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5mZXJTd2l0Y2hlcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzSW5mZXJTd2l0Y2hlcy5jcHAKQEAgLTQyLDcgKzQyLDkgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5hbWVzcGFjZSB7CiAKLWNvbnN0IGJvb2wg
dmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsIHsKK3N0
YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogY2xhc3MgSW5mZXJTd2l0Y2hl
cyB7CiBwdWJsaWM6CkBAIC01NSw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIHJ1
bigpCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEIzSW5mZXJTd2l0
Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQjMgYmVmb3JlIGlu
ZmVyU3dpdGNoZXM6XG4iLCBtX3Byb2MpOwogICAgICAgICAKICAgICAgICAgYm9vbCBjaGFuZ2Vk
ID0gdHJ1ZTsKQEAgLTYzLDcgKzY1LDcgQEAgcHVibGljOgogICAgICAgICB3aGlsZSAoY2hhbmdl
ZCkgewogICAgICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwogICAgICAgICAgICAgCi0gICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJQZXJmb3JtaW5nIGZpeHBvaW50
IGl0ZXJhdGlvbjpcbiIpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKEJhc2ljQmxv
Y2sqIGJsb2NrIDogbV9wcm9jKQpAQCAtNzgsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIG1fcHJvYy5kZWxldGVPcnBoYW5zKCk7CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0lu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkIzIGFmdGVyIGluZmVy
U3dpdGNoZXM6XG4iLCBtX3Byb2MpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KQEAgLTk2LDEwICs5OCwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAKICAgICAgICAgU3dpdGNoRGVzY3JpcHRpb24gZGVzY3JpcHRpb24gPSBkZXNj
cmliZShibG9jayk7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQjNJbmZlclN3
aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJEZXNjcmlwdGlv
biBvZiBwcmltYXJ5IGJsb2NrICIsICpibG9jaywgIjogIiwgZGVzY3JpcHRpb24sICJcbiIpOwog
ICAgICAgICBpZiAoIWRlc2NyaXB0aW9uKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGluZyBiZWNhdXNlIG5vdCBzd2l0Y2gtbGlrZS5cbiIp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0xMTUsMTcgKzExNywx
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYg
KHZhbHVlID09IGRlc2NyaXB0aW9uLmJyYW5jaCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzSW5mZXJTd2l0Y2hl
c0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBCYWlsaW5n
IGJlY2F1c2Ugb2YgIiwgZGVlcER1bXAobV9wcm9jLCB2YWx1ZSksICJcbiIpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBCYXNpY0Jsb2Nr
KiBwcmVkZWNlc3NvciA9IGJsb2NrLT5wcmVkZWNlc3NvcigwKTsKICAgICAgICAgU3dpdGNoRGVz
Y3JpcHRpb24gcHJlZGVjZXNzb3JEZXNjcmlwdGlvbiA9IGRlc2NyaWJlKHByZWRlY2Vzc29yKTsK
LSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBEZXNjcmlwdGlvbiBvZiBwcmVk
ZWNlc3NvciBibG9jayAiLCAqcHJlZGVjZXNzb3IsICI6ICIsIHByZWRlY2Vzc29yRGVzY3JpcHRp
b24sICJcbiIpOwogICAgICAgICBpZiAoIXByZWRlY2Vzc29yRGVzY3JpcHRpb24pIHsKLSAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBCYWlsaW5nIGJlY2F1
c2Ugbm90IHN3aXRjaC1saWtlLlxuIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KQEAgLTEzMyw3ICsxMzUsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBCb3RoIHVzIGFu
ZCB0aGUgcHJlZGVjZXNzb3IgYXJlIHN3aXRjaC1saWtlLCBidXQgdGhhdCBkb2Vzbid0IG1lYW4g
dGhhdCB3ZSdyZSBjb21wYXRpYmxlLgogICAgICAgICAvLyBXZSBtYXkgYmUgc3dpdGNoaW5nIG9u
IGRpZmZlcmVudCB2YWx1ZXMhCiAgICAgICAgIGlmIChkZXNjcmlwdGlvbi5zb3VyY2UgIT0gcHJl
ZGVjZXNzb3JEZXNjcmlwdGlvbi5zb3VyY2UpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgICAgIGRhdGFMb2coIiAgICBCYWlsaW5nIGJlY2F1c2Ugc291cmNlcyBkb24ndCBtYXRj
aC5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0xNDMsNyAr
MTQ1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8ganVzdCB0b3RhbGx5IHJlZHVuZGFudCBhbmQg
d2Ugc2hvdWxkIGJlIGdldHRpbmcgcmlkIG9mIGl0LiBCdXQgd2UgZG9uJ3QgaGFuZGxlIHRoYXQg
aGVyZSwKICAgICAgICAgLy8geWV0LgogICAgICAgICBpZiAocHJlZGVjZXNzb3JEZXNjcmlwdGlv
bi5mYWxsVGhyb3VnaC5ibG9jaygpICE9IGJsb2NrKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9z
ZSkKKyAgICAgICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGluZyBiZWNhdXNlIGZhbGwtdGhyb3VnaCBv
ZiBwcmVkZWNlc3NvciBpcyBub3QgdGhlIHByaW1hcnkgYmxvY2suXG4iKTsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMTUxLDE0ICsxNTMsMTQgQEAgcHJpdmF0ZToK
ICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlcmUgYWluJ3Qgbm8gbG9vcHMuCiAgICAgICAg
IGlmIChkZXNjcmlwdGlvbi5mYWxsVGhyb3VnaC5ibG9jaygpID09IGJsb2NrCiAgICAgICAgICAg
ICB8fCBkZXNjcmlwdGlvbi5mYWxsVGhyb3VnaC5ibG9jaygpID09IHByZWRlY2Vzc29yKSB7Ci0g
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGluZyBi
ZWNhdXNlIG9mIGZhbGwtdGhyb3VnaCBsb29wLlxuIik7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KICAgICAgICAgZm9yIChTd2l0Y2hDYXNlIHN3aXRjaENhc2UgOiBkZXNj
cmlwdGlvbi5jYXNlcykgewogICAgICAgICAgICAgaWYgKHN3aXRjaENhc2UudGFyZ2V0QmxvY2so
KSA9PSBibG9jawogICAgICAgICAgICAgICAgIHx8IHN3aXRjaENhc2UudGFyZ2V0QmxvY2soKSA9
PSBwcmVkZWNlc3NvcikgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAg
ICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiICAgIEJhaWxpbmcgYmVjYXVzZSBvZiBsb29wIGluIHByaW1hcnkg
Y2FzZXMuXG4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9
CkBAIC0xNjYsMTMgKzE2OCwxMyBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKFN3aXRjaENhc2Ug
c3dpdGNoQ2FzZSA6IHByZWRlY2Vzc29yRGVzY3JpcHRpb24uY2FzZXMpIHsKICAgICAgICAgICAg
IGlmIChzd2l0Y2hDYXNlLnRhcmdldEJsb2NrKCkgPT0gYmxvY2sKICAgICAgICAgICAgICAgICB8
fCBzd2l0Y2hDYXNlLnRhcmdldEJsb2NrKCkgPT0gcHJlZGVjZXNzb3IpIHsKLSAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQjNJbmZlclN3aXRjaGVzSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBCYWlsaW5n
IGJlY2F1c2Ugb2YgbG9vcCBpbiBwcmVkZWNlc3NvciBjYXNlcy5cbiIpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBEb2luZyBpdCFcbiIpOwogICAgICAg
ICAvLyBXZSdyZSBjb21taXR0ZWQgdG8gZG9pbmcgdGhlIHRoaW5nLgogICAgICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6
YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJP
cHRpbWl6YXRpb25zLmNwcAppbmRleCA5NjNjMTBlZGM1ZTQ5MzlmNWZiZTJlZDQyNTY0ZGQzZDdl
MDc2M2RkLi4xNDU2N2ZjYzViZGFjOWUwZjhlNzE4MTY4ZDZmZjI3NzBjNjQ4ZmFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0
aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRl
ck9wdGltaXphdGlvbnMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoQjNfSklU
KQogCisjaW5jbHVkZSAiQWlyQXJnLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5o
IgogI2luY2x1ZGUgIkIzQmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFs
dWUuaCIKQEAgLTM5LDExICs0MCwxNSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIz
IHsKIAordXNpbmcgQXJnID0gQWlyOjpBcmc7Cit1c2luZyBDb2RlID0gQWlyOjpDb2RlOwordXNp
bmcgVG1wID0gQWlyOjpUbXA7CisKIG5hbWVzcGFjZSB7CiAKLWNsYXNzIExvd2VyTWFjcm9zIHsK
K2NsYXNzIExvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zIHsKIHB1YmxpYzoKLSAgICBMb3dl
ck1hY3JvcyhQcm9jZWR1cmUmIHByb2MpCisgICAgTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlv
bnMoUHJvY2VkdXJlJiBwcm9jKQogICAgICAgICA6IG1fcHJvYyhwcm9jKQogICAgICAgICAsIG1f
YmxvY2tJbnNlcnRpb25TZXQocHJvYykKICAgICAgICAgLCBtX2luc2VydGlvblNldChwcm9jKQpA
QCAtMTgzLDcgKzE4OCw3IEBAIHByaXZhdGU6CiAKIGJvb2wgbG93ZXJNYWNyb3NJbXBsKFByb2Nl
ZHVyZSYgcHJvYykKIHsKLSAgICBMb3dlck1hY3JvcyBsb3dlck1hY3Jvcyhwcm9jKTsKKyAgICBM
b3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucyBsb3dlck1hY3Jvcyhwcm9jKTsKICAgICByZXR1
cm4gbG93ZXJNYWNyb3MucnVuKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93
ZXJUb0Fpci5jcHAKaW5kZXggMTQ4OWMzMTFjNjNlZTAwMmZhOTFhNzYxYjFkNjA2MGNhZjRlMjkz
MS4uNzY0ZGI0Y2JkODY4ZGQ4NTBiZDhhM2FiZDE0ODJhZmE0MjM4NDJkOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTY5LDIxICs2OSwyNiBAQAogCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAotdXNpbmcgbmFtZXNwYWNlIEFpcjsKLQog
bmFtZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgQjNM
b3dlclRvQWlySW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwor
fQorCit1c2luZyBBcmcgPSBBaXI6OkFyZzsKK3VzaW5nIEluc3QgPSBBaXI6Okluc3Q7Cit1c2lu
ZyBDb2RlID0gQWlyOjpDb2RlOwordXNpbmcgVG1wID0gQWlyOjpUbXA7CiAKIC8vIEZJWE1FOiBX
ZSB3b3VsZG4ndCBuZWVkIHRoaXMgaWYgQWlyIHN1cHBvcnRlZCBXaWR0aCBtb2RpZmllcnMgaW4g
QWlyOjpLaW5kLgogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
OTI0NwogI2RlZmluZSBPUENPREVfRk9SX1dJRFRIKG9wY29kZSwgd2lkdGgpICggXAotICAgICh3
aWR0aCkgPT0gV2lkdGg4ID8gb3Bjb2RlICMjIDggOiBcCi0gICAgKHdpZHRoKSA9PSBXaWR0aDE2
ID8gb3Bjb2RlICMjIDE2IDogXAotICAgICh3aWR0aCkgPT0gV2lkdGgzMiA/IG9wY29kZSAjIyAz
MiA6IFwKLSAgICBvcGNvZGUgIyMgNjQpCisgICAgKHdpZHRoKSA9PSBXaWR0aDggPyBBaXI6Om9w
Y29kZSAjIyA4IDogXAorICAgICh3aWR0aCkgPT0gV2lkdGgxNiA/IEFpcjo6b3Bjb2RlICMjIDE2
IDogICAgXAorICAgICh3aWR0aCkgPT0gV2lkdGgzMiA/IEFpcjo6b3Bjb2RlICMjIDMyIDogICAg
XAorICAgIEFpcjo6b3Bjb2RlICMjIDY0KQogI2RlZmluZSBPUENPREVfRk9SX0NBTk9OSUNBTF9X
SURUSChvcGNvZGUsIHdpZHRoKSAoIFwKLSAgICAod2lkdGgpID09IFdpZHRoNjQgPyBvcGNvZGUg
IyMgNjQgOiBvcGNvZGUgIyMgMzIpCisgICAgKHdpZHRoKSA9PSBXaWR0aDY0ID8gQWlyOjpvcGNv
ZGUgIyMgNjQgOiBBaXI6Om9wY29kZSAjIyAzMikKIAogY2xhc3MgTG93ZXJUb0FpciB7CiBwdWJs
aWM6CkBAIC0xMDcsNiArMTEyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBydW4oKQogICAgIHsK
KyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAgZm9yIChCMzo6QmFzaWNCbG9j
ayogYmxvY2sgOiBtX3Byb2NlZHVyZSkKICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW2Jsb2Nr
XSA9IG1fY29kZS5hZGRCbG9jayhibG9jay0+ZnJlcXVlbmN5KCkpOwogICAgICAgICAKQEAgLTEx
NCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzd2l0Y2ggKHZhbHVlLT5vcGNvZGUo
KSkgewogICAgICAgICAgICAgY2FzZSBQaGk6IHsKICAgICAgICAgICAgICAgICBtX3BoaVRvVG1w
W3ZhbHVlXSA9IG1fY29kZS5uZXdUbXAodmFsdWUtPnJlc3VsdEJhbmsoKSk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEIzTG93ZXJUb0FpckludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJQaGkgdG1wIGZvciAi
LCAqdmFsdWUsICI6ICIsIG1fcGhpVG9UbXBbdmFsdWVdLCAiXG4iKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTE0Niw3ICsxNTIsNyBAQCBwdWJsaWM6CiAKICAg
ICAgICAgICAgIG1faXNSYXJlID0gIW1fZmFzdFdvcmtsaXN0LnNhdyhibG9jayk7CiAKLSAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzTG93ZXJUb0FpckludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvd2VyaW5nIEJsb2NrICIsICpi
bG9jaywgIjpcbiIpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhh
dCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3RseS4KQEAgLTE2MywxMCArMTY5LDEw
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFpbnMobV92YWx1
ZSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIG1faW5z
dHMuYXBwZW5kKFZlY3RvcjxJbnN0PigpKTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgICAgICBpZiAoQjNMb3dlclRvQWlySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvd2VyaW5nICIsIGRlZXBEdW1wKG1fcHJvY2VkdXJl
LCBtX3ZhbHVlKSwgIjpcbiIpOwogICAgICAgICAgICAgICAgIGxvd2VyKCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICBpZiAoQjNMb3dlclRvQWlySW50
ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDog
bV9pbnN0cy5sYXN0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgIiwg
aW5zdCwgIlxuIik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMzc5LDcgKzM4NSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgcmVhbFRtcCA9IG1fY29kZS5uZXdUbXAodmFsdWUtPnJlc3Vs
dEJhbmsoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fcHJvY2VkdXJlLmlzRmFzdENvbnN0YW50
KHZhbHVlLT5rZXkoKSkpCiAgICAgICAgICAgICAgICAgICAgIG1fY29kZS5hZGRGYXN0VG1wKHJl
YWxUbXApOwotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlm
IChCM0xvd2VyVG9BaXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZygiVG1wIGZvciAiLCAqdmFsdWUsICI6ICIsIHJlYWxUbXAsICJcbiIpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgdG1wID0gcmVhbFRtcDsKQEAgLTkwNiw2ICs5MTIsNyBAQCBwcml2
YXRlOgogICAgIHRlbXBsYXRlPEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNv
ZGU2ND4KICAgICB2b2lkIGFwcGVuZFNoaWZ0KFZhbHVlKiB2YWx1ZSwgVmFsdWUqIGFtb3VudCkK
ICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAgIEFpcjo6T3Bjb2Rl
IG9wY29kZSA9IG9wY29kZUZvclR5cGUob3Bjb2RlMzIsIG9wY29kZTY0LCB2YWx1ZS0+dHlwZSgp
KTsKICAgICAgICAgCiAgICAgICAgIGlmIChpbW0oYW1vdW50KSkgewpAQCAtMTAxOSw2ICsxMDI2
LDcgQEAgcHJpdmF0ZToKIAogICAgIEluc3QgY3JlYXRlU3RvcmUoQWlyOjpLaW5kIG1vdmUsIFZh
bHVlKiB2YWx1ZSwgY29uc3QgQXJnJiBkZXN0KQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNw
YWNlIEFpcjsKICAgICAgICAgaWYgKGF1dG8gaW1tX3ZhbHVlID0gaW1tKHZhbHVlKSkgewogICAg
ICAgICAgICAgaWYgKGlzQVJNNjQoKSAmJiBpbW1fdmFsdWUudmFsdWUoKSA9PSAwKSB7CiAgICAg
ICAgICAgICAgICAgc3dpdGNoIChtb3ZlLm9wY29kZSkgewpAQCAtMTA0Myw2ICsxMDUxLDcgQEAg
cHJpdmF0ZToKICAgICAKICAgICBBaXI6Ok9wY29kZSBzdG9yZU9wY29kZShXaWR0aCB3aWR0aCwg
QmFuayBiYW5rKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAg
c3dpdGNoICh3aWR0aCkgewogICAgICAgICBjYXNlIFdpZHRoODoKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGJhbmsgPT0gR1ApOwpAQCAtMTA3Myw2ICsxMDgyLDcgQEAgcHJpdmF0ZToKICAg
ICAKICAgICB2b2lkIGFwcGVuZFN0b3JlKFZhbHVlKiB2YWx1ZSwgY29uc3QgQXJnJiBkZXN0KQog
ICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAgTWVtb3J5VmFsdWUq
IG1lbW9yeSA9IHZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKICAgICAgICAgUkVMRUFTRV9BU1NF
UlQobWVtb3J5LT5pc1N0b3JlKCkpOwogCkBAIC0xMTAwLDYgKzExMTAsNyBAQCBwcml2YXRlOgog
CiAgICAgQWlyOjpPcGNvZGUgbW92ZUZvclR5cGUoVHlwZSB0eXBlKQogICAgIHsKKyAgICAgICAg
dXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNh
c2UgSW50MzI6CiAgICAgICAgICAgICByZXR1cm4gTW92ZTMyOwpAQCAtMTExOSw2ICsxMTMwLDcg
QEAgcHJpdmF0ZToKIAogICAgIEFpcjo6T3Bjb2RlIHJlbGF4ZWRNb3ZlRm9yVHlwZShUeXBlIHR5
cGUpCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICBzd2l0Y2gg
KHR5cGUpIHsKICAgICAgICAgY2FzZSBJbnQzMjoKICAgICAgICAgY2FzZSBJbnQ2NDoKQEAgLTEx
NjIsOCArMTE3NCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcmludChWYWx1ZSogb3JpZ2luLCBB
cmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBhdXRvIHByaW50TGlzdCA9
IFByaW50ZXI6Om1ha2VQcmludFJlY29yZExpc3QoYXJndW1lbnRzLi4uKTsKLSAgICAgICAgYXV0
byBwcmludFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxQcmludFNwZWNpYWwqPihtX2NvZGUuYWRkU3Bl
Y2lhbChzdGQ6Om1ha2VfdW5pcXVlPFByaW50U3BlY2lhbD4ocHJpbnRMaXN0KSkpOwotICAgICAg
ICBJbnN0IGluc3QoUGF0Y2gsIG9yaWdpbiwgQXJnOjpzcGVjaWFsKHByaW50U3BlY2lhbCkpOwor
ICAgICAgICBhdXRvIHByaW50U3BlY2lhbCA9IHN0YXRpY19jYXN0PEFpcjo6UHJpbnRTcGVjaWFs
Kj4obV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxBaXI6OlByaW50U3BlY2lhbD4o
cHJpbnRMaXN0KSkpOworICAgICAgICBJbnN0IGluc3QoQWlyOjpQYXRjaCwgb3JpZ2luLCBBcmc6
OnNwZWNpYWwocHJpbnRTcGVjaWFsKSk7CiAgICAgICAgIFByaW50ZXI6OmFwcGVuZEFpckFyZ3Mo
aW5zdCwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLik7CiAgICAgICAgIGFw
cGVuZChXVEZNb3ZlKGluc3QpKTsKICAgICB9CkBAIC0xNzYyLDYgKzE3NzQsNyBAQCBwcml2YXRl
OgogCiAgICAgSW5zdCBjcmVhdGVCcmFuY2goVmFsdWUqIHZhbHVlLCBib29sIGludmVydGVkID0g
ZmFsc2UpCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICByZXR1
cm4gY3JlYXRlR2VuZXJpY0NvbXBhcmUoCiAgICAgICAgICAgICB2YWx1ZSwKICAgICAgICAgICAg
IFt0aGlzXSAoCkBAIC0xODQ1LDYgKzE4NTgsNyBAQCBwcml2YXRlOgogCiAgICAgSW5zdCBjcmVh
dGVDb21wYXJlKFZhbHVlKiB2YWx1ZSwgYm9vbCBpbnZlcnRlZCA9IGZhbHNlKQogICAgIHsKKyAg
ICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUdlbmVyaWND
b21wYXJlKAogICAgICAgICAgICAgdmFsdWUsCiAgICAgICAgICAgICBbdGhpc10gKApAQCAtMTky
NCw2ICsxOTM4LDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIEluc3QgY3JlYXRlU2VsZWN0KGNv
bnN0IE1vdmVDb25kaXRpb25hbGx5Q29uZmlnJiBjb25maWcpCiAgICAgeworICAgICAgICB1c2lu
ZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICBhdXRvIGNyZWF0ZVNlbGVjdEluc3RydWN0aW9uID0g
WyZdIChBaXI6Ok9wY29kZSBvcGNvZGUsIGNvbnN0IEFyZyYgY29uZGl0aW9uLCBBcmdQcm9taXNl
JiBsZWZ0LCBBcmdQcm9taXNlJiByaWdodCkgLT4gSW5zdCB7CiAgICAgICAgICAgICBpZiAoaXNW
YWxpZEZvcm0ob3Bjb2RlLCBjb25kaXRpb24ua2luZCgpLCBsZWZ0LmtpbmQoKSwgcmlnaHQua2lu
ZCgpLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkgewogICAgICAgICAgICAgICAgIFRt
cCByZXN1bHQgPSB0bXAobV92YWx1ZSk7CkBAIC0xOTg3LDYgKzIwMDIsNyBAQCBwcml2YXRlOgog
ICAgIAogICAgIGJvb2wgdHJ5QXBwZW5kTGVhKCkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVz
cGFjZSBBaXI7CiAgICAgICAgIEFpcjo6T3Bjb2RlIGxlYU9wY29kZSA9IHRyeU9wY29kZUZvclR5
cGUoTGVhMzIsIExlYTY0LCBtX3ZhbHVlLT50eXBlKCkpOwogICAgICAgICBpZiAoIWlzVmFsaWRG
b3JtKGxlYU9wY29kZSwgQXJnOjpJbmRleCwgQXJnOjpUbXApKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMjExNiw2ICsyMTMyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYXBwZW5k
WDg2RGl2KEIzOjpPcGNvZGUgb3ApCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWly
OwogICAgICAgICBBaXI6Ok9wY29kZSBjb252ZXJ0VG9Eb3VibGVXb3JkOwogICAgICAgICBBaXI6
Ok9wY29kZSBkaXY7CiAgICAgICAgIHN3aXRjaCAobV92YWx1ZS0+dHlwZSgpKSB7CkBAIC0yMTQz
LDYgKzIxNjAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBhcHBlbmRYODZVRGl2KEIzOjpPcGNv
ZGUgb3ApCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICBBaXI6
Ok9wY29kZSBkaXYgPSBtX3ZhbHVlLT50eXBlKCkgPT0gSW50MzIgPyBYODZVRGl2MzIgOiBYODZV
RGl2NjQ7CiAKICAgICAgICAgQVNTRVJUKG9wID09IFVEaXYgfHwgb3AgPT0gVU1vZCk7CkBAIC0y
MTc4LDYgKzIxOTYsNyBAQCBwcml2YXRlOgogICAgIC8vIGdlbmVyYXRlZC4gSXQgYXNzdW1lcyB0
aGF0IHlvdSd2ZSBjb25zdW1lZCBldmVyeXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgY29uc3VtZWQu
CiAgICAgdm9pZCBhcHBlbmRDQVMoVmFsdWUqIGF0b21pY1ZhbHVlLCBib29sIGludmVydCkKICAg
ICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAgIEF0b21pY1ZhbHVlKiBh
dG9taWMgPSBhdG9taWNWYWx1ZS0+YXM8QXRvbWljVmFsdWU+KCk7CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGF0b21pYyk7CiAgICAgICAgIApAQCAtMjM0MCw2ICsyMzU5LDcgQEAgcHJpdmF0ZToK
ICAgICAKICAgICB2b2lkIGFwcGVuZEdlbmVyYWxBdG9taWMoQWlyOjpPcGNvZGUgb3Bjb2RlLCBD
b21tdXRhdGl2aXR5IGNvbW11dGF0aXZpdHkgPSBOb3RDb21tdXRhdGl2ZSkKICAgICB7CisgICAg
ICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBt
X3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKICAgICAgICAgCiAgICAgICAgIEFyZyBhZGRyZXNz
ID0gYWRkcihtX3ZhbHVlKTsKQEAgLTI0MjQsNiArMjQ0NCw3IEBAIHByaXZhdGU6CiAgICAgCiAg
ICAgdm9pZCBsb3dlcigpCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAg
ICAgICBzd2l0Y2ggKG1fdmFsdWUtPm9wY29kZSgpKSB7CiAgICAgICAgIGNhc2UgQjM6Ok5vcDog
ewogICAgICAgICAgICAgLy8gWWVzLCB3ZSB3aWxsIHRvdGFsbHkgc2VlIE5vcCdzIGJlY2F1c2Ug
c29tZSBwaGFzZXMgd2lsbCByZXBsYWNlV2l0aE5vcCgpIGluc3RlYWQgb2YKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRTcGVjaWFsLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRTcGVjaWFsLmNwcAppbmRleCA0N2YwYWJk
MmZmZjNiNTA1NzA4MmQ3MDNhNTE0MjNjOGNiMzhiMGIwLi5iMzc1Y2RkMGUwZmIwYmYwODYyMDRk
MTI3NjNhYTBkNTJiMTgxMmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNQYXRjaHBvaW50U3BlY2lhbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UGF0Y2hwb2ludFNwZWNpYWwuY3BwCkBAIC0zNCw3ICszNCw4IEBACiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgQjMgewogCi11c2luZyBuYW1lc3BhY2UgQWlyOwordXNpbmcgQXJnID0gQWly
OjpBcmc7Cit1c2luZyBJbnN0ID0gQWlyOjpJbnN0OwogCiBQYXRjaHBvaW50U3BlY2lhbDo6UGF0
Y2hwb2ludFNwZWNpYWwoKQogewpAQCAtMTM1LDggKzEzNiw3IEBAIGJvb2wgUGF0Y2hwb2ludFNw
ZWNpYWw6OmFkbWl0c0V4dGVuZGVkT2Zmc2V0QWRkcihJbnN0JiBpbnN0LCB1bnNpZ25lZCBhcmdJ
bmRleCkKICAgICByZXR1cm4gYWRtaXRzU3RhY2soaW5zdCwgYXJnSW5kZXgpOwogfQogCi1DQ2Fs
bEhlbHBlcnM6Okp1bXAgUGF0Y2hwb2ludFNwZWNpYWw6OmdlbmVyYXRlKAotICAgIEluc3QmIGlu
c3QsIENDYWxsSGVscGVycyYgaml0LCBHZW5lcmF0aW9uQ29udGV4dCYgY29udGV4dCkKK0NDYWxs
SGVscGVyczo6SnVtcCBQYXRjaHBvaW50U3BlY2lhbDo6Z2VuZXJhdGUoSW5zdCYgaW5zdCwgQ0Nh
bGxIZWxwZXJzJiBqaXQsIEFpcjo6R2VuZXJhdGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAg
UGF0Y2hwb2ludFZhbHVlKiB2YWx1ZSA9IGluc3Qub3JpZ2luLT5hczxQYXRjaHBvaW50VmFsdWU+
KCk7CiAgICAgQVNTRVJUKHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAKaW5kZXggMWM3YjBkMDAyYTFiOTE5ZTIzMGZlNjQ2
YjAzMmU0YTRlOTljZDE2MS4uNmQzMWY3Y2JjMDQ2N2NiZGQ2ZjZlM2M1OGM2MGNjM2U5MTdjY2Vi
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9G
bG9hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9G
bG9hdC5jcHAKQEAgLTM5LDcgKzM5LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7
CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEIzUmVk
dWNlRG91YmxlVG9GbG9hdEludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBm
YWxzZTsKK30KIGJvb2wgcHJpbnRSZW1haW5pbmdDb252ZXJzaW9ucyA9IGZhbHNlOwogCiBjbGFz
cyBEb3VibGVUb0Zsb2F0UmVkdWN0aW9uIHsKQEAgLTEyOCw3ICsxMzAsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgfQogICAgICAgICB9IHdoaWxlIChjaGFuZ2VkUGhpU3RhdGUpOwogCi0gICAg
ICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChCM1JlZHVjZURvdWJsZVRvRmxvYXRJbnRl
cm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiQ29udmVyc2lvbiBjYW5kaWRh
dGVzOlxuIik7CiAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jZWR1
cmUpIHsKICAgICAgICAgICAgICAgICBmb3IgKFZhbHVlKiB2YWx1ZSA6ICpibG9jaykgewpAQCAt
MTkyLDcgKzE5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gd2hpbGUg
KGNoYW5nZWRQaGlTdGF0ZSk7CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYg
KEIzUmVkdWNlRG91YmxlVG9GbG9hdEludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBk
YXRhTG9nKCJQaGlzIGNvbnRhaW5pbmcgZmxvYXQgdmFsdWVzOlxuIik7CiAgICAgICAgICAgICBm
b3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jZWR1cmUpIHsKICAgICAgICAgICAgICAgICBm
b3IgKFZhbHVlKiB2YWx1ZSA6ICpibG9jaykgewpAQCAtNDg5LDEzICs0OTEsMTMgQEAgdm9pZCBy
ZWR1Y2VEb3VibGVUb0Zsb2F0KFByb2NlZHVyZSYgcHJvY2VkdXJlKQogewogICAgIFBoYXNlU2Nv
cGUgcGhhc2VTY29wZShwcm9jZWR1cmUsICJyZWR1Y2VEb3VibGVUb0Zsb2F0Iik7CiAKLSAgICBp
ZiAodmVyYm9zZSkKKyAgICBpZiAoQjNSZWR1Y2VEb3VibGVUb0Zsb2F0SW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgIGRhdGFMb2coIkJlZm9yZSBEb3VibGVUb0Zsb2F0UmVkdWN0aW9uOlxuIiwg
cHJvY2VkdXJlLCAiXG4iKTsKIAogICAgIERvdWJsZVRvRmxvYXRSZWR1Y3Rpb24gZG91YmxlVG9G
bG9hdFJlZHVjdGlvbihwcm9jZWR1cmUpOwogICAgIGRvdWJsZVRvRmxvYXRSZWR1Y3Rpb24ucnVu
KCk7CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQjNSZWR1Y2VEb3VibGVUb0Zsb2F0SW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkFmdGVyIERvdWJsZVRvRmxvYXRSZWR1
Y3Rpb246XG4iLCBwcm9jZWR1cmUsICJcbiIpOwogCiAgICAgcHJpbnRHcmFwaElmQ29udmVydGlu
Zyhwcm9jZWR1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVk
dWNlU3RyZW5ndGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5n
dGguY3BwCmluZGV4IGMyMmU5YjQ1M2QwOTUyOTY3ZjIyYTZmZmJhNjQ5MWZmZDAwZjljNmMuLjU1
MDJkNWU0N2U1ODcwNjEwNjJiMTY4NmQ5YmIzYzI2OTM1OGI5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKQEAgLTg4LDcgKzg4LDkgQEAgbmFt
ZXNwYWNlIHsKIC8vIGNvbnN0YW50cyB0aGVuIHRoZSBjYW5vbmljYWwgZm9ybSBpbnZvbHZlcyB0
aGUgbG93ZXItaW5kZXhlZCB2YWx1ZSBmaXJzdC4gR2l2ZW4gQWRkKHgsIHkpLCBpdCdzCiAvLyBj
YW5vbmljYWwgaWYgeC0+aW5kZXgoKSA8PSB5LT5pbmRleCgpLgogCi1ib29sIHZlcmJvc2UgPSBm
YWxzZTsKK25hbWVzcGFjZSBCM1JlZHVjZVN0cmVuZ3RoSW50ZXJuYWwgeworc3RhdGljIGNvbnN0
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiAvLyBGSVhNRTogVGhpcyBJbnRSYW5nZSBzdHVm
ZiBzaG91bGQgYmUgcmVmYWN0b3JlZCBpbnRvIGEgZ2VuZXJhbCBjb25zdGFudCBwcm9wYWdhdG9y
LiBJdCdzIHdlaXJkCiAvLyB0aGF0IGl0J3MganVzdCBzaXR0aW5nIGhlcmUgaW4gdGhpcyBmaWxl
LgpAQCAtNDE0LDcgKzQxNiw3IEBAIHB1YmxpYzoKIAogICAgICAgICAgICAgaWYgKGZpcnN0KQog
ICAgICAgICAgICAgICAgIGZpcnN0ID0gZmFsc2U7Ci0gICAgICAgICAgICBlbHNlIGlmICh2ZXJi
b3NlKSB7CisgICAgICAgICAgICBlbHNlIGlmIChCM1JlZHVjZVN0cmVuZ3RoSW50ZXJuYWw6OnZl
cmJvc2UpIHsKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJCMyBhZnRlciBpdGVyYXRpb24gIyIs
IGluZGV4IC0gMSwgIiBvZiByZWR1Y2VTdHJlbmd0aDpcbiIpOwogICAgICAgICAgICAgICAgIGRh
dGFMb2cobV9wcm9jKTsKICAgICAgICAgICAgIH0KQEAgLTQ1Miw3ICs0NTQsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgbV9ibG9jayA9IGJsb2NrOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIGZvciAobV9pbmRleCA9IDA7IG1faW5kZXggPCBibG9jay0+c2l6ZSgpOyAr
K21faW5kZXgpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKEIzUmVkdWNlU3RyZW5ndGhJbnRlcm5hbDo6dmVyYm9zZSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiTG9va2luZyBhdCAiLCAqYmxvY2ssICIgIyIsIG1faW5kZXgsICI6ICIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVlcER1bXAobV9wcm9jLCBibG9jay0+YXQobV9pbmRleCkpLCAi
XG4iKTsKQEAgLTIwMzUsNyArMjAzNyw3IEBAIHByaXZhdGU6CiAgICAgLy8gZWFybHkuCiAgICAg
dm9pZCBzcGVjaWFsaXplU2VsZWN0KFZhbHVlKiBzb3VyY2UpCiAgICAgewotICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgaWYgKEIzUmVkdWNlU3RyZW5ndGhJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgICAgIGRhdGFMb2coIlNwZWNpYWxpemluZyBzZWxlY3Q6ICIsIGRlZXBEdW1wKG1f
cHJvYywgc291cmNlKSwgIlxuIik7CiAKICAgICAgICAgLy8gVGhpcyBtdXRhdGVzIHN0YXJ0SW5k
ZXggdG8gYWNjb3VudCBmb3IgdGhlIGZhY3QgdGhhdCBtX2Jsb2NrIGdvdCB0aGUgZnJvbnQgb2Yg
aXQKQEAgLTIyNzYsNyArMjI3OCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNpbXBsaWZ5Q0ZH
KCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChCM1JlZHVjZVN0
cmVuZ3RoSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkJlZm9yZSBz
aW1wbGlmeUNGRzpcbiIpOwogICAgICAgICAgICAgZGF0YUxvZyhtX3Byb2MpOwogICAgICAgICB9
CkBAIC0yMzAxLDcgKzIzMDMsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBpdGVyYXRpb25zIG5l
ZWRlZCB0byBraWxsIGEgbG90IG9mIGNvZGUuCiAKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBi
bG9jayA6IG1fcHJvYykgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBp
ZiAoQjNSZWR1Y2VTdHJlbmd0aEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRh
dGFMb2coIkNvbnNpZGVyaW5nIGJsb2NrICIsICpibG9jaywgIjpcbiIpOwogCiAgICAgICAgICAg
ICBjaGVja1ByZWRlY2Vzc29yVmFsaWRpdHkoKTsKQEAgLTIzMTcsNyArMjMxOSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgICYmIHN1Y2Nlc3Nvci0+bGFzdCgpLT5vcGNvZGUoKSA9
PSBKdW1wKSB7CiAgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIG5ld1N1Y2Nlc3NvciA9
IHN1Y2Nlc3Nvci0+c3VjY2Vzc29yQmxvY2soMCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChu
ZXdTdWNjZXNzb3IgIT0gc3VjY2Vzc29yKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEIzUmVkdWNlU3RyZW5ndGhJ
bnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZXBsYWNpbmcgIiwgcG9pbnRlckR1
bXAoYmxvY2spLCAiLT4iLCBwb2ludGVyRHVtcChzdWNjZXNzb3IpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiIHdpdGggIiwgcG9pbnRlckR1bXAoYmxvY2spLCAiLT4iLCBwb2lu
dGVyRHVtcChuZXdTdWNjZXNzb3IpLApAQCAtMjM0OCw3ICsyMzUwLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICBpZiAoYWxsU2FtZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCM1JlZHVjZVN0cmVuZ3RoSW50
ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hhbmdpbmcgIiwgcG9pbnRlckR1bXAo
YmxvY2spLCAiJ3MgdGVybWluYWwgdG8gYSBKdW1wLlxuIik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9CkBAIC0yMzg3LDcgKzIzODksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICBmb3IgKEJhc2ljQmxvY2sqIG5ld1N1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JCbG9ja3Mo
KSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1N1Y2Nlc3Nvci0+cmVwbGFjZVByZWRlY2Vz
c29yKHN1Y2Nlc3NvciwgYmxvY2spOwogCi0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3Nl
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChCM1JlZHVjZVN0cmVuZ3RoSW50ZXJuYWw6OnZl
cmJvc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIk1lcmdlZCAiLCBwb2ludGVyRHVtcChibG9jayksICItPiIsIHBvaW50
ZXJEdW1wKHN1Y2Nlc3NvciksICJcbiIpOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0yMzk3
LDcgKzIzOTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKG1fY2hhbmdlZENGRyAmJiB2ZXJib3NlKSB7CisgICAgICAgIGlmIChtX2NoYW5nZWRD
RkcgJiYgQjNSZWR1Y2VTdHJlbmd0aEludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBk
YXRhTG9nKCJCMyBhZnRlciBzaW1wbGlmeUNGRzpcbiIpOwogICAgICAgICAgICAgZGF0YUxvZyht
X3Byb2MpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmNwcAppbmRleCBiYmE4NGNhZjhiNGJlMDljMjg4
NjNjNDI5MDIwODUyZTcwNTExNjIyLi4zODllZjhiOWNhMmQ2MTBlZmRhNTdiOWQ4MGVhOTNlYmI1
ODJlMTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcy5jcHAKQEAgLTM0LDggKzM0LDYgQEAKIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBCMyB7CiAKLXVzaW5nIG5hbWVzcGFjZSBBaXI7Ci0KIGNvbnN0IFJlZ2lz
dGVyU2V0JiBTdGFja21hcEdlbmVyYXRpb25QYXJhbXM6OnVzZWRSZWdpc3RlcnMoKSBjb25zdAog
ewogICAgIEFTU0VSVChtX2NvbnRleHQuY29kZS0+bmVlZHNVc2VkUmVnaXN0ZXJzKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHAKaW5kZXggNjAz
NzBjNTc4ZGRmYzMyOTE4ZWZmYjVhMWJkZTg1NzhlOTNmMmY3MC4uNWViNWI5YjBlNjdkMzczYzM5
YmM3ZDk2ZDkzZWQ5ZjZhYzVkMTg0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNTdGFja21hcFNwZWNpYWwuY3BwCkBAIC0zNCw3ICszNCw5IEBACiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgQjMgewogCi11c2luZyBuYW1lc3BhY2UgQWlyOwordXNpbmcgQXJnID0gQWly
OjpBcmc7Cit1c2luZyBJbnN0ID0gQWlyOjpJbnN0OwordXNpbmcgVG1wID0gQWlyOjpUbXA7CiAK
IFN0YWNrbWFwU3BlY2lhbDo6U3RhY2ttYXBTcGVjaWFsKCkKIHsKQEAgLTIxMCw4ICsyMTIsNyBA
QCBib29sIFN0YWNrbWFwU3BlY2lhbDo6YWRtaXRzU3RhY2tJbXBsKAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotVmVjdG9yPFZhbHVlUmVwPiBTdGFja21hcFNwZWNpYWw6OnJlcHNJbXBsKAotICAg
IEdlbmVyYXRpb25Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCBudW1JZ25vcmVkQjNBcmdzLCB1
bnNpZ25lZCBudW1JZ25vcmVkQWlyQXJncywgSW5zdCYgaW5zdCkKK1ZlY3RvcjxWYWx1ZVJlcD4g
U3RhY2ttYXBTcGVjaWFsOjpyZXBzSW1wbChBaXI6OkdlbmVyYXRpb25Db250ZXh0JiBjb250ZXh0
LCB1bnNpZ25lZCBudW1JZ25vcmVkQjNBcmdzLCB1bnNpZ25lZCBudW1JZ25vcmVkQWlyQXJncywg
SW5zdCYgaW5zdCkKIHsKICAgICBWZWN0b3I8VmFsdWVSZXA+IHJlc3VsdDsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgaW5zdC5vcmlnaW4tPm51bUNoaWxkcmVuKCkgLSBudW1JZ25vcmVk
QjNBcmdzOyArK2kpCkBAIC0yNjcsNyArMjY4LDcgQEAgYm9vbCBTdGFja21hcFNwZWNpYWw6Omlz
QXJnVmFsaWRGb3JSZXAoQWlyOjpDb2RlJiBjb2RlLCBjb25zdCBBaXI6OkFyZyYgYXJnLCBjb24K
ICAgICB9CiB9CiAKLVZhbHVlUmVwIFN0YWNrbWFwU3BlY2lhbDo6cmVwRm9yQXJnKENvZGUmIGNv
ZGUsIGNvbnN0IEFyZyYgYXJnKQorVmFsdWVSZXAgU3RhY2ttYXBTcGVjaWFsOjpyZXBGb3JBcmco
QWlyOjpDb2RlJiBjb2RlLCBjb25zdCBBcmcmIGFyZykKIHsKICAgICBzd2l0Y2ggKGFyZy5raW5k
KCkpIHsKICAgICBjYXNlIEFyZzo6VG1wOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZy5jcHAK
aW5kZXggZTg2MGQ5Y2NjNWNiMGFlMWQ4N2MzYWZlZmRhYmY4ODY2ZjMxN2QxYS4uZWQ2N2QxYzdj
ZDg5ZGIwOGMwZjk4Y2YxZjY2M2ExZjVhYmM1MmUzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlU3RhY2tCeUdyYXBoQ29s
b3JpbmcuY3BwCkBAIC00Miw3ICs0Miw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMg
eyBuYW1lc3BhY2UgQWlyIHsKIAogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7CituYW1lc3BhY2UgQWlyQWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZ0ludGVybmFs
IHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogc3RydWN0IENvYWxl
c2NhYmxlTW92ZSB7CiAgICAgQ29hbGVzY2FibGVNb3ZlKCkKQEAgLTE1Myw3ICsxNTUsNyBAQCB2
b2lkIGFsbG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcoQ29kZSYgY29kZSkKICAgICAgICAgU3Rh
Y2tTbG90TGl2ZW5lc3M6OkxvY2FsQ2FsYyBsb2NhbENhbGMobGl2ZW5lc3MsIGJsb2NrKTsKIAog
ICAgICAgICBhdXRvIGludGVyZmVyZSA9IFsmXSAodW5zaWduZWQgaW5zdEluZGV4KSB7Ci0gICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChBaXJBbGxvY2F0ZVN0YWNrQnlH
cmFwaENvbG9yaW5nSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygi
SW50ZXJmZXJpbmc6ICIsIFdURjo6cG9pbnRlckxpc3REdW1wKGxvY2FsQ2FsYy5saXZlKCkpLCAi
XG4iKTsKIAogICAgICAgICAgICAgSW5zdCogcHJldkluc3QgPSBibG9jay0+Z2V0KGluc3RJbmRl
eCk7CkBAIC0xODUsNyArMTg3LDcgQEAgdm9pZCBhbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5n
KENvZGUmIGNvZGUpCiAgICAgICAgIH07CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnN0SW5k
ZXggPSBibG9jay0+c2l6ZSgpOyBpbnN0SW5kZXgtLTspIHsKLSAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgaWYgKEFpckFsbG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmdJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJBbmFseXppbmc6ICIsIGJs
b2NrLT5hdChpbnN0SW5kZXgpLCAiXG4iKTsKIAogICAgICAgICAgICAgLy8gS2lsbCBkZWFkIHN0
b3Jlcy4gRm9yIHNpbXBsaWNpdHkgd2Ugc2F5IHRoYXQgYSBzdG9yZSBpcyBraWxsYWJsZSBpZiBp
dCBoYXMgb25seSBsYXRlCkBAIC0yMzIsNyArMjM0LDcgQEAgdm9pZCBhbGxvY2F0ZVN0YWNrQnlH
cmFwaENvbG9yaW5nKENvZGUmIGNvZGUpCiAgICAgICAgICAgICB9KTsKICAgICB9CiAKLSAgICBp
ZiAodmVyYm9zZSkgeworICAgIGlmIChBaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nSW50
ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZm9yIChTdGFja1Nsb3QqIHNsb3QgOiBjb2RlLnN0
YWNrU2xvdHMoKSkKICAgICAgICAgICAgIGRhdGFMb2coIkludGVyZmVyZW5jZSBvZiAiLCBwb2lu
dGVyRHVtcChzbG90KSwgIjogIiwgcG9pbnRlckxpc3REdW1wKGludGVyZmVyZW5jZVtzbG90XSks
ICJcbiIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyRW1pdFNodWZmbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbWl0
U2h1ZmZsZS5jcHAKaW5kZXggNzNkNzEwZmY2OWU3MThlYjRiZTMwNjljMWMxZDgwYWZiOWM2NDk2
Ny4uNzE2NmVkODY5NGVhM2YxODQyNGZkMjNlODAyMTA5ODA1ZjYxMmJmZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbWl0U2h1ZmZsZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbWl0U2h1ZmZsZS5jcHAKQEAgLTM3LDcgKzM3
LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewogCiBu
YW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBBaXJFbWl0U2h1
ZmZsZUludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAog
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KIFRtcCBmaW5kUG9zc2libGVTY3JhdGNoKENvZGUm
IGNvZGUsIEJhbmsgYmFuaywgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgewpAQCAtMTI1LDcgKzEy
Nyw3IEBAIFZlY3RvcjxJbnN0PiBlbWl0U2h1ZmZsZSgKICAgICBDb2RlJiBjb2RlLCBWZWN0b3I8
U2h1ZmZsZVBhaXI+IHBhaXJzLCBzdGQ6OmFycmF5PEFyZywgMj4gc2NyYXRjaGVzLCBCYW5rIGJh
bmssCiAgICAgVmFsdWUqIG9yaWdpbikKIHsKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChB
aXJFbWl0U2h1ZmZsZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2coCiAgICAg
ICAgICAgICAiRGVhbGluZyB3aXRoIHBhaXJzOiAiLCBsaXN0RHVtcChwYWlycyksICIgYW5kIHNj
cmF0Y2hlcyAiLCBzY3JhdGNoZXNbMF0sICIsICIsCiAgICAgICAgICAgICBzY3JhdGNoZXNbMV0s
ICJcbiIpOwpAQCAtMTg1LDcgKzE4Nyw3IEBAIFZlY3RvcjxJbnN0PiBlbWl0U2h1ZmZsZSgKICAg
ICAgICAgICAgIEFTU0VSVChjdXJyZW50UGFpcnMuaXNFbXB0eSgpKTsKICAgICAgICAgICAgIEFy
ZyBvcmlnaW5hbFNyYyA9IG1hcHBpbmcuYmVnaW4oKS0+a2V5OwogICAgICAgICAgICAgQVNTRVJU
KCFzaGlmdHMuY29udGFpbnMob3JpZ2luYWxTcmMpKTsKLSAgICAgICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICAgICAgaWYgKEFpckVtaXRTaHVmZmxlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiUHJvY2Vzc2luZyBmcm9tICIsIG9yaWdpbmFsU3JjLCAiXG4i
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgR3JhcGhOb2RlV29ya2xpc3Q8QXJnPiB3b3Jr
bGlzdDsKQEAgLTE5NSw3ICsxOTcsNyBAQCBWZWN0b3I8SW5zdD4gZW1pdFNodWZmbGUoCiAgICAg
ICAgICAgICAgICAgaWYgKGl0ZXIgPT0gbWFwcGluZy5lbmQoKSkgewogICAgICAgICAgICAgICAg
ICAgICAvLyBXaXRoIGEgc2hpZnQgaXQncyBwb3NzaWJsZSB0aGF0IHdlIHByZXZpb3VzbHkgYnVp
bHQgdGhlIHRhaWwgb2YgdGhpcyBzaGlmdC4KICAgICAgICAgICAgICAgICAgICAgLy8gU2VlIGlm
IHRoYXQncyB0aGUgY2FzZSBub3cuCi0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgICAgICAgICBpZiAoQWlyRW1pdFNodWZmbGVJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIlRyeWluZyB0byBhcHBlbmQgc2hpZnQg
YXQgIiwgc3JjLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhaXJzLmFwcGVu
ZFZlY3RvcihzaGlmdHMudGFrZShzcmMpKTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CkBAIC0yMTMsNyArMjE1LDcgQEAgVmVjdG9yPEluc3Q+IGVtaXRTaHVmZmxlKAogICAgICAgICAg
ICAgQVNTRVJUKGN1cnJlbnRQYWlycy5zaXplKCkpOwogICAgICAgICAgICAgQVNTRVJUKGN1cnJl
bnRQYWlyc1swXS5zcmMoKSA9PSBvcmlnaW5hbFNyYyk7CiAKLSAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgaWYgKEFpckVtaXRTaHVmZmxlSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiY3VycmVudFBhaXJzID0gIiwgbGlzdER1bXAoY3VycmVu
dFBhaXJzKSwgIlxuIik7CiAKICAgICAgICAgICAgIGJvb2wgaXNSb3RhdGUgPSBmYWxzZTsKQEAg
LTIyNSw3ICsyMjcsNyBAQCBWZWN0b3I8SW5zdD4gZW1pdFNodWZmbGUoCiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIGlmIChpc1JvdGF0ZSkgewotICAgICAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgICAgIGlmIChBaXJFbWl0U2h1ZmZsZUludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJJdCdzIGEgcm90YXRlLlxuIik7CiAgICAg
ICAgICAgICAgICAgUm90YXRlIHJvdGF0ZTsKIApAQCAtMjc3LDE0ICsyNzksMTQgQEAgVmVjdG9y
PEluc3Q+IGVtaXRTaHVmZmxlKAogICAgICAgICAgICAgICAgIHJvdGF0ZXMuYXBwZW5kKFdURk1v
dmUocm90YXRlKSk7CiAgICAgICAgICAgICAgICAgY3VycmVudFBhaXJzLnNocmluaygwKTsKICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICAgICAgaWYgKEFpckVtaXRTaHVmZmxlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2coIkl0J3MgYSBzaGlmdC5cbiIpOwogICAgICAgICAgICAgICAgIHNo
aWZ0cy5hZGQob3JpZ2luYWxTcmMsIFdURk1vdmUoY3VycmVudFBhaXJzKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChBaXJF
bWl0U2h1ZmZsZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2coIlNoaWZ0czpc
biIpOwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogc2hpZnRzKQogICAgICAgICAgICAgZGF0
YUxvZygiICAgICIsIGVudHJ5LmtleSwgIjogIiwgbGlzdER1bXAoZW50cnkudmFsdWUpLCAiXG4i
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91
c1NwaWxscy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNT
cGlsbHMuY3BwCmluZGV4IDljYjExMDFhMTFmMjM1MTdjMjk5MzNiZmFiYTlhM2M5MjFhODY2YWUu
LjYwYThjYzAzNWZmMTI5MDU5MTA1ZWQ2NWVjZjI1MzMyNmM4ZTUzOTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcApAQCAt
MzksNyArMzksOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFp
ciB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEFp
ckZpeE9idmlvdXNTcGlsbHNJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7Cit9CiAKIGNsYXNzIEZpeE9idmlvdXNTcGlsbHMgewogcHVibGljOgpAQCAtNTEsNyAr
NTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJ1bigpCiAgICAgewotICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgaWYgKEFpckZpeE9idmlvdXNTcGlsbHNJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgICAgIGRhdGFMb2coIkNvZGUgYmVmb3JlIGZpeE9idmlvdXNTcGlsbHM6XG4iLCBt
X2NvZGUpOwogICAgICAgICAKICAgICAgICAgY29tcHV0ZUFsaWFzZXMoKTsKQEAgLTczLDcgKzc1
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoIW1fc3RhdGUud2FzVmlzaXRlZCkK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQWlyRml4T2J2aW91c1NwaWxsc0ludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJFeGVjdXRpbmcgYmxvY2sgIiwg
Km1fYmxvY2ssICI6ICIsIG1fc3RhdGUsICJcbiIpOwogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIGZvciAobV9pbnN0SW5kZXggPSAwOyBtX2luc3RJbmRleCA8IGJsb2NrLT5zaXpl
KCk7ICsrbV9pbnN0SW5kZXgpCkBAIC0xNjksMTMgKzE3MSwxMyBAQCBwcml2YXRlOgogICAgIHsK
ICAgICAgICAgSW5zdCYgaW5zdCA9IG1fYmxvY2stPmF0KG1faW5zdEluZGV4KTsKIAotICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEFpckZpeE9idmlvdXNTcGlsbHNJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBFeGVjdXRpbmcgIiwgaW5zdCwgIjog
IiwgbV9zdGF0ZSwgIlxuIik7CiAKICAgICAgICAgSW5zdDo6Zm9yRWFjaERlZldpdGhFeHRyYUNs
b2JiZXJlZFJlZ3M8QXJnPigKICAgICAgICAgICAgICZpbnN0LCAmaW5zdCwKICAgICAgICAgICAg
IFsmXSAoY29uc3QgQXJnJiBhcmcsIEFyZzo6Um9sZSwgQmFuaywgV2lkdGgpIHsKLSAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQWlyRml4T2J2aW91c1Nw
aWxsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
ICAgIENsb2JiZXJpbmcgIiwgYXJnLCAiXG4iKTsKICAgICAgICAgICAgICAgICBtX3N0YXRlLmNs
b2JiZXIoYXJnKTsKICAgICAgICAgICAgIH0pOwpAQCAtMTkwLDcgKzE5Miw3IEBAIHByaXZhdGU6
CiAgICAgewogICAgICAgICBJbnN0JiBpbnN0ID0gbV9ibG9jay0+YXQobV9pbnN0SW5kZXgpOwog
Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQWlyRml4T2J2aW91c1NwaWxsc0lu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiRml4aW5nIGluc3QgIiwgaW5z
dCwgIjogIiwgbV9zdGF0ZSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICAvLyBDaGVjayBpZiBh
bGlhcyBhbmFseXNpcyBzYXlzIHRoYXQgdGhpcyBpcyB1bm5lY2Vzc2FyeS4KQEAgLTI2NywxMyAr
MjY5LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBXaWR0aDY0OgogICAgICAg
ICAgICAgICAgICAgICBpZiAoYWxpYXMtPm1vZGUgIT0gUmVnU2xvdDo6QWxsQml0cykKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChBaXJGaXhPYnZpb3VzU3BpbGxzSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgUmVwbGFjaW5n
ICIsIGFyZywgIiB3aXRoICIsIGFsaWFzLT5yZWcsICJcbiIpOwogICAgICAgICAgICAgICAgICAg
ICBhcmcgPSBUbXAoYWxpYXMtPnJlZyk7CiAgICAgICAgICAgICAgICAgICAgIGRpZFRoaW5ncyA9
IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBjYXNl
IFdpZHRoMzI6Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAg
ICAgICAgICBpZiAoQWlyRml4T2J2aW91c1NwaWxsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIFJlcGxhY2luZyAiLCBhcmcsICIgd2l0aCAi
LCBhbGlhcy0+cmVnLCAiIChzdWJ3aWR0aCBjYXNlKVxuIik7CiAgICAgICAgICAgICAgICAgICAg
IGFyZyA9IFRtcChhbGlhcy0+cmVnKTsKICAgICAgICAgICAgICAgICAgICAgZGlkVGhpbmdzID0g
dHJ1ZTsKQEAgLTI4NSw3ICsyODcsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAvLyBSZXZl
cnQgdG8gaW1tZWRpYXRlIGlmIHRoYXQgZGlkbid0IHdvcmsuCiAgICAgICAgICAgICBpZiAoY29u
c3QgU2xvdENvbnN0KiBhbGlhcyA9IG1fc3RhdGUuZ2V0U2xvdENvbnN0KGFyZy5zdGFja1Nsb3Qo
KSkpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAo
QWlyRml4T2J2aW91c1NwaWxsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCIgICAgUmVwbGFjaW5nICIsIGFyZywgIiB3aXRoIGNvbnN0YW50ICIsIGFsaWFz
LT5jb25zdGFudCwgIlxuIik7CiAgICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNWYWxpZEltbUZv
cm0oYWxpYXMtPmNvbnN0YW50KSkKICAgICAgICAgICAgICAgICAgICAgYXJnID0gQXJnOjppbW0o
YWxpYXMtPmNvbnN0YW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcAppbmRleCAxZmEwNTNkYjljYTdmYzRjMzg2ZmIx
OTM3MTUyMjU1YmVlZDcxMzliLi5iZmVmM2IzZjRmMTFhNTlhMjFkMmI4MWNjZTE5MjViY2Q4MWU1
NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyQWZ0
ZXJSZWdBbGxvYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dl
ckFmdGVyUmVnQWxsb2MuY3BwCkBAIC00Niw3ICs0Niw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKIAogbmFtZXNwYWNlIHsKIAotYm9vbCB2ZXJib3Nl
ID0gZmFsc2U7CituYW1lc3BhY2UgQWlyTG93ZXJBZnRlclJlZ0FsbG9jSW50ZXJuYWwgeworc3Rh
dGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogICAgIAogfSAvLyBhbm9ueW1vdXMg
bmFtZXNwYWNlCiAKQEAgLTU0LDcgKzU2LDcgQEAgdm9pZCBsb3dlckFmdGVyUmVnQWxsb2MoQ29k
ZSYgY29kZSkKIHsKICAgICBQaGFzZVNjb3BlIHBoYXNlU2NvcGUoY29kZSwgImxvd2VyQWZ0ZXJS
ZWdBbGxvYyIpOwogCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEFpckxvd2VyQWZ0ZXJSZWdB
bGxvY0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJDb2RlIGJlZm9yZSBsb3dl
ckFmdGVyUmVnQWxsb2M6XG4iLCBjb2RlKTsKICAgICAKICAgICBhdXRvIGlzUmVsZXZhbnQgPSBb
XSAoSW5zdCYgaW5zdCkgLT4gYm9vbCB7CkBAIC0yMjEsNyArMjIzLDcgQEAgdm9pZCBsb3dlckFm
dGVyUmVnQWxsb2MoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrU2xv
dHMuYXBwZW5kKHN0YWNrU2xvdCk7CiAgICAgICAgICAgICAgICAgICAgIH0pOwogCi0gICAgICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEFpckxvd2VyQWZ0ZXJS
ZWdBbGxvY0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJQ
cmUtY2FsbCBwYWlycyBmb3IgIiwgaW5zdCwgIjogIiwgbGlzdER1bXAocGFpcnMpLCAiXG4iKTsK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0SW5z
dHMoCkBAIC0yNzMsNyArMjc1LDcgQEAgdm9pZCBsb3dlckFmdGVyUmVnQWxsb2MoQ29kZSYgY29k
ZSkKICAgICAgICAgICAgIH0pOwogICAgIH0KIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChB
aXJMb3dlckFmdGVyUmVnQWxsb2NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygi
Q29kZSBhZnRlciBsb3dlckFmdGVyUmVnQWxsb2M6XG4iLCBjb2RlKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTdGFja0FsbG9jYXRpb24uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTdGFja0FsbG9jYXRpb24uY3BwCmluZGV4
IDM5MjIyM2NhODg1ODA1YzVmOTZkMmZiYjg4MzlkMTIwMzljNjZjY2YuLjZiNmEyNmFlN2VmYmI3
ZDlmM2YyZWExYmVhNjZiYWUzNGQ1OGI2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyU3RhY2tBbGxvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpclN0YWNrQWxsb2NhdGlvbi5jcHAKQEAgLTM4LDcgKzM4LDkgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewogCiBuYW1lc3BhY2Ug
ewogCi1jb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBBaXJTdGFja0FsbG9j
YXRpb25JbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIENvbGxlY3Rpb24+CiB2b2lkIHVwZGF0ZUZyYW1lU2l6ZUJhc2Vk
T25TdGFja1Nsb3RzSW1wbChDb2RlJiBjb2RlLCBjb25zdCBDb2xsZWN0aW9uJiBjb2xsZWN0aW9u
KQpAQCAtNTQsNyArNTYsNyBAQCB2b2lkIHVwZGF0ZUZyYW1lU2l6ZUJhc2VkT25TdGFja1Nsb3Rz
SW1wbChDb2RlJiBjb2RlLCBjb25zdCBDb2xsZWN0aW9uJiBjb2xsZWN0aQogYm9vbCBhdHRlbXB0
QXNzaWdubWVudCgKICAgICBTdGFja1Nsb3QqIHNsb3QsIGludHB0cl90IG9mZnNldEZyb21GUCwg
Y29uc3QgVmVjdG9yPFN0YWNrU2xvdCo+JiBvdGhlclNsb3RzKQogewotICAgIGlmICh2ZXJib3Nl
KQorICAgIGlmIChBaXJTdGFja0FsbG9jYXRpb25JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ZGF0YUxvZygiQXR0ZW1wdGluZyB0byBhc3NpZ24gIiwgcG9pbnRlckR1bXAoc2xvdCksICIgdG8g
Iiwgb2Zmc2V0RnJvbUZQLCAiIHdpdGggaW50ZXJmZXJlbmNlICIsIHBvaW50ZXJMaXN0RHVtcChv
dGhlclNsb3RzKSwgIlxuIik7CiAKICAgICAvLyBOZWVkIHRvIGFsaWduIGl0IHRvIHRoZSBzbG90
J3MgZGVzaXJlZCBhbGlnbm1lbnQuCkBAIC03Miw3ICs3NCw3IEBAIGJvb2wgYXR0ZW1wdEFzc2ln
bm1lbnQoCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKHZlcmJv
c2UpCisgICAgaWYgKEFpclN0YWNrQWxsb2NhdGlvbkludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICBkYXRhTG9nKCJBc3NpZ25lZCAiLCBwb2ludGVyRHVtcChzbG90KSwgIiB0byAiLCBvZmZzZXRG
cm9tRlAsICJcbiIpOwogICAgIHNsb3QtPnNldE9mZnNldEZyb21GUChvZmZzZXRGcm9tRlApOwog
ICAgIHJldHVybiB0cnVlOwpAQCAtODAsNyArODIsNyBAQCBib29sIGF0dGVtcHRBc3NpZ25tZW50
KAogCiB2b2lkIGFzc2lnbihTdGFja1Nsb3QqIHNsb3QsIGNvbnN0IFZlY3RvcjxTdGFja1Nsb3Qq
PiYgb3RoZXJTbG90cykKIHsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQWlyU3RhY2tBbGxv
Y2F0aW9uSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkF0dGVtcHRpbmcgdG8g
YXNzaWduICIsIHBvaW50ZXJEdW1wKHNsb3QpLCAiIHdpdGggaW50ZXJmZXJlbmNlICIsIHBvaW50
ZXJMaXN0RHVtcChvdGhlclNsb3RzKSwgIlxuIik7CiAgICAgCiAgICAgaWYgKGF0dGVtcHRBc3Np
Z25tZW50KHNsb3QsIC1zdGF0aWNfY2FzdDxpbnRwdHJfdD4oc2xvdC0+Ynl0ZVNpemUoKSksIG90
aGVyU2xvdHMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fj
Y2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2Uu
Y3BwCmluZGV4IDM1ZmZiZjFhYmFiODJlZDdmNDQ2YjU2YjRlZGMxNTVhNDlmZWQ4ZDAuLjQxOTg2
NTUwNDc0NDM4NzdlY2E2MTMwY2NmZmE3YTVhYTIzZjg0YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTUxLDcgKzUxLDkgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKK25hbWVzcGFjZSBBY2Nlc3NDYXNlSW50ZXJuYWwgewogc3RhdGljIGNv
bnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBBY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKFZN
JiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dCYgY29uZGl0aW9uU2V0KQogICAgIDogbV90eXBlKHR5cGUpCkBAIC00MDgsNyArNDEwLDcgQEAg
dm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZShBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQog
dm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0
ZSkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0g
ICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEFjY2Vzc0Nhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgZGF0YUxvZygiXG5cbkdlbmVyYXRpbmcgY29kZSBmb3I6ICIsICp0aGlzLCAiXG4iKTsK
IAogICAgIEFTU0VSVChtX3N0YXRlID09IEdlbmVyYXRlZCk7IC8vIFdlIHJlbHkgb24gdGhlIGNh
bGxlcnMgc2V0dGluZyB0aGlzIGZvciB1cy4KQEAgLTc5MCwxMSArNzkyLDExIEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAKICAg
ICBjYXNlIFJlcGxhY2U6IHsKICAgICAgICAgaWYgKEluZmVycmVkVHlwZSogdHlwZSA9IHN0cnVj
dHVyZSgpLT5pbmZlcnJlZFR5cGVGb3IoaWRlbnQuaW1wbCgpKSkgewotICAgICAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQWNjZXNzQ2FzZUludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgICAgIGRhdGFMb2coIkhhdmUgdHlwZTogIiwgdHlwZS0+ZGVzY3JpcHRvcigp
LCAiXG4iKTsKICAgICAgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZCgKICAgICAg
ICAgICAgICAgICBqaXQuYnJhbmNoSWZOb3RUeXBlKHZhbHVlUmVncywgc2NyYXRjaEdQUiwgdHlw
ZS0+ZGVzY3JpcHRvcigpKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAodmVyYm9zZSkKKyAgICAgICAg
fSBlbHNlIGlmIChBY2Nlc3NDYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRh
TG9nKCJEb24ndCBoYXZlIHR5cGUuXG4iKTsKIAogICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQo
bV9vZmZzZXQpKSB7CkBAIC04MjAsMTEgKzgyMiwxMSBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVy
YXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICBSRUxFQVNFX0FT
U0VSVChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA+PSA2IHx8ICFzdHJ1Y3R1cmUoKS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSB8fCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PSBu
ZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAKICAgICAgICAgaWYgKEluZmVy
cmVkVHlwZSogdHlwZSA9IG5ld1N0cnVjdHVyZSgpLT5pbmZlcnJlZFR5cGVGb3IoaWRlbnQuaW1w
bCgpKSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQWNjZXNz
Q2FzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkhhdmUgdHlw
ZTogIiwgdHlwZS0+ZGVzY3JpcHRvcigpLCAiXG4iKTsKICAgICAgICAgICAgIHN0YXRlLmZhaWxB
bmRSZXBhdGNoLmFwcGVuZCgKICAgICAgICAgICAgICAgICBqaXQuYnJhbmNoSWZOb3RUeXBlKHZh
bHVlUmVncywgc2NyYXRjaEdQUiwgdHlwZS0+ZGVzY3JpcHRvcigpKSk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAodmVyYm9zZSkKKyAgICAgICAgfSBlbHNlIGlmIChBY2Nlc3NDYXNlSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJEb24ndCBoYXZlIHR5cGUuXG4iKTsKIAogICAg
ICAgICAvLyBOT1RFOiBUaGlzIGxvZ2ljIGlzIGR1cGxpY2F0ZWQgaW4gQWNjZXNzQ2FzZTo6ZG9l
c0NhbGxzKCkuIEl0J3MgaW1wb3J0YW50IHRoYXQgZG9lc0NhbGxzKCkga25vd3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCmluZGV4IGYz
NGMyNzQyMDUzY2IyOTNkYWE1YzE2Mzg2NmJmYWM0YTAyMjU2OTguLjUzYjg0ZDljMDM3ZTE3ZjZh
ZTkzZGM4NTUxOTI3ODhiNjNlNjdhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcApAQCAtMzgsNyArMzgsOSBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorbmFtZXNwYWNlIENhbGxMaW5rU3RhdHVzSW50ZXJuYWwgewogc3RhdGljIGNv
bnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBDYWxsTGlua1N0YXR1czo6Q2FsbExpbmtT
dGF0dXMoSlNWYWx1ZSB2YWx1ZSkKICAgICA6IG1fY291bGRUYWtlU2xvd1BhdGgoZmFsc2UpCkBA
IC0yODksNyArMjkxLDcgQEAgdm9pZCBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZURGR1N0YXR1c2Vz
KAogICAgIFVOVVNFRF9QQVJBTShkZmdDb2RlQmxvY2spOwogI2VuZGlmIC8vIEVOQUJMRShERkdf
SklUKQogICAgIAotICAgIGlmICh2ZXJib3NlKSB7CisgICAgaWYgKENhbGxMaW5rU3RhdHVzSW50
ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZGF0YUxvZygiQ29udGV4dCBtYXA6XG4iKTsKICAg
ICAgICAgQ29udGV4dE1hcDo6aXRlcmF0b3IgaXRlciA9IG1hcC5iZWdpbigpOwogICAgICAgICBD
b250ZXh0TWFwOjppdGVyYXRvciBlbmQgPSBtYXAuZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAKaW5k
ZXggYzRkYTgwZWNjMTljMjE0N2UyZmE3YjVkOTk2ODRjZGZlYjJlNDc4MC4uNjA2NjkxYjNiMjAz
YWVlMWFjYmEyNzRmNDU1YzRiNGVlYzc3ZjdlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcApAQCAtMzgs
NyArMzgsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFtZXNwYWNlIEdldHRlclNldHRlckFj
Y2Vzc0Nhc2VJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9
CiAKIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OkdldHRlclNldHRlckFjY2Vzc0Nhc2UoVk0mIHZt
LCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0JiBjb25kaXRpb25TZXQsIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9u
YWxTZXQsIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSkKICAgICA6IEJhc2Uodm0sIG93bmVyLCBh
Y2Nlc3NUeXBlLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgYWRk
aXRpb25hbFNldCkKQEAgLTE4NSw3ICsxODcsNyBAQCB2b2lkIEdldHRlclNldHRlckFjY2Vzc0Nh
c2U6OmVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29ucwog
ICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2VydmVkU3RhdGUgcHJlc2VydmVkU3Rh
dGUgPQogICAgIGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhqaXQs
IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6RXh0cmFTdGFja1NwYWNlOjpTcGFjZUZvckNDYWxs
KTsKIAotICAgIGlmICh2ZXJib3NlKSB7CisgICAgaWYgKEdldHRlclNldHRlckFjY2Vzc0Nhc2VJ
bnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICBkYXRhTG9nKCJiYXNlR1BSID0gIiwgYmFzZUdQ
UiwgIlxuIik7CiAgICAgICAgIGRhdGFMb2coInZhbHVlUmVncyA9ICIsIHZhbHVlUmVncywgIlxu
Iik7CiAgICAgICAgIGRhdGFMb2coInNjcmF0Y2hHUFIgPSAiLCBzY3JhdGNoR1BSLCAiXG4iKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCmluZGV4IDYxOWVhNWQ5Y2I0N2IxZjE5NWIwZThiNDdk
NTk5NmNhODU5YzM0ZWYuLjk2Nzk1MjM3Nzg4Y2MxOTY1MDc0MWJkY2Y2OWFlNDdjZDI4ZGE0YjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcApAQCAtMTgyLDEzICsxODIsMTUgQEAgYm9vbCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aXNWYWxpZEFuZFdhdGNoYWJsZSgpIGNvbnN0CiAK
IG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9
IGZhbHNlOworfQogCiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBnZW5lcmF0ZUNvbmRpdGlvbigK
ICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBvYmplY3QsIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQsIFByb3BlcnR5Q29uZGl0aW9uOjpLaW5kIGNvbmRpdGlvbktpbmQpCiB7CiAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvYmplY3QtPnN0cnVjdHVyZSgpOwotICAgIGlmICh2
ZXJib3NlKQorICAgIGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICBkYXRhTG9nKCJDcmVhdGluZyBjb25kaXRpb24gIiwgY29uZGl0aW9uS2lu
ZCwgIiBmb3IgIiwgcG9pbnRlckR1bXAoc3RydWN0dXJlKSwgIlxuIik7CiAKICAgICBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbiByZXN1bHQ7CkBAIC0yMjYsMTIgKzIyOCwxMiBAQCBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvbiBnZW5lcmF0ZUNvbmRpdGlvbigKICAgICB9CiAKICAgICBpZiAoIXJlc3Vs
dC5pc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpKSB7Ci0gICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkZhaWxlZCB0byBjcmVhdGUg
Y29uZGl0aW9uOiAiLCByZXN1bHQsICJcbiIpOwogICAgICAgICByZXR1cm4gT2JqZWN0UHJvcGVy
dHlDb25kaXRpb24oKTsKICAgICB9CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoT2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygi
TmV3IGNvbmRpdGlvbjogIiwgcmVzdWx0LCAiXG4iKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpA
QCAtMjQ4LDExICsyNTAsMTEgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVD
b25kaXRpb25zKAogICAgIFZlY3RvcjxPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbj4gY29uZGl0aW9u
czsKICAgICAKICAgICBmb3IgKDs7KSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBp
ZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIHN0cnVjdHVyZTogIiwgcG9pbnRlckR1bXAoc3RydWN0
dXJlKSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICBpZiAoc3RydWN0dXJlLT5pc1Byb3h5KCkp
IHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiSXQncyBhIHByb3h5LCBzbyBpbnZhbGlkLlxuIik7CiAgICAgICAgICAgICByZXR1cm4gT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmludmFsaWQoKTsKICAgICAgICAgfQpAQCAtMjYxLDEx
ICsyNjMsMTEgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVDb25kaXRpb25z
KAogICAgICAgICAKICAgICAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBp
ZiAoIXByb3RvdHlwZSkgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAg
ICAgICAgIGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJSZWFjaGVkIGVuZCBvZiBwcm90b3R5cGUgY2hh
aW4gYXMgZXhwZWN0ZWQsIGRvbmUuXG4iKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiVW5leHBlY3RlZGx5IHJlYWNoZWQgZW5kIG9mIHByb3RvdHlwZSBjaGFpbiwgc28g
aW52YWxpZC5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0OjppbnZhbGlkKCk7CiAgICAgICAgIH0KQEAgLTI3NiwzNSArMjc4LDM1IEBAIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRlQ29uZGl0aW9ucygKICAgICAgICAgaWYgKHN0cnVj
dHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgICAgIGlmIChjb25jdXJyZW5jeSA9PSBN
YWluVGhyZWFkKSB7CiAgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzQmVlbkZsYXR0
ZW5lZEJlZm9yZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkRpY3Rpb25hcnkgaGFzIGJl
ZW4gZmxhdHRlbmVkIGJlZm9yZSwgc28gaW52YWxpZC5cbiIpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmludmFsaWQoKTsKICAgICAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAg
ICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiRmxhdHRlbmluZyAiLCBwb2ludGVyRHVtcChzdHJ1Y3R1
cmUpKTsKICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0
dXJlKHZtLCBvYmplY3QpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ2Fubm90
IGZsYXR0ZW4gZGljdGlvbmFyeSB3aGVuIG5vdCBvbiBtYWluIHRocmVhZCwgc28gaW52YWxpZC5c
biIpOwogICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6
aW52YWxpZCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFmdW5j
dG9yKGNvbmRpdGlvbnMsIG9iamVjdCkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICAgICAgZGF0YUxvZygiRnVuY3RvciBmYWlsZWQsIGludmFsaWQuXG4iKTsK
ICAgICAgICAgICAgIHJldHVybiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aW52YWxpZCgp
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAob2JqZWN0ID09IHByb3RvdHlwZSkg
ewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9n
KCJSZWFjaGVkIGRlc2lyZWQgcHJvdG90eXBlLCBkb25lLlxuIik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJS
ZXR1cm5pbmcgY29uZGl0aW9uczogIiwgbGlzdER1bXAoY29uZGl0aW9ucyksICJcbiIpOwogICAg
IHJldHVybiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6Y3JlYXRlKGNvbmRpdGlvbnMpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGlj
QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0Fj
Y2Vzcy5jcHAKaW5kZXggZmIwYjZhOWQ4YzJkZGM4ZmMzZjljOTE5MWRiZjIyYjliZDQwMjk4OC4u
NDIyODBjNWFlNmY3NmRiNjcwM2E2MDE2ZDU4M2MxYjBhMDFkYzM1YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC00
NCw3ICs0NCw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCituYW1lc3BhY2UgUG9seW1vcnBoaWNB
Y2Nlc3NJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAK
IHZvaWQgQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAogewpAQCAtMjQ3LDcgKzI0OSw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBo
aWNBY2Nlc3M6OmFkZENhc2VzKAogICAgICAgICBjYXNlc1RvQWRkLmFwcGVuZChXVEZNb3ZlKG15
Q2FzZSkpOwogICAgIH0KIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChQb2x5bW9ycGhpY0Fj
Y2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJjYXNlc1RvQWRkOiAiLCBs
aXN0RHVtcChjYXNlc1RvQWRkKSwgIlxuIik7CiAKICAgICAvLyBJZiB0aGVyZSBhcmVuJ3QgYW55
IGNhc2VzIHRvIGFkZCwgdGhlbiBmYWlsIG9uIHRoZSBncm91bmRzIHRoYXQgdGhlcmUncyBubyBw
b2ludCB0byBnZW5lcmF0aW5nIGEKQEAgLTI2Myw3ICsyNjUsNyBAQCBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcygKICAgICAgICAgbV9saXN0LmFwcGVu
ZChXVEZNb3ZlKGNhc2VUb0FkZCkpOwogICAgIH0KICAgICAKLSAgICBpZiAodmVyYm9zZSkKKyAg
ICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxv
ZygiQWZ0ZXIgYWRkQ2FzZXM6IG1fbGlzdDogIiwgbGlzdER1bXAobV9saXN0KSwgIlxuIik7CiAK
ICAgICByZXR1cm4gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6QnVmZmVyZWQ7CkBAIC0zMzQsNyAr
MzM2LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5l
cmF0ZSgKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7
CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIlJlZ2VuZXJhdGUgd2l0aCBtX2xpc3Q6ICIs
IGxpc3REdW1wKG1fbGlzdCksICJcbiIpOwogICAgIAogICAgIEFjY2Vzc0dlbmVyYXRpb25TdGF0
ZSBzdGF0ZSh2bSk7CkBAIC00MDIsNyArNDA0LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQ
b2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSgKICAgICB9CiAgICAgbV9saXN0LnJlc2l6ZShk
c3RJbmRleCk7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKFBvbHltb3JwaGljQWNj
ZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIk9wdGltaXplZCBjYXNlczog
IiwgbGlzdER1bXAoY2FzZXMpLCAiXG4iKTsKICAgICAKICAgICAvLyBBdCB0aGlzIHBvaW50IHdl
J3JlIGNvbnZpbmNlZCB0aGF0ICdjYXNlcycgY29udGFpbnMgdGhlIGNhc2VzIHRoYXQgd2Ugd2Fu
dCB0byBKSVQgbm93IGFuZCB3ZQpAQCAtNTE3LDcgKzUxOSw3IEBAIEFjY2Vzc0dlbmVyYXRpb25S
ZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoCiAKICAgICBMaW5rQnVmZmVyIGxp
bmtCdWZmZXIoaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgaWYg
KGxpbmtCdWZmZXIuZGlkRmFpbFRvQWxsb2NhdGUoKSkgewotICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICBkYXRhTG9nKCJEaWQgZmFpbCB0byBhbGxvY2F0ZS5cbiIpOwogICAgICAgICByZXR1cm4g
QWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6R2F2ZVVwOwogICAgIH0KQEAgLTUyOCw3ICs1MzAsNyBA
QCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKAog
CiAgICAgbGlua0J1ZmZlci5saW5rKGZhaWx1cmUsIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2Nh
dGlvbigpKTsKICAgICAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoUG9seW1vcnBoaWNBY2Nl
c3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZyhGdWxsQ29kZU9yaWdpbihjb2Rl
QmxvY2ssIHN0dWJJbmZvLmNvZGVPcmlnaW4pLCAiOiBHZW5lcmF0aW5nIHBvbHltb3JwaGljIGFj
Y2VzcyBzdHViIGZvciAiLCBsaXN0RHVtcChjYXNlcyksICJcbiIpOwogCiAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGNvZGUgPSBGSU5BTElaRV9DT0RFX0ZPUigKQEAgLTU0NCw3ICs1NDYsNyBA
QCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKAog
ICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0YXRlLndhdGNocG9pbnRzKTsKICAgICBpZiAo
IXN0YXRlLndlYWtSZWZlcmVuY2VzLmlzRW1wdHkoKSkKICAgICAgICAgbV93ZWFrUmVmZXJlbmNl
cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+Pj4oV1RGTW92
ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOwotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChQb2x5
bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJSZXR1cm5p
bmc6ICIsIGNvZGUuY29kZSgpLCAiXG4iKTsKICAgICAKICAgICBtX2xpc3QgPSBXVEZNb3ZlKGNh
c2VzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9wZXJ0
eUNvbmRpdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvcGVydHlD
b25kaXRpb24uY3BwCmluZGV4IDQyM2JjMjEwZWQ0ODNjYTExOTdlMzk5YjU5NTU0NjY2Y2RmMzk1
YzkuLjA3NjQ0YTMwN2Y5Y2Y0ZTljNWYzMmE3MWMxODFjMmJmODM5OTU1ZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcApA
QCAtMzIsNyArMzIsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFtZXNwYWNlIFByb3BlcnR5
Q29uZGl0aW9uSW50ZXJuYWwgewogc3RhdGljIGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiB2
b2lkIFByb3BlcnR5Q29uZGl0aW9uOjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1
bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogewpAQCAtNjUsMjAgKzY3LDIwIEBAIHZvaWQgUHJv
cGVydHlDb25kaXRpb246OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIGJvb2wgUHJvcGVy
dHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50
KAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogYmFzZSkgY29uc3QKIHsKLSAg
ICBpZiAodmVyYm9zZSkgeworICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJi
b3NlKSB7CiAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAiRGV0ZXJtaW5pbmcgdmFsaWRp
dHkgb2YgIiwgKnRoaXMsICIgd2l0aCBzdHJ1Y3R1cmUgIiwgcG9pbnRlckR1bXAoc3RydWN0dXJl
KSwgIiBhbmQgYmFzZSAiLAogICAgICAgICAgICAgSlNWYWx1ZShiYXNlKSwgIiBhc3N1bWluZyBp
bXB1cmUgcHJvcGVydHkgd2F0Y2hwb2ludHMgYXJlIHNldC5cbiIpOwogICAgIH0KICAgICAKICAg
ICBpZiAoISp0aGlzKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoUHJvcGVy
dHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkludmFs
aWQgYmVjYXVzZSB1bnNldC5cbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAg
IAogICAgIGlmICghc3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpIHsK
LSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiSW52YWxpZCBiZWNhdXNlIGFjY2Vz
c2VzIGFyZSBub3QgY2FjaGVhYmxlLlxuIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CkBAIC04OCw3ICs5MCw3IEBAIGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFz
c3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KAogICAgICAgICB1bnNpZ25lZCBjdXJyZW50
QXR0cmlidXRlczsKICAgICAgICAgUHJvcGVydHlPZmZzZXQgY3VycmVudE9mZnNldCA9IHN0cnVj
dHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCgpLCBjdXJyZW50QXR0cmlidXRlcyk7CiAgICAgICAg
IGlmIChjdXJyZW50T2Zmc2V0ICE9IG9mZnNldCgpIHx8IGN1cnJlbnRBdHRyaWJ1dGVzICE9IGF0
dHJpYnV0ZXMoKSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGlm
IChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAg
ZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgYmVjYXVzZSB3ZSBuZWVkIG9m
ZnNldCwgYXR0cmlidXRlcyB0byBiZSAiLCBvZmZzZXQoKSwgIiwgIiwgYXR0cmlidXRlcygpLAog
ICAgICAgICAgICAgICAgICAgICAiIGJ1dCB0aGV5IGFyZSAiLCBjdXJyZW50T2Zmc2V0LCAiLCAi
LCBjdXJyZW50QXR0cmlidXRlcywgIlxuIik7CkBAIC0xMDAsMjAgKzEwMiwyMCBAQCBib29sIFBy
b3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hw
b2ludCgKICAgICAgICAgCiAgICAgY2FzZSBBYnNlbmNlOiB7CiAgICAgICAgIGlmIChzdHJ1Y3R1
cmUtPmlzRGljdGlvbmFyeSgpKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkludmFsaWQgYmVjYXVzZSBpdCdzIGEgZGljdGlvbmFyeS5cbiIpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgUHJvcGVydHlPZmZz
ZXQgY3VycmVudE9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCgpKTsKICAg
ICAgICAgaWYgKGN1cnJlbnRPZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewotICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJJbnZhbGlkIGJlY2F1c2UgdGhlIHBy
b3BlcnR5IGV4aXN0cyBhdCBvZmZzZXQ6ICIsIGN1cnJlbnRPZmZzZXQsICJcbiIpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoc3Ry
dWN0dXJlLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSAhPSBwcm90b3R5cGUoKSkgewotICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbklu
dGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAg
ICAgICAgICAgIkludmFsaWQgYmVjYXVzZSB0aGUgcHJvdG90eXBlIGlzICIsIHN0cnVjdHVyZS0+
c3RvcmVkUHJvdG90eXBlKCksICIgZXZlbiB0aG91Z2ggIgogICAgICAgICAgICAgICAgICAgICAi
aXQgc2hvdWxkIGhhdmUgYmVlbiAiLCBKU1ZhbHVlKHByb3RvdHlwZSgpKSwgIlxuIik7CkBAIC0x
MjYsNyArMTI4LDcgQEAgYm9vbCBQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNzdW1p
bmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoCiAgICAgCiAgICAgY2FzZSBBYnNlbmNlT2ZTZXRF
ZmZlY3Q6IHsKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKLSAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKFByb3BlcnR5Q29uZGl0aW9uSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiSW52YWxpZCBiZWNhdXNl
IGl0J3MgYSBkaWN0aW9uYXJ5LlxuIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KQEAgLTEzNSw3ICsxMzcsNyBAQCBib29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxs
VmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgKICAgICAgICAgUHJvcGVydHlP
ZmZzZXQgY3VycmVudE9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCgpLCBj
dXJyZW50QXR0cmlidXRlcyk7CiAgICAgICAgIGlmIChjdXJyZW50T2Zmc2V0ICE9IGludmFsaWRP
ZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChjdXJyZW50QXR0cmlidXRlcyAmIChSZWFkT25seSB8
IEFjY2Vzc29yIHwgQ3VzdG9tQWNjZXNzb3IpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJv
c2UpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVy
Ym9zZSkgewogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAg
ICAgICAgIkludmFsaWQgYmVjYXVzZSB3ZSBleHBlY3RlZCBub3QgdG8gaGF2ZSBhIHNldHRlciwg
YnV0IHdlIGhhdmUgb25lIGF0IG9mZnNldCAiLAogICAgICAgICAgICAgICAgICAgICAgICAgY3Vy
cmVudE9mZnNldCwgIiB3aXRoIGF0dHJpYnV0ZXMgIiwgY3VycmVudEF0dHJpYnV0ZXMsICJcbiIp
OwpAQCAtMTQ1LDcgKzE0Nyw3IEBAIGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxp
ZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KAogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBpZiAoc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSAhPSBwcm90b3R5
cGUoKSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGlmIChQcm9w
ZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxv
ZygKICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgYmVjYXVzZSB0aGUgcHJvdG90eXBlIGlz
ICIsIHN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCksICIgZXZlbiB0aG91Z2ggIgogICAgICAg
ICAgICAgICAgICAgICAiaXQgc2hvdWxkIGhhdmUgYmVlbiAiLCBKU1ZhbHVlKHByb3RvdHlwZSgp
KSwgIlxuIik7CkBAIC0xNjAsNyArMTYyLDcgQEAgYm9vbCBQcm9wZXJ0eUNvbmRpdGlvbjo6aXNT
dGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoCiAgICAgICAgIGlmICgh
YmFzZSB8fCBiYXNlLT5zdHJ1Y3R1cmUoKSAhPSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIC8v
IENvbnNlcnZhdGl2ZWx5IHJldHVybiBmYWxzZSwgc2luY2Ugd2UgY2Fubm90IHZlcmlmeSB0aGlz
IG9uZSB3aXRob3V0IGhhdmluZyB0aGUKICAgICAgICAgICAgIC8vIG9iamVjdC4KLSAgICAgICAg
ICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRl
cm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAg
ICAgICAgICJJbnZhbGlkIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhIGJhc2Ugb3IgdGhlIGJhc2Ug
aGFzIHRoZSB3cm9uZyBzdHJ1Y3R1cmU6ICIsCiAgICAgICAgICAgICAgICAgICAgIFJhd1BvaW50
ZXIoYmFzZSksICJcbiIpOwpAQCAtMTczLDcgKzE3NSw3IEBAIGJvb2wgUHJvcGVydHlDb25kaXRp
b246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KAogICAgICAg
ICAKICAgICAgICAgUHJvcGVydHlPZmZzZXQgY3VycmVudE9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0
Q29uY3VycmVudGx5KHVpZCgpKTsKICAgICAgICAgaWYgKGN1cnJlbnRPZmZzZXQgPT0gaW52YWxp
ZE9mZnNldCkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGlmIChQ
cm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgZGF0
YUxvZygKICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgYmVjYXVzZSB0aGUgYmFzZSBubyBs
b25nIGFwcGVhcnMgdG8gaGF2ZSAiLCB1aWQoKSwgIiBvbiBpdHMgc3RydWN0dXJlOiAiLAogICAg
ICAgICAgICAgICAgICAgICAgICAgUmF3UG9pbnRlcihiYXNlKSwgIlxuIik7CkBAIC0xODMsNyAr
MTg1LDcgQEAgYm9vbCBQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1
cmVQcm9wZXJ0eVdhdGNocG9pbnQoCiAKICAgICAgICAgSlNWYWx1ZSBjdXJyZW50VmFsdWUgPSBi
YXNlLT5nZXREaXJlY3QoY3VycmVudE9mZnNldCk7CiAgICAgICAgIGlmIChjdXJyZW50VmFsdWUg
IT0gcmVxdWlyZWRWYWx1ZSgpKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAg
ICAgICAgaWYgKFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAg
ICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBiZWNhdXNlIHRo
ZSB2YWx1ZSBpcyAiLCBjdXJyZW50VmFsdWUsICIgYnV0IHdlIHJlcXVpcmUgIiwgcmVxdWlyZWRW
YWx1ZSgpLAogICAgICAgICAgICAgICAgICAgICAiXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IDIxODc3NTE3
NmYyNzdlMzY2OGRjMTJkZWI2NjY1ZGExNGU0N2QxYjcuLjNlM2JmMjQzYWE5NWEyOTNlYjI2YWRj
Mjg1YWE5OTYwNjBlODlkNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtMzUsNyArMzUsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCiAKK25hbWVzcGFjZSBTdHJ1Y3R1cmVTdHViSW5mb0lu
dGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogU3RydWN0
dXJlU3R1YkluZm86OlN0cnVjdHVyZVN0dWJJbmZvKEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKICAg
ICA6IGNhbGxTaXRlSW5kZXgoVUlOVF9NQVgpCkBAIC0xMTUsNyArMTE3LDcgQEAgQWNjZXNzR2Vu
ZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgKIHsKICAgICBW
TSYgdm0gPSAqY29kZUJsb2NrLT52bSgpOwogICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlm
IChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJB
ZGRpbmcgYWNjZXNzIGNhc2U6ICIsIGFjY2Vzc0Nhc2UsICJcbiIpOwogICAgIAogICAgIGlmICgh
YWNjZXNzQ2FzZSkKQEAgLTEyNiw3ICsxMjgsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0
cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAogICAgIGlmIChjYWNoZVR5cGUgPT0gQ2Fj
aGVUeXBlOjpTdHViKSB7CiAgICAgICAgIHJlc3VsdCA9IHUuc3R1Yi0+YWRkQ2FzZShsb2NrZXIs
IHZtLCBjb2RlQmxvY2ssICp0aGlzLCBpZGVudCwgV1RGTW92ZShhY2Nlc3NDYXNlKSk7CiAgICAg
ICAgIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZv
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJIYWQgc3R1YiwgcmVzdWx0
OiAiLCByZXN1bHQsICJcbiIpOwogCiAgICAgICAgIGlmICghcmVzdWx0LmJ1ZmZlcmVkKCkpIHsK
QEAgLTE0Nyw3ICsxNDksNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJ
bmZvOjphZGRBY2Nlc3NDYXNlKAogICAgICAgICAKICAgICAgICAgcmVzdWx0ID0gYWNjZXNzLT5h
ZGRDYXNlcyhsb2NrZXIsIHZtLCBjb2RlQmxvY2ssICp0aGlzLCBpZGVudCwgV1RGTW92ZShhY2Nl
c3NDYXNlcykpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChT
dHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygi
Q3JlYXRlZCBzdHViLCByZXN1bHQ6ICIsIHJlc3VsdCwgIlxuIik7CiAKICAgICAgICAgaWYgKCFy
ZXN1bHQuYnVmZmVyZWQoKSkgewpAQCAtMTY0LDcgKzE2Niw3IEBAIEFjY2Vzc0dlbmVyYXRpb25S
ZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAgICAgLy8gSWYgd2UgZGlk
bid0IGJ1ZmZlciBhbnkgY2FzZXMgdGhlbiBiYWlsLiBJZiB0aGlzIG1hZGUgbm8gY2hhbmdlcyB0
aGVuIHdlJ2xsIGp1c3QgdHJ5IGFnYWluCiAgICAgLy8gc3ViamVjdCB0byBjb29sLWRvd24uCiAg
ICAgaWYgKCFyZXN1bHQuYnVmZmVyZWQoKSkgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBk
YXRhTG9nKCJEaWRuJ3QgYnVmZmVyIGFueXRoaW5nLCBiYWlsaW5nLlxuIik7CiAgICAgICAgIGJ1
ZmZlcmVkU3RydWN0dXJlcy5jbGVhcigpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTcy
LDcgKzE3NCw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFk
ZEFjY2Vzc0Nhc2UoCiAgICAgCiAgICAgLy8gVGhlIGJ1ZmZlcmluZyBjb3VudGRvd24gdGVsbHMg
dXMgaWYgd2Ugc2hvdWxkIGJlIHJlcGF0Y2hpbmcgbm93LgogICAgIGlmIChidWZmZXJpbmdDb3Vu
dGRvd24pIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChTdHJ1Y3R1cmVTdHVi
SW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQ291bnRkb3duIGlz
IHRvbyBoaWdoOiAiLCBidWZmZXJpbmdDb3VudGRvd24sICIuXG4iKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CkBAIC0xODMsNyArMTg1LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3Vs
dCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgKICAgICAKICAgICByZXN1bHQgPSB1
LnN0dWItPnJlZ2VuZXJhdGUobG9ja2VyLCB2bSwgY29kZUJsb2NrLCAqdGhpcywgaWRlbnQpOwog
ICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJSZWdlbmVyYXRpb24gcmVzdWx0OiAiLCByZXN1
bHQsICJcbiIpOwogICAgIAogICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQuYnVmZmVyZWQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5jcHAKaW5kZXgg
Y2Q2OTRiYmViYWM4MDdkNTE4ZjY2YzQ3Y2FhYWI2ZTc4ZTkxZDIzYy4uYjgzZmVlMGQzYzA5ZDE0
OTdhYTdlYTFkZTNlMDQ5MDYyZjIyNmMxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RIZWFwLmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgQWJzdHJhY3RIZWFwS2luZCBraW5kKQogewogICAgIHN3aXRj
aCAoa2luZCkgewogI2RlZmluZSBBQlNUUkFDVF9IRUFQX0RVTVAobmFtZSkgICAgICAgICAgICBc
Ci0gICAgY2FzZSBuYW1lOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjYXNl
IEFic3RyYWN0SGVhcEtpbmQ6Om5hbWU6ICAgICAgICAgICAgXAogICAgICAgICBvdXQucHJpbnQo
I25hbWUpOyAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHJldHVybjsKICAgICBGT1JfRUFD
SF9BQlNUUkFDVF9IRUFQX0tJTkQoQUJTVFJBQ1RfSEVBUF9EVU1QKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5j
cHAKaW5kZXggNTE2NTBmNTg1ZDRlOGVhNmEzMzllN2Y2MzAyOGVhMDhlZDU4ZWE0Zi4uYTQ1N2Y4
ZjU3ZDQ5Y2MzZTI3MzM5NzZiODBiMmZkOTg2M2E0NjBhZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3Bw
CkBAIC01MCw3ICs1MCw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogbmFt
ZXNwYWNlIHsKIAotYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgREZHQXJndW1lbnRz
RWxpbWluYXRpb25QaGFzZUludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBm
YWxzZTsKK30KIAogY2xhc3MgQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7CiBwdWJsaWM6CkBAIC02NSw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdmVyc2lv
biBvdmVyIExvYWRTdG9yZS4KICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBt
X2dyYXBoLm1fZm9ybSA9PSBTU0EpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsK
KyAgICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9z
ZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIGFyZ3VtZW50cyBlbGltaW5h
dGlvbjpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KQEAgLTE1
Nyw3ICsxNTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0
aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkNhbmRpZGF0
ZXM6ICIsIGxpc3REdW1wKG1fY2FuZGlkYXRlcyksICJcbiIpOwogICAgIH0KIApAQCAtMjEwLDcg
KzIxMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cmFuc2l0aXZlbHlSZW1vdmVDYW5kaWRhdGUo
Tm9kZSogbm9kZSwgTm9kZSogc291cmNlID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGJvb2wg
cmVtb3ZlZCA9IG1fY2FuZGlkYXRlcy5yZW1vdmUobm9kZSk7Ci0gICAgICAgIGlmIChyZW1vdmVk
ICYmIHZlcmJvc2UgJiYgc291cmNlKQorICAgICAgICBpZiAocmVtb3ZlZCAmJiBERkdBcmd1bWVu
dHNFbGltaW5hdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UgJiYgc291cmNlKQogICAgICAgICAg
ICAgZGF0YUxvZygiZWxpbWluYXRpbmcgY2FuZGlkYXRlOiAiLCBub2RlLCAiIGJlY2F1c2UgaXQg
ZXNjYXBlcyBmcm9tOiAiLCBzb3VyY2UsICJcbiIpOwogCiAgICAgICAgIGlmIChyZW1vdmVkKQpA
QCAtNDE4LDcgKzQyMCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAot
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0aW9u
UGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkFmdGVyIGVzY2Fw
ZSBhbmFseXNpczogIiwgbGlzdER1bXAobV9jYW5kaWRhdGVzKSwgIlxuIik7CiAgICAgfQogCkBA
IC01MTksNyArNTIxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHRo
aXMgYXJndW1lbnRzIGFsbG9jYXRpb24sIGFuZCB3ZSdkIGhhdmUgdG8gZXhhbWluZSBldmVyeSBu
b2RlIGluIHRoZSBibG9jaywKICAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiB3ZSBjYW4ganVz
dCBlbGltaW5hdGUgdGhlIGNhbmRpZGF0ZS4KICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGVJ
bmRleCA9PSBibG9jay0+c2l6ZSgpICYmIGNhbmRpZGF0ZS0+b3duZXIgIT0gYmxvY2spIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJlbGltaW5hdGluZyBjYW5kaWRhdGU6
ICIsIGNhbmRpZGF0ZSwgIiBiZWNhdXNlIGl0IGlzIGNsb2JiZXJlZCBieTogIiwgYmxvY2stPmF0
KG5vZGVJbmRleCksICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGl2ZWx5
UmVtb3ZlQ2FuZGlkYXRlKGNhbmRpZGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47CkBAIC01NDYsNyArNTQ4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOb09wQ2xvYmJlcml6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR0FyZ3Vt
ZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiZWxpbWluYXRpbmcgY2FuZGlkYXRlOiAiLCBjYW5kaWRh
dGUsICIgYmVjYXVzZSBpdCBpcyBjbG9iYmVyZWQgYnkgIiwgYmxvY2stPmF0KG5vZGVJbmRleCks
ICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpdmVseVJlbW92ZUNh
bmRpZGF0ZShjYW5kaWRhdGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTU2OCw3ICs1NzAsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBzaW5jZSB0aG9zZSBhdmFp
bGFiaWxpdGllcyBzcGVhayBvZiB0aGUgc3RhY2sgYmVmb3JlIHRoZSBvcHRpbWl6aW5nIGNvbXBp
bGVyIHN0YWNrIGZyYW1lIGlzCiAgICAgICAgIC8vIHRvcm4gZG93bi4KIAotICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkFmdGVyIGludGVyZmVyZW5jZSBhbmFs
eXNpczogIiwgbGlzdER1bXAobV9jYW5kaWRhdGVzKSwgIlxuIik7CiAgICAgfQogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBi
NDlmMmU5Y2NhY2NjZjhkYjUyNmUyNWMzNDY4ZjQyM2IwNmE1NzA2Li5jOGUwOTZlZDRlNjAzOGI1
MTQzNTIzZWJlMGNkZGM3ZDhkZGRkYmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNzAsMjIgKzcwLDE4IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAotTk9fUkVUVVJOX0RVRV9UT19D
UkFTSCBORVZFUl9JTkxJTkUgdm9pZCBjcmFzaCgpCi17Ci0gICAgQ1JBU0goKTsKLX0KLQotI3Vu
ZGVmIFJFTEVBU0VfQVNTRVJUCi0jZGVmaW5lIFJFTEVBU0VfQVNTRVJUKGFzc2VydGlvbikgZG8g
eyBcCisjZGVmaW5lIFBBUlNFUl9BU1NFUlQoYXNzZXJ0aW9uLCAuLi4pIGRvIHsgICAgICAgICAg
XAogICAgIGlmIChVTkxJS0VMWSghKGFzc2VydGlvbikpKSB7IFwKICAgICAgICAgV1RGUmVwb3J0
QXNzZXJ0aW9uRmFpbHVyZShfX0ZJTEVfXywgX19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJT04s
ICNhc3NlcnRpb24pOyBcCi0gICAgICAgIGNyYXNoKCk7IFwKKyAgICAgICAgQ1JBU0hfV0lUSF9J
TkZPKF9fVkFfQVJHU19fKTsgXAogICAgIH0gXAogfSB3aGlsZSAoMCkKIAogfSAvLyBhbm9ueW1v
dXMgbmFtZXNwYWNlCiAKK25hbWVzcGFjZSBERkdCeXRlQ29kZVBhcnNlckludGVybmFsIHsKIHN0
YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogY2xhc3MgQ29uc3RhbnRCdWZm
ZXJLZXkgewogcHVibGljOgpAQCAtMTIwNyw3ICsxMjAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICAgICAgICAgICwgbV9zZXRNb2RlKHNldE1vZGUpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wZXJhbmQuaXNWYWxpZCgpKTsK
KyAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQob3BlcmFuZC5pc1ZhbGlkKCkpOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBOb2RlKiBleGVjdXRlKEJ5dGVDb2RlUGFyc2VyKiBwYXJzZXIp
CkBAIC0xNDMwLDE4ICsxNDI2LDE4IEBAIHVuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmlu
Z0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQsIElubGluZUNhbGxGcmFtZTo6CiB7CiAgICAg
Q2FsbE1vZGUgY2FsbE1vZGUgPSBJbmxpbmVDYWxsRnJhbWU6OmNhbGxNb2RlRm9yKGtpbmQpOwog
ICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gc3BlY2lhbGl6
YXRpb25LaW5kRm9yKGNhbGxNb2RlKTsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0
ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQ29uc2lkZXJp
bmcgaW5saW5pbmcgIiwgY2FsbGVlLCAiIGludG8gIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxu
Iik7CiAgICAgCiAgICAgaWYgKG1faGFzRGVidWdnZXJFbmFibGVkKSB7Ci0gICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlIGRlYnVnZ2VyIGlz
IGluIHVzZS5cbiIpOwogICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQogCiAgICAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLmZ1bmN0aW9uRXhlY3V0YWJsZSgp
OwogICAgIGlmICghZXhlY3V0YWJsZSkgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
aWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZXJlIGlzIG5vIGZ1bmN0aW9uIGV4ZWN1dGFibGUu
XG4iKTsKICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KQEAgLTE0NTUsMTQgKzE0NTEs
MTQgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBj
YWxsZWUsIGludCwgSW5saW5lQ2FsbEZyYW1lOjoKICAgICAvLyBpdCdzIGEgcmFyZSBjYXNlIGJl
Y2F1c2Ugd2UgZXhwZWN0IHRoYXQgYW55IGhvdCBjYWxsZWVzIHdvdWxkIGhhdmUgYWxyZWFkeSBi
ZWVuIGNvbXBpbGVkLgogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFz
ZWxpbmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICBpZiAoIWNvZGVCbG9j
aykgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2Vy
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNh
dXNlIG5vIGNvZGUgYmxvY2sgYXZhaWxhYmxlLlxuIik7CiAgICAgICAgIHJldHVybiBVSU5UX01B
WDsKICAgICB9CiAKICAgICBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsID0gaW5saW5l
RnVuY3Rpb25Gb3JDYXBhYmlsaXR5TGV2ZWwoCiAgICAgICAgIGNvZGVCbG9jaywgc3BlY2lhbGl6
YXRpb25LaW5kLCBjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKTsKLSAgICBpZiAodmVyYm9zZSkgewor
ICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRh
dGFMb2coIiAgICBDYWxsIG1vZGU6ICIsIGNhbGxNb2RlLCAiXG4iKTsKICAgICAgICAgZGF0YUxv
ZygiICAgIElzIGNsb3N1cmUgY2FsbDogIiwgY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSwgIlxuIik7
CiAgICAgICAgIGRhdGFMb2coIiAgICBDYXBhYmlsaXR5IGxldmVsOiAiLCBjYXBhYmlsaXR5TGV2
ZWwsICJcbiIpOwpAQCAtMTQ3Miw3ICsxNDY4LDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6
OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCwgSW5saW5lQ2FsbEZyYW1lOjoK
ICAgICAgICAgZGF0YUxvZygiICAgIElzIGlubGluaW5nIGNhbmRpZGF0ZTogIiwgY29kZUJsb2Nr
LT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+aXNJbmxpbmluZ0NhbmRpZGF0ZSgpLCAiXG4iKTsK
ICAgICB9CiAgICAgaWYgKCFjYW5JbmxpbmUoY2FwYWJpbGl0eUxldmVsKSkgewotICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZSBmdW5jdGlv
biBpcyBub3QgaW5saW5lYWJsZS5cbiIpOwogICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAg
fQpAQCAtMTQ4Miw3ICsxNDc4LDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5n
Q29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCwgSW5saW5lQ2FsbEZyYW1lOjoKICAgICAvLyBw
dXJwb3NlIG9mIHVuc2V0dGluZyBTQUJJLgogICAgIGlmICghaXNTbWFsbEVub3VnaFRvSW5saW5l
Q29kZUludG8obV9jb2RlQmxvY2spKSB7CiAgICAgICAgIGNvZGVCbG9jay0+bV9zaG91bGRBbHdh
eXNCZUlubGluZWQgPSBmYWxzZTsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChE
RkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygi
ICAgIEZhaWxpbmcgYmVjYXVzZSB0aGUgY2FsbGVyIGlzIHRvbyBsYXJnZS5cbiIpOwogICAgICAg
ICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQpAQCAtMTUwNiw3ICsxNTAyLDcgQEAgdW5zaWduZWQg
Qnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCwgSW5s
aW5lQ2FsbEZyYW1lOjoKICAgICBmb3IgKElubGluZVN0YWNrRW50cnkqIGVudHJ5ID0gbV9pbmxp
bmVTdGFja1RvcDsgZW50cnk7IGVudHJ5ID0gZW50cnktPm1fY2FsbGVyKSB7CiAgICAgICAgICsr
ZGVwdGg7CiAgICAgICAgIGlmIChkZXB0aCA+PSBPcHRpb25zOjptYXhpbXVtSW5saW5pbmdEZXB0
aCgpKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdCeXRl
Q29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICBGYWlsaW5nIGJlY2F1c2UgZGVwdGggZXhjZWVkZWQuXG4iKTsKICAgICAgICAgICAgIHJldHVy
biBVSU5UX01BWDsKICAgICAgICAgfQpAQCAtMTUxNCwxNCArMTUxMCwxNCBAQCB1bnNpZ25lZCBC
eXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50LCBJbmxp
bmVDYWxsRnJhbWU6OgogICAgICAgICBpZiAoZW50cnktPmV4ZWN1dGFibGUoKSA9PSBleGVjdXRh
YmxlKSB7CiAgICAgICAgICAgICArK3JlY3Vyc2lvbjsKICAgICAgICAgICAgIGlmIChyZWN1cnNp
b24gPj0gT3B0aW9uczo6bWF4aW11bUlubGluaW5nUmVjdXJzaW9uKCkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxp
bmcgYmVjYXVzZSByZWN1cnNpb24gZGV0ZWN0ZWQuXG4iKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gVUlOVF9NQVg7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAg
aWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgIGRhdGFMb2coIiAgICBJbmxpbmluZyBzaG91bGQgYmUgcG9zc2libGUuXG4iKTsK
ICAgICAKICAgICAvLyBJdCBtaWdodCBiZSBwb3NzaWJsZSB0byBpbmxpbmUuCkBAIC0xNjE4LDEx
ICsxNjE0LDExIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRh
cmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyCiAgICAgaW5saW5lVmFyaWFibGVE
YXRhLmFyZ3VtZW50UG9zaXRpb25TdGFydCA9IGFyZ3VtZW50UG9zaXRpb25TdGFydDsKICAgICBp
bmxpbmVWYXJpYWJsZURhdGEuY2FsbGVlVmFyaWFibGUgPSAwOwogICAgIAotICAgIFJFTEVBU0Vf
QVNTRVJUKAorICAgIFBBUlNFUl9BU1NFUlQoCiAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1f
aW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsCiAgICAgICAgID09IGNhbGxlZS5pc0Nsb3N1
cmVDYWxsKCkpOwogICAgIGlmIChjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKSB7Ci0gICAgICAgIFJF
TEVBU0VfQVNTRVJUKGNhbGxlZVZhcmlhYmxlKTsKKyAgICAgICAgUEFSU0VSX0FTU0VSVChjYWxs
ZWVWYXJpYWJsZSk7CiAgICAgICAgIGlubGluZVZhcmlhYmxlRGF0YS5jYWxsZWVWYXJpYWJsZSA9
IGNhbGxlZVZhcmlhYmxlOwogICAgIH0KICAgICAKQEAgLTE2NjksNyArMTY2NSw3IEBAIHZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1
bHRPcGVyYW5kLCBDYWxsVmFyCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBSZXB1
cnBvc2luZyBsYXN0IGJsb2NrIGZyb20gIiwgbGFzdEJsb2NrLT5ieXRlY29kZUJlZ2luLCAiIHRv
ICIsIG1fY3VycmVudEluZGV4LCAiXG4iKTsKICAgICAgICAgICAgIGxhc3RCbG9jay0+Ynl0ZWNv
ZGVCZWdpbiA9IG1fY3VycmVudEluZGV4OwogICAgICAgICAgICAgaWYgKGNhbGxlckxpbmthYmls
aXR5ID09IENhbGxlckRvZXNOb3JtYWxMaW5raW5nKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkFkZGluZyB1bmxpbmtlZCBibG9j
ayAiLCBSYXdQb2ludGVyKG1fZ3JhcGgubGFzdEJsb2NrKCkpLCAiIChvbmUgcmV0dXJuKVxuIik7
CiAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fdW5saW5rZWRC
bG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2sobV9ncmFwaC5sYXN0QmxvY2soKSkpOwogICAgICAg
ICAgICAgfQpAQCAtMTY5OSwxNCArMTY5NSwxNCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxp
bmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcgog
ICAgICAgICBBU1NFUlQoIW5vZGUtPnRhcmdldEJsb2NrKCkpOwogICAgICAgICBub2RlLT50YXJn
ZXRCbG9jaygpID0gYmxvY2sucHRyKCk7CiAgICAgICAgIGlubGluZVN0YWNrRW50cnkubV91bmxp
bmtlZEJsb2Nrc1tpXS5tX25lZWRzRWFybHlSZXR1cm5MaW5raW5nID0gZmFsc2U7Ci0gICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9pbnRlcihibG9ja1Rv
TGluayksICIgYXMgbGlua2VkIChqdW1wcyB0byByZXR1cm4pXG4iKTsKICAgICAgICAgYmxvY2tU
b0xpbmstPmRpZExpbmsoKTsKICAgICB9CiAgICAgCiAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9j
ay5wdHIoKTsKICAgICBBU1NFUlQobV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tM
aW5raW5nVGFyZ2V0cy5pc0VtcHR5KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1f
YmxvY2tMaW5raW5nVGFyZ2V0cy5sYXN0KCktPmJ5dGVjb2RlQmVnaW4gPCBuZXh0T2Zmc2V0KTsK
LSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgZGF0YUxvZygiQWRkaW5nIHVubGlua2VkIGJsb2NrICIsIFJhd1BvaW50
ZXIoYmxvY2sucHRyKCkpLCAiIChtYW55IHJldHVybnMpXG4iKTsKICAgICBpZiAoY2FsbGVyTGlu
a2FiaWxpdHkgPT0gQ2FsbGVyRG9lc05vcm1hbExpbmtpbmcpIHsKICAgICAgICAgbV9pbmxpbmVT
dGFja1RvcC0+bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2so
YmxvY2sucHRyKCkpKTsKQEAgLTE3NDIsNyArMTczOCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmF0dGVtcHRUb0lubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVy
YW5kCiAgICAgaWYgKCFpbmxpbmluZ0JhbGFuY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiICAgIENvbnNpZGVyaW5nIGNhbGxlZSAiLCBjYWxs
ZWUsICJcbiIpOwogICAgIAogICAgIC8vIEludHJpbnNpY3MgYW5kIGludGVybmFsIGZ1bmN0aW9u
cyBjYW4gb25seSBiZSBpbmxpbmVkIGlmIHdlJ3JlIG5vdCBkb2luZyB2YXJhcmdzLiBUaGlzIGlz
IGJlY2F1c2UKQEAgLTE3NjIsNDAgKzE3NTgsNDAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6YXR0
ZW1wdFRvSW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQK
ICAgICAKICAgICAgICAgaWYgKEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLmlu
dGVybmFsRnVuY3Rpb24oKSkgewogICAgICAgICAgICAgaWYgKGhhbmRsZUNvbnN0YW50SW50ZXJu
YWxGdW5jdGlvbihjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFuZCwgZnVuY3Rpb24sIHJlZ2lz
dGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5k
LCBwcmVkaWN0aW9uLCBpbnNlcnRDaGVja3NXaXRoQWNjb3VudGluZykpIHsKLSAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChkaWRJbnNlcnRDaGVja3MpOworICAgICAgICAgICAgICAgIFBB
UlNFUl9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KFBoYW50b20sIGNhbGxUYXJnZXROb2RlKTsKICAgICAgICAgICAgICAgICBlbWl0QXJndW1lbnRQ
aGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwogICAg
ICAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZS0tOwogICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWRpZEluc2Vy
dENoZWNrcyk7CisgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgCiAgICAgICAgIEludHJp
bnNpYyBpbnRyaW5zaWMgPSBjYWxsZWUuaW50cmluc2ljRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7
CiAgICAgICAgIGlmIChpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMpIHsKICAgICAgICAgICAgIGlm
IChoYW5kbGVJbnRyaW5zaWNDYWxsKGNhbGxUYXJnZXROb2RlLCByZXN1bHRPcGVyYW5kLCBpbnRy
aW5zaWMsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGlj
dGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7Ci0gICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKKyAgICAgICAgICAgICAgICBQQVJTRVJfQVNT
RVJUKGRpZEluc2VydENoZWNrcyk7CiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9t
LCBjYWxsVGFyZ2V0Tm9kZSk7CiAgICAgICAgICAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMo
cmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKICAgICAgICAgICAg
ICAgICBpbmxpbmluZ0JhbGFuY2UtLTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNr
cyk7CisgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOwogICAgICAg
ICAgICAgLy8gV2UgbWlnaHQgc3RpbGwgdHJ5IHRvIGlubGluZSB0aGUgSW50cmluc2ljIGJlY2F1
c2UgaXQgbWlnaHQgYmUgYSBidWlsdGluIEpTIGZ1bmN0aW9uLgogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKE9wdGlvbnM6OnVzZURPTUpJVCgpKSB7CiAgICAgICAgICAgICBpZiAoY29uc3QgRE9N
SklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IGNhbGxlZS5zaWduYXR1cmVGb3Ioc3BlY2lhbGl6
YXRpb25LaW5kKSkgewogICAgICAgICAgICAgICAgIGlmIChoYW5kbGVET01KSVRDYWxsKGNhbGxU
YXJnZXROb2RlLCByZXN1bHRPcGVyYW5kLCBzaWduYXR1cmUsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFjY291
bnRpbmcpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRpZEluc2VydENo
ZWNrcyk7CisgICAgICAgICAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tz
KTsKICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9k
ZSk7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zm
c2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAgICAgICAgICAgICAgICAgIGlu
bGluaW5nQmFsYW5jZS0tOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWRpZEluc2VydENo
ZWNrcyk7CisgICAgICAgICAgICAgICAgUEFSU0VSX0FTU0VSVCghZGlkSW5zZXJ0Q2hlY2tzKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE4MTcsMjEgKzE4MTMsMjEgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgVmlydHVhbFJlZ2lzdGVy
IGFyZ3VtZW50c0FyZ3VtZW50LCB1bnNpZ25lZCBhcmd1bWVudHNPZmZzZXQsIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywKICAgICB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBOb2RlVHlwZSBj
YWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uKQogewotICAgIGlmICh2ZXJib3NlKSB7CisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50
ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZGF0YUxvZygiSGFuZGxpbmcgaW5saW5pbmcuLi5c
biIpOwogICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxu
Iik7CiAgICAgfQogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5k
ID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmRGb3Ioa2luZCk7CiAgICAgCiAg
ICAgaWYgKCFjYWxsTGlua1N0YXR1cy5zaXplKCkpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgZGF0YUxvZygiQmFpbGluZyBpbmxpbmluZy5cbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogICAgIAogICAgIGlmIChJbmxpbmVDYWxsRnJhbWU6OmlzVmFyYXJncyhraW5kKQog
ICAgICAgICAmJiBjYWxsTGlua1N0YXR1cy5tYXhOdW1Bcmd1bWVudHMoKSA+IE9wdGlvbnM6Om1h
eGltdW1WYXJhcmdzRm9ySW5saW5pbmcoKSkgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBk
YXRhTG9nKCJCYWlsaW5nIGlubGluaW5nIGJlY2F1c2Ugb2YgdmFyYXJncy5cbiIpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTk1MCw3ICsxOTQ2LDcgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAg
ICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAg
IGRhdGFMb2coIkRvbmUgaW5saW5pbmcgKHNpbXBsZSkuXG4iKTsKICAgICAgICAgICAgIGRhdGFM
b2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICAgICAgICAgIGRh
dGFMb2coIlJlc3VsdDogIiwgcmVzdWx0LCAiXG4iKTsKQEAgLTE5NjYsNyArMTk2Miw3IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgIC8vIGFsc28uCiAgICAgaWYg
KCFpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSB8fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWND
YWxsSW5saW5pbmcoKQogICAgICAgICB8fCBJbmxpbmVDYWxsRnJhbWU6OmlzVmFyYXJncyhraW5k
KSkgewotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJz
ZXJJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiQmFpbGluZyBpbmxp
bmluZyAoaGFyZCkuXG4iKTsKICAgICAgICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50
Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICAgICAgfQpAQCAtMTk3OCw3ICsxOTc0LDcgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgLy8gaXQgaGFzIG5vIGlkZWEu
CiAgICAgaWYgKCFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0NhbGxJbmxpbmluZ0Zvck5vblN0dWJT
dGF0dXMoKQogICAgICAgICAmJiAhY2FsbExpbmtTdGF0dXMuaXNCYXNlZE9uU3R1YigpKSB7Ci0g
ICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVy
bmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJCYWlsaW5nIGlubGluaW5nIChu
b24tc3R1YiBwb2x5bW9ycGhpc20pLlxuIik7CiAgICAgICAgICAgICBkYXRhTG9nKCJTdGFjazog
IiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgICAgIH0KQEAgLTIwMDYsMTQgKzIw
MDIsMTQgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgICAgIC8v
IHdoZXJlIGl0IHdvdWxkIGJlIGJlbmVmaWNpYWwuIEl0IG1pZ2h0IGJlIGJlc3QgdG8gaGFuZGxl
IHRoZXNlIGNhc2VzIGFzIGlmIGFsbCBjYWxscyB3ZXJlCiAgICAgICAgIC8vIGNsb3N1cmUgY2Fs
bHMuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzYwMjAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFy
c2VySW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkJhaWxpbmcgaW5s
aW5pbmcgKG1peCkuXG4iKTsKICAgICAgICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50
Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIAotICAgIGlmICh2ZXJib3NlKSB7CisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2Vy
SW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZGF0YUxvZygiRG9pbmcgaGFyZCBpbmxpbmlu
Zy4uLlxuIik7CiAgICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigp
LCAiXG4iKTsKICAgICB9CkBAIC0yMDI0LDExICsyMDIwLDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUlubGluaW5nKAogICAgIC8vIHN0b3JlIHRoZSBjYWxsZWUgc28gdGhhdCBpdCB3
aWxsIGJlIGFjY2Vzc2libGUgdG8gYWxsIG9mIHRoZSBibG9ja3Mgd2UncmUgYWJvdXQgdG8gY3Jl
YXRlLiBXZQogICAgIC8vIGdldCBhd2F5IHdpdGggZG9pbmcgYW4gaW1tZWRpYXRlLXNldCBoZXJl
IGJlY2F1c2Ugd2Ugd291bGRuJ3QgaGF2ZSBwZXJmb3JtZWQgYW55IHNpZGUgZWZmZWN0cwogICAg
IC8vIHlldC4KLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiUmVnaXN0ZXIgb2Zmc2V0OiAiLCByZWdp
c3Rlck9mZnNldCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZVJlZyhyZWdpc3Rlck9mZnNl
dCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7CiAgICAgY2FsbGVlUmVnID0gbV9pbmxpbmVTdGFj
a1RvcC0+cmVtYXBPcGVyYW5kKGNhbGxlZVJlZyk7Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYg
KERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkNh
bGxlZSBpcyBnb2luZyB0byBiZSAiLCBjYWxsZWVSZWcsICJcbiIpOwogICAgIHNldERpcmVjdChj
YWxsZWVSZWcsIGNhbGxUYXJnZXROb2RlLCBJbW1lZGlhdGVTZXRXaXRoRmx1c2gpOwogCkBAIC0y
MDQyLDcgKzIwMzgsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAg
ICBhZGRUb0dyYXBoKFN3aXRjaCwgT3BJbmZvKCZkYXRhKSwgdGhpbmdUb1N3aXRjaE9uKTsKICAg
ICAKICAgICBCYXNpY0Jsb2NrKiBvcmlnaW5CbG9jayA9IG1fY3VycmVudEJsb2NrOwotICAgIGlm
ICh2ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIob3JpZ2luQmxvY2spLCAiIGFz
IGxpbmtlZCAob3JpZ2luIG9mIHBvbHkgaW5saW5lKVxuIik7CiAgICAgb3JpZ2luQmxvY2stPmRp
ZExpbmsoKTsKICAgICBjYW5jZWxMaW5raW5nRm9yQmxvY2sobV9pbmxpbmVTdGFja1RvcCwgb3Jp
Z2luQmxvY2spOwpAQCAtMjA1NCw3ICsyMDUwLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW5saW5pbmcoCiAgICAgLy8gV2UgbWF5IGZvcmNlIHRoaXMgdHJ1ZSBpZiB3ZSBnaXZlIHVw
IG9uIGlubGluaW5nIGFueSBvZiB0aGUgZWRnZXMuCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0
aCA9IGNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRoKCk7CiAgICAgCi0gICAgaWYgKHZl
cmJvc2UpCisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgIGRhdGFMb2coIkFib3V0IHRvIGxvb3Agb3ZlciBmdW5jdGlvbnMgYXQgIiwgY3VycmVudENv
ZGVPcmlnaW4oKSwgIi5cbiIpOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBj
YWxsTGlua1N0YXR1cy5zaXplKCk7ICsraSkgewpAQCAtMjEwMSwxMSArMjA5NywxMSBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICAgICAgICAgIGFkZFRvR3JhcGgo
SnVtcCk7CiAgICAgICAgICAgICBsYW5kaW5nQmxvY2tzLmFwcGVuZChtX2N1cnJlbnRCbG9jayk7
CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdCeXRlQ29k
ZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiTWFya2luZyAi
LCBSYXdQb2ludGVyKG1fY3VycmVudEJsb2NrKSwgIiBhcyBsaW5rZWQgKHRhaWwgb2YgcG9seSBp
bmxpbmVlKVxuIik7CiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5kaWRMaW5rKCk7CiAKLSAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiRmluaXNoZWQgaW5saW5pbmcgIiwgY2FsbExp
bmtTdGF0dXNbaV0sICIgYXQgIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIi5cbiIpOwogICAgIH0K
ICAgICAKQEAgLTIxMTUsNyArMjExMSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKAogICAgIG1fZXhpdE9LID0gdHJ1ZTsKICAgICBkYXRhLmZhbGxUaHJvdWdoID0gQnJh
bmNoVGFyZ2V0KHNsb3dQYXRoQmxvY2sucHRyKCkpOwogICAgIG1fZ3JhcGguYXBwZW5kQmxvY2so
c2xvd1BhdGhCbG9jay5jb3B5UmVmKCkpOwotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChERkdC
eXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJNYXJraW5n
ICIsIFJhd1BvaW50ZXIoc2xvd1BhdGhCbG9jay5wdHIoKSksICIgYXMgbGlua2VkIChzbG93IHBh
dGggYmxvY2spXG4iKTsKICAgICBzbG93UGF0aEJsb2NrLT5kaWRMaW5rKCk7CiAgICAgcHJlcGFy
ZVRvUGFyc2VCbG9jaygpOwpAQCAtMjE0Niw3ICsyMTQyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW5saW5pbmcoCiAgICAgUmVmPEJhc2ljQmxvY2s+IGNvbnRpbnVhdGlvbkJsb2Nr
ID0gYWRvcHRSZWYoCiAgICAgICAgICpuZXcgQmFzaWNCbG9jayhVSU5UX01BWCwgbV9udW1Bcmd1
bWVudHMsIG1fbnVtTG9jYWxzLCAxKSk7CiAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhjb250aW51
YXRpb25CbG9jay5jb3B5UmVmKCkpOwotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChERkdCeXRl
Q29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJBZGRpbmcgdW5s
aW5rZWQgYmxvY2sgIiwgUmF3UG9pbnRlcihjb250aW51YXRpb25CbG9jay5wdHIoKSksICIgKGNv
bnRpbnVhdGlvbilcbiIpOwogICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3Mu
YXBwZW5kKFVubGlua2VkQmxvY2soY29udGludWF0aW9uQmxvY2sucHRyKCkpKTsKICAgICBwcmVw
YXJlVG9QYXJzZUJsb2NrKCk7CkBAIC0yMTU4LDcgKzIxNTQsNyBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbmxpbmluZygKICAgICBtX2N1cnJlbnRJbmRleCA9IG9sZE9mZnNldDsKICAg
ICBtX2V4aXRPSyA9IHRydWU7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoREZH
Qnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICBkYXRhTG9nKCJEb25l
IGlubGluaW5nIChoYXJkKS5cbiIpOwogICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVu
dENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgfQpAQCAtMzQ4MywxNCArMzQ3OSwxNCBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpuZWVkc0R5bmFtaWNMb29rdXAoUmVzb2x2ZVR5cGUgdHlwZSwgT3Bj
b2RlSUQgb3Bjb2RlKQogCiBHZXRCeU9mZnNldE1ldGhvZCBCeXRlQ29kZVBhcnNlcjo6cGxhbkxv
YWQoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGNvbmRpdGlvbikKIHsKLSAgICBpZiAo
dmVyYm9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgZGF0YUxvZygiUGxhbm5pbmcgYSBsb2FkOiAiLCBjb25kaXRpb24sICJcbiIpOwogICAg
IAogICAgIC8vIFdlIG1pZ2h0IHByb21vdGUgdGhpcyB0byBFcXVpdmFsZW5jZSwgYW5kIGEgbGF0
ZXIgREZHIHBhc3MgbWlnaHQgYWxzbyBkbyBzdWNoIHByb21vdGlvbgogICAgIC8vIGV2ZW4gaWYg
d2UgZmFpbCwgYnV0IGZvciBzaW1wbGljaXR5IHRoaXMgY2Fubm90IGJlIGFza2VkIHRvIGxvYWQg
YW4gZXF1aXZhbGVuY2UgY29uZGl0aW9uLgogICAgIC8vIE5vbmUgb2YgdGhlIGNsaWVudHMgb2Yg
dGhpcyBtZXRob2Qgd2lsbCByZXF1ZXN0IGEgbG9hZCBvZiBhbiBFcXVpdmFsZW5jZSBjb25kaXRp
b24gYW55d2F5LAogICAgIC8vIGFuZCBzdXBwb3J0aW5nIGl0IHdvdWxkIGNvbXBsaWNhdGUgdGhl
IGhldXJpc3RpY3MgYmVsb3cuCi0gICAgUkVMRUFTRV9BU1NFUlQoY29uZGl0aW9uLmtpbmQoKSA9
PSBQcm9wZXJ0eUNvbmRpdGlvbjo6UHJlc2VuY2UpOworICAgIFBBUlNFUl9BU1NFUlQoY29uZGl0
aW9uLmtpbmQoKSA9PSBQcm9wZXJ0eUNvbmRpdGlvbjo6UHJlc2VuY2UpOwogICAgIAogICAgIC8v
IEhlcmUncyB0aGUgcmFua2luZyBvZiBob3cgdG8gaGFuZGxlIHRoaXMsIGZyb20gbW9zdCBwcmVm
ZXJyZWQgdG8gbGVhc3QgcHJlZmVycmVkOgogICAgIC8vCkBAIC0zNTkzLDE0ICszNTg5LDE0IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmNoZWNrKGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0JiBjb25kaXRpb25TZXQpCiAKIEdldEJ5T2Zmc2V0TWV0aG9kIEJ5dGVDb2RlUGFyc2VyOjpw
bGFuTG9hZChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0KQog
ewotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJjb25kaXRpb25TZXQgPSAiLCBjb25kaXRpb25TZXQs
ICJcbiIpOwogICAgIAogICAgIEdldEJ5T2Zmc2V0TWV0aG9kIHJlc3VsdDsKICAgICBmb3IgKGNv
bnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBjb25kaXRpb24gOiBjb25kaXRpb25TZXQpIHsK
ICAgICAgICAgc3dpdGNoIChjb25kaXRpb24ua2luZCgpKSB7CiAgICAgICAgIGNhc2UgUHJvcGVy
dHlDb25kaXRpb246OlByZXNlbmNlOgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlc3Vs
dCk7IC8vIFNob3VsZCBvbmx5IHNlZSBleGFjdGx5IG9uZSBvZiB0aGVzZS4KKyAgICAgICAgICAg
IFBBUlNFUl9BU1NFUlQoIXJlc3VsdCk7IC8vIFNob3VsZCBvbmx5IHNlZSBleGFjdGx5IG9uZSBv
ZiB0aGVzZS4KICAgICAgICAgICAgIHJlc3VsdCA9IHBsYW5Mb2FkKGNvbmRpdGlvbik7CiAgICAg
ICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgICAgICByZXR1cm4gR2V0QnlPZmZzZXRN
ZXRob2QoKTsKQEAgLTM3NzAsNyArMzc2Niw3IEBAIE5vZGUqIEJ5dGVDb2RlUGFyc2VyOjpsb2Fk
KAogCiBOb2RlKiBCeXRlQ29kZVBhcnNlcjo6c3RvcmUoTm9kZSogYmFzZSwgdW5zaWduZWQgaWRl
bnRpZmllciwgY29uc3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5vZGUqIHZhbHVlKQogewot
ICAgIFJFTEVBU0VfQVNTRVJUKHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpSZXBs
YWNlKTsKKyAgICBQQVJTRVJfQVNTRVJUKHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50
OjpSZXBsYWNlKTsKIAogICAgIGNoZWNrUHJlc2VuY2VMaWtlKGJhc2UsIG1fZ3JhcGguaWRlbnRp
ZmllcnMoKVtpZGVudGlmaWVyXSwgdmFyaWFudC5vZmZzZXQoKSwgdmFyaWFudC5zdHJ1Y3R1cmUo
KSk7CiAgICAgcmV0dXJuIGhhbmRsZVB1dEJ5T2Zmc2V0KGJhc2UsIGlkZW50aWZpZXIsIHZhcmlh
bnQub2Zmc2V0KCksIHZhcmlhbnQucmVxdWlyZWRUeXBlKCksIHZhbHVlKTsKQEAgLTQxNjksNyAr
NDE2NSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQp
CiAgICAgLy8gb3Bwb3NlZCB0byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAg
IGlmIChtX2N1cnJlbnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJh
bWUoKSkgewogICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgubV9yb290VG9Bcmd1bWVu
dHMuYWRkKG1fY3VycmVudEJsb2NrLCBBcmd1bWVudHNWZWN0b3IoKSk7Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgUEFSU0VSX0FTU0VSVChh
ZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgICAgIEFyZ3VtZW50c1ZlY3RvciYgZW50cnlwb2lu
dEFyZ3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgIGVudHJ5cG9p
bnRBcmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKIApAQCAtNTI2Niw3ICs1MjYyLDcg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYXRjaCk7CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2N1cnJlbnRCbG9jay0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIFBBUlNFUl9BU1NFUlQoIW1fY3VycmVudEJsb2NrLT5zaXplKCkpOwogCiAgICAgICAgICAg
ICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1
ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzNdLnUucG9pbnRl
cik7CiAKQEAgLTUyOTEsOCArNTI4Nyw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzTG9j
YWwoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsUHJlZGljdGlvbnMuYXBwZW5kKHBy
ZWRpY3Rpb24pOwogICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihvcGVyYW5k
LnRvQXJndW1lbnQoKSkgPCBhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG9w
ZXJhbmQudG9Bcmd1bWVudCgpKSA8IGFyZ3VtZW50UHJlZGljdGlvbnMuc2l6ZSgpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlZW5Bcmd1bWVudHMuYWRkKG9wZXJhbmQudG9Bcmd1bWVudCgpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50UHJlZGljdGlvbnNbb3BlcmFuZC50b0Fy
Z3VtZW50KCldID0gcHJlZGljdGlvbjsKQEAgLTUzMDEsNyArNTI5Nyw3IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAKICAgICAgICAgICAgICAgICBp
ZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgewogICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBtX251bUFyZ3VtZW50czsgKythcmd1bWVudCkK
LSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNlZW5Bcmd1bWVudHMuY29u
dGFpbnMoYXJndW1lbnQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQo
c2VlbkFyZ3VtZW50cy5jb250YWlucyhhcmd1bWVudCkpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KIApAQCAtNTM0Miw3ICs1MzM4LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKIAogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5tX3Jvb3RUb0FyZ3VtZW50cy5hZGQobV9jdXJy
ZW50QmxvY2ssIEFyZ3VtZW50c1ZlY3RvcigpKTsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgICAgICAgICAgICAgUEFSU0VSX0FTU0VS
VChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgICAgICAgICAgICAgQXJndW1lbnRzVmVjdG9y
JiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKICAgICAg
ICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CiAK
QEAgLTU0ODcsOCArNTQ4Myw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQgbGltaXQpCiAgICAgICAgICAgICBjYXNlIEdsb2JhbExleGljYWxWYXI6CiAgICAgICAg
ICAgICBjYXNlIEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAgICAg
ICAgICAgICAgICAgSlNTY29wZSogY29uc3RhbnRTY29wZSA9IEpTU2NvcGU6OmNvbnN0YW50U2Nv
cGVGb3JDb2RlQmxvY2socmVzb2x2ZVR5cGUsIG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2Nr
KTsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChjb25zdGFudFNjb3BlKTsKLSAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2FzdDxKU1Njb3BlKj4oY3VycmVudElu
c3RydWN0aW9uWzZdLnUucG9pbnRlcikgPT0gY29uc3RhbnRTY29wZSk7CisgICAgICAgICAgICAg
ICAgUEFSU0VSX0FTU0VSVChjb25zdGFudFNjb3BlKTsKKyAgICAgICAgICAgICAgICBQQVJTRVJf
QVNTRVJUKHN0YXRpY19jYXN0PEpTU2NvcGUqPihjdXJyZW50SW5zdHJ1Y3Rpb25bNl0udS5wb2lu
dGVyKSA9PSBjb25zdGFudFNjb3BlKTsKICAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lz
dGVyKGRzdCksIHdlYWtKU0NvbnN0YW50KGNvbnN0YW50U2NvcGUpKTsKICAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKFBoYW50b20sIGdldChWaXJ0dWFsUmVnaXN0ZXIoc2NvcGUpKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC01ODI5LDcgKzU4MjUsNyBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgLy8gQmFzZWxpbmUt
PkRGRyBPU1IganVtcHMgYmV0d2VlbiBsb29wIGhpbnRzLiBUaGUgREZHIGFzc3VtZXMgdGhhdCBC
YXNlbGluZS0+REZHCiAgICAgICAgICAgICAvLyBPU1IgY2FuIG9ubHkgaGFwcGVuIGF0IGJhc2lj
IGJsb2NrIGJvdW5kYXJpZXMuIEFzc2VydCB0aGF0IHRoZXNlIHR3byBzdGF0ZW1lbnRzCiAgICAg
ICAgICAgICAvLyBhcmUgY29tcGF0aWJsZS4KLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1f
Y3VycmVudEluZGV4ID09IGJsb2NrQmVnaW4pOworICAgICAgICAgICAgUEFSU0VSX0FTU0VSVCht
X2N1cnJlbnRJbmRleCA9PSBibG9ja0JlZ2luKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
Ly8gV2UgbmV2ZXIgZG8gT1NSIGludG8gYW4gaW5saW5lZCBjb2RlIGJsb2NrLiBUaGF0IGNvdWxk
IG5vdCBoYXBwZW4sIHNpbmNlIE9TUgogICAgICAgICAgICAgLy8gbG9va3MgdXAgdGhlIGNvZGUg
YmxvY2sgdGhhdCBpcyB0aGUgcmVwbGFjZW1lbnQgZm9yIHRoZSBiYXNlbGluZSBKSVQgY29kZQpA
QCAtNjE3OSw3ICs2MTc1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKEJhc2lj
QmxvY2sqIGJsb2NrLCBWZWN0b3I8QmFzaWNCbG9jayo+JiBwb3NzaWJsZVQKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBh
cnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1Bv
aW50ZXIoYmxvY2spLCAiIGFzIGxpbmtlZCAoYWN0dWFsbHkgZGlkIGxpbmtpbmcpXG4iKTsKICAg
ICBibG9jay0+ZGlkTGluaygpOwogfQpAQCAtNjE4NywxMCArNjE4MywxMCBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpsaW5rQmxvY2soQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxCYXNpY0Jsb2Nr
Kj4mIHBvc3NpYmxlVAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrcyhWZWN0b3I8VW5s
aW5rZWRCbG9jaz4mIHVubGlua2VkQmxvY2tzLCBWZWN0b3I8QmFzaWNCbG9jayo+JiBwb3NzaWJs
ZVRhcmdldHMpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB1bmxpbmtlZEJsb2Nrcy5z
aXplKCk7ICsraSkgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVD
b2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJBdHRlbXB0
aW5nIHRvIGxpbmsgIiwgUmF3UG9pbnRlcih1bmxpbmtlZEJsb2Nrc1tpXS5tX2Jsb2NrKSwgIlxu
Iik7CiAgICAgICAgIGlmICh1bmxpbmtlZEJsb2Nrc1tpXS5tX25lZWRzTm9ybWFsTGlua2luZykg
ewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHQnl0ZUNvZGVQ
YXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRG9l
cyBuZWVkIG5vcm1hbCBsaW5raW5nLlxuIik7CiAgICAgICAgICAgICBsaW5rQmxvY2sodW5saW5r
ZWRCbG9ja3NbaV0ubV9ibG9jaywgcG9zc2libGVUYXJnZXRzKTsKICAgICAgICAgICAgIHVubGlu
a2VkQmxvY2tzW2ldLm1fbmVlZHNOb3JtYWxMaW5raW5nID0gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCmluZGV4IDU3ZWM0YTgwZTRiMjlkMmNiZDQ5NmVl
YWMzOGQxYjI5MzliODYxNzMuLmViZDFiOGVmZWY3YzI1MzBlMjhmOTI3MTdjZjcwZGFjMjcwZWQz
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCkBAIC00OCw3
ICs0OCw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsK
IAotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgREZHQ1NFUGhhc2VJbnRl
cm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIElt
cHVyZURhdGFTbG90IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbXB1cmVEYXRhU2xvdCk7
CkBAIC02MjcsNyArNjI5LDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgaXRlcmF0ZSgpCiAg
ICAgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJQZXJmb3JtaW5nIGl0ZXJhdGlvbi5c
biIpOwogICAgICAgICAKICAgICAgICAgbV9jaGFuZ2VkID0gZmFsc2U7CkBAIC02MzgsMTMgKzY0
MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2ltcHVyZURhdGEgPSAmbV9pbXB1cmVEYXRh
TWFwW21fYmxvY2tdOwogICAgICAgICAgICAgbV93cml0ZXNTb0Zhci5jbGVhcigpOwogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdDU0VQ
aGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIlByb2Nlc3Np
bmcgYmxvY2sgIiwgKm1fYmxvY2ssICI6XG4iKTsKIAogICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBub2RlSW5kZXggPSAwOyBub2RlSW5kZXggPCBtX2Jsb2NrLT5zaXplKCk7ICsrbm9kZUluZGV4
KSB7CiAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXggPSBub2RlSW5kZXg7CiAgICAgICAgICAg
ICAgICAgbV9ub2RlID0gbV9ibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAgICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICBMb29raW5nIGF0IG5vZGUgIiwg
bV9ub2RlLCAiOlxuIik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9ncmFw
aC5wZXJmb3JtU3Vic3RpdHV0aW9uKG1fbm9kZSk7CkBAIC03MDcsNyArNzA5LDcgQEAgcHVibGlj
OgogICAgICAgICAvLyBhIGdsb2JhbCBzZWFyY2guCiAgICAgICAgIExhenlOb2RlIG1hdGNoID0g
bV9pbXB1cmVEYXRhLT5hdmFpbGFibGVBdFRhaWwuZ2V0KGxvY2F0aW9uKTsKICAgICAgICAgaWYg
KCEhbWF0Y2gpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERG
R0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAg
ICAgRm91bmQgbG9jYWwgbWF0Y2g6ICIsIG1hdGNoLCAiXG4iKTsKICAgICAgICAgICAgIHJldHVy
biBtYXRjaDsKICAgICAgICAgfQpAQCAtNzE1LDcgKzcxNyw3IEBAIHB1YmxpYzoKICAgICAgICAg
Ly8gSWYgaXQncyBub3QgYXZhaWxhYmxlIGF0IHRoaXMgcG9pbnQgaW4gdGhlIGJsb2NrLCBhbmQg
YXQgc29tZSBwcmlvciBwb2ludCBpbiB0aGUgYmxvY2sKICAgICAgICAgLy8gd2UgaGF2ZSBjbG9i
YmVyZWQgdGhpcyBoZWFwIGxvY2F0aW9uLCB0aGVuIHRoZXJlIGlzIG5vIHBvaW50IGluIGRvaW5n
IGEgZ2xvYmFsIHNlYXJjaC4KICAgICAgICAgaWYgKG1fd3JpdGVzU29GYXIub3ZlcmxhcHMobG9j
YXRpb24uaGVhcCgpKSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBp
ZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgICBOb3QgbG9va2luZyBnbG9iYWxseSBiZWNhdXNlIG9mIGxvY2FsIGNsb2JiZXI6ICIs
IG1fd3JpdGVzU29GYXIsICJcbiIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ICAgIH0KQEAgLTc3Miw3ICs3NzQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBCYXNpY0Jsb2Nr
KiBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAgICAgICAgICBzZWVuTGlzdC5hcHBl
bmQoYmxvY2spOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgICAgIGlmIChERkdDU0VQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAg
IGRhdGFMb2coIiAgICAgIFNlYXJjaGluZyBpbiBibG9jayAiLCAqYmxvY2ssICJcbiIpOwogICAg
ICAgICAgICAgSW1wdXJlQmxvY2tEYXRhJiBkYXRhID0gbV9pbXB1cmVEYXRhTWFwW2Jsb2NrXTsK
ICAgICAgICAgICAgIApAQCAtNzgwLDEyICs3ODIsMTIgQEAgcHVibGljOgogICAgICAgICAgICAg
Ly8gdGhleSBjYW1lICphZnRlciogb3VyIHBvc2l0aW9uIGluIHRoZSBibG9jay4gQ2xlYXJseSwg
d2hpbGUgb3VyIGJsb2NrIGRvbWluYXRlcwogICAgICAgICAgICAgLy8gaXRzZWxmLCB0aGUgdGhp
bmdzIGluIHRoZSBibG9jayBhZnRlciB1cyBkb24ndCBkb21pbmF0ZSB1cy4KICAgICAgICAgICAg
IGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+c3RyaWN0bHlEb21pbmF0ZXMoYmxvY2ssIG1f
YmxvY2spKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAg
aWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2coIiAgICAgICAgSXQgc3RyaWN0bHkgZG9taW5hdGVzLlxuIik7CiAgICAgICAgICAgICAg
ICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIGRhdGEuZGlkVmlzaXQpOwogICAgICAgICAg
ICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCAhbWF0Y2gpOwogICAgICAgICAgICAg
ICAgIG1hdGNoID0gZGF0YS5hdmFpbGFibGVBdFRhaWwuZ2V0KGxvY2F0aW9uKTsKLSAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBBdmFp
bGFiaWxpdHk6ICIsIG1hdGNoLCAiXG4iKTsKICAgICAgICAgICAgICAgICBpZiAoISFtYXRjaCkg
ewogICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBleGFtaW5lIHRoZSBwcmVkZWNlc3NvcnMg
b2YgYSBtYXRjaC4gQXQgdGhpcyBwb2ludCB3ZSBqdXN0IHdhbnQgdG8KQEAgLTc5NSwxMCArNzk3
LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR0NTRVBo
YXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBE
ZWFsaW5nIHdpdGggd3JpdGUgc2V0ICIsIGRhdGEud3JpdGVzLCAiXG4iKTsKICAgICAgICAgICAg
IGlmIChkYXRhLndyaXRlcy5vdmVybGFwcyhsb2NhdGlvbi5oZWFwKCkpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgQ2xvYmJl
cmVkLlxuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICB9
CkBAIC04MzAsMTYgKzgzMiwxNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBkZWYoSGVhcExv
Y2F0aW9uIGxvY2F0aW9uLCBMYXp5Tm9kZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgIGRhdGFMb2coIiAgICBHb3QgaGVhcCBsb2NhdGlvbiBkZWY6ICIsIGxvY2F0aW9uLCAiIC0+
ICIsIHZhbHVlLCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIExhenlOb2RlIG1hdGNoID0gZmlu
ZFJlcGxhY2VtZW50KGxvY2F0aW9uKTsKICAgICAgICAgCi0gICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRh
dGFMb2coIiAgICAgIEdvdCBtYXRjaDogIiwgbWF0Y2gsICJcbiIpOwogICAgICAgICAKICAgICAg
ICAgaWYgKCFtYXRjaCkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBp
ZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgICBBZGRpbmcgYXQtdGFpbCBtYXBwaW5nOiAiLCBsb2NhdGlvbiwgIiAtPiAiLCB2YWx1
ZSwgIlxuIik7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1faW1wdXJlRGF0YS0+YXZhaWxh
YmxlQXRUYWlsLmFkZChsb2NhdGlvbiwgdmFsdWUpOwogICAgICAgICAgICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsICFyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAppbmRleCBiMGM1NWJlOTlhMjA1MzE4ODFlMTQ2
MmJlODcxZGU4YTBkYjcxZjIwLi5iNDljYjRjZDk2MjM0YTkyNzFjY2FiODJjNGU2NzhiYTkzZDc4
MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0
cmFjdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VB
YnN0cmFjdFN0YXRlLmNwcApAQCAtMzcsNyArMzcsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAKK25hbWVzcGFjZSBERkdJblBsYWNlQWJzdHJhY3RTdGF0ZUludGVybmFs
IHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogSW5QbGFjZUFic3Ry
YWN0U3RhdGU6OkluUGxhY2VBYnN0cmFjdFN0YXRlKEdyYXBoJiBncmFwaCkKICAgICA6IG1fZ3Jh
cGgoZ3JhcGgpCkBAIC0yNzYsNyArMjc4LDcgQEAgdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6
bWVyZ2VTdGF0ZUF0VGFpbChBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiwgQWJzdHJhY3QKIAog
Ym9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNC
bG9jayogdG8pCiB7Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0luUGxhY2VBYnN0cmFj
dFN0YXRlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgIE1lcmdpbmcgZnJv
bSAiLCBwb2ludGVyRHVtcChmcm9tKSwgIiB0byAiLCBwb2ludGVyRHVtcCh0byksICJcbiIpOwog
ICAgIEFTU0VSVChmcm9tLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZBcmd1bWVudHMoKSA9PSB0
by0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCkpOwogICAgIEFTU0VSVChmcm9t
LT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKSA9PSB0by0+dmFyaWFibGVzQXRIZWFk
Lm51bWJlck9mTG9jYWxzKCkpOwpAQCAtMzA3LDcgKzMwOSw3IEBAIGJvb2wgSW5QbGFjZUFic3Ry
YWN0U3RhdGU6Om1lcmdlKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKQogCiAgICAg
ICAgIGZvciAoTm9kZUFic3RyYWN0VmFsdWVQYWlyJiBlbnRyeSA6IHRvLT5zc2EtPnZhbHVlc0F0
SGVhZCkgewogICAgICAgICAgICAgTm9kZUZsb3dQcm9qZWN0aW9uIG5vZGUgPSBlbnRyeS5ub2Rl
OwotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHSW5QbGFjZUFi
c3RyYWN0U3RhdGVJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgICBNZXJnaW5nIGZvciAiLCBub2RlLCAiOiBmcm9tICIsIGZvck5vZGUobm9kZSksICIgdG8g
IiwgZW50cnkudmFsdWUsICJcbiIpOwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgICAgIHVuc2ln
bmVkIHZhbHVlQ291bnRJbkZyb21CbG9jayA9IDA7CkBAIC0zMjIsNyArMzI0LDcgQEAgYm9vbCBJ
blBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayog
dG8pCiAKICAgICAgICAgICAgIGNoYW5nZWQgfD0gZW50cnkudmFsdWUubWVyZ2UoZm9yTm9kZShu
b2RlKSk7CiAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR0lu
UGxhY2VBYnN0cmFjdFN0YXRlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0
YUxvZygiICAgICAgICAgUmVzdWx0OiAiLCBlbnRyeS52YWx1ZSwgIlxuIik7CiAgICAgICAgIH0K
ICAgICAgICAgYnJlYWs7CkBAIC0zMzYsNyArMzM4LDcgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RT
dGF0ZTo6bWVyZ2UoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pCiAgICAgaWYgKCF0
by0+Y2ZhSGFzVmlzaXRlZCkKICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgCi0gICAgaWYg
KHZlcmJvc2UpCisgICAgaWYgKERGR0luUGxhY2VBYnN0cmFjdFN0YXRlSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgIGRhdGFMb2coIiAgICAgIFdpbGwgcmV2aXNpdDogIiwgY2hhbmdlZCwgIlxu
Iik7CiAgICAgdG8tPmNmYVNob3VsZFJldmlzaXQgfD0gY2hhbmdlZDsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5p
bmdQaGFzZS5jcHAKaW5kZXggNWQxY2JjNzZjNGVlMjUyYTMzNzI5ZmJlMTg1ZDk5MmIyYWZlZWNk
Yi4uOThlMGY2ZmRmMjg4MTQ3YTgxZTljYjdmOWYxYjg5OTY1NmZkOTFlMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5p
bmdQaGFzZS5jcHAKQEAgLTQxLDcgKzQxLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogCiBuYW1lc3BhY2UgewogCituYW1lc3BhY2UgREZHSW50ZWdlckNoZWNrQ29tYmluaW5n
UGhhc2VJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAK
IGVudW0gUmFuZ2VLaW5kIHsKICAgICBJbnZhbGlkUmFuZ2VLaW5kLApAQCAtMjAzLDEzICsyMDUs
MTMgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIGZvciAoYXV0byogbm9kZSA6ICpibG9j
aykgewogICAgICAgICAgICAgUmFuZ2VLZXlBbmRBZGRlbmQgZGF0YSA9IHJhbmdlS2V5QW5kQWRk
ZW5kKG5vZGUpOwotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZH
SW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJGb3IgIiwgbm9kZSwgIjogIiwgZGF0YSwgIlxuIik7CiAgICAgICAgICAg
ICBpZiAoIWRhdGEpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIFJhbmdlJiByYW5nZSA9IG1fbWFwW2RhdGEubV9rZXldOwotICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhh
c2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgUmFuZ2U6
ICIsIHJhbmdlLCAiXG4iKTsKICAgICAgICAgICAgIGlmIChyYW5nZS5tX2NvdW50KSB7CiAgICAg
ICAgICAgICAgICAgaWYgKGRhdGEubV9hZGRlbmQgPiByYW5nZS5tX21heEJvdW5kKSB7CkBAIC0y
MjYsNyArMjI4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByYW5nZS5tX21heE9yaWdp
biA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJh
bmdlLm1fY291bnQrKzsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYg
KERGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiICAgIE5ldyByYW5nZTogIiwgcmFuZ2UsICJcbiIpOwogICAgICAg
ICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJ
bnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAppbmRleCAwN2I2YWMzNDgy
ZmQwZTdmMzJlZjg0ZWY4MmIzMTE1MTI3N2JkMjEyLi40YTM4MzFlYjE2MGRjNDk3NjRlODczOTBl
ODhhZjVhYTk1ZTg2ZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcApAQCAtNDIsNyAr
NDIsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAK
LWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIERGR0ludGVnZXJSYW5nZU9w
dGltaXphdGlvblBoYXNlSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZh
bHNlOworfQogY29uc3QgdW5zaWduZWQgZ2l2ZVVwVGhyZXNob2xkID0gNTA7CiAKIGludDY0X3Qg
Y2xhbXBlZFN1bUltcGwoKSB7IHJldHVybiAwOyB9CkBAIC0xMDE5LDcgKzEwMjEsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKG1fZ3JhcGguYmxvY2soMCkp
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBp
ZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewog
ICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIGludGVnZXIgcmFuZ2Ugb3B0aW1pemF0
aW9uOlxuIik7CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQpAQCAtMTEx
MCw3ICsxMTEyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIG1fcmVsYXRpb25zaGlwcyA9
IG1fcmVsYXRpb25zaGlwc0F0SGVhZFtibG9ja107CiAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBmb3IgKGF1dG8qIG5vZGUgOiAqYmxvY2spIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6
YXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZygiQW5hbHlzaXM6IGF0ICIsIG5vZGUsICI6ICIsIGxpc3REdW1wKHNvcnRlZFJlbGF0aW9u
c2hpcHMoKSksICJcbiIpOwogICAgICAgICAgICAgICAgICAgICBleGVjdXRlTm9kZShub2RlKTsK
ICAgICAgICAgICAgICAgICB9CkBAIC0xMTk1LDExICsxMTk3LDExIEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAgICAgICAgIFJlbGF0aW9uc2hpcE1hcCBmb3JUcnVlID0gbV9yZWxhdGlvbnNo
aXBzOwogICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpb25zaGlwTWFwIGZvckZhbHNlID0g
bV9yZWxhdGlvbnNoaXBzOwogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdJ
bnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkRlYWxpbmcgd2l0aCB0cnVlOlxuIik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRSZWxhdGlvbnNoaXAoZm9yVHJ1ZSwgcmVsYXRpb25zaGlw
Rm9yVHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUmVsYXRpb25zaGlwIHJlbGF0
aW9uc2hpcEZvckZhbHNlID0gcmVsYXRpb25zaGlwRm9yVHJ1ZS5pbnZlcnNlKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiRGVhbGluZyB3
aXRoIGZhbHNlOlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVsYXRpb25z
aGlwKGZvckZhbHNlLCByZWxhdGlvbnNoaXBGb3JGYWxzZSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9CkBAIC0xMjIzLDcgKzEyMjUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX3JlbGF0
aW9uc2hpcHMgPSBtX3JlbGF0aW9uc2hpcHNBdEhlYWRbYmxvY2tdOwogICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBub2RlSW5kZXggPSAwOyBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyArK25v
ZGVJbmRleCkgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUlu
ZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAo
REZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiVHJhbnNmb3JtYXRpb246IGF0ICIsIG5vZGUsICI6ICIs
IGxpc3REdW1wKHNvcnRlZFJlbGF0aW9uc2hpcHMoKSksICJcbiIpOwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIC8vIFRoaXMgZW5kcyB1cCBiZWluZyBwcmV0dHkgYXdrd2FyZCB0
byB3cml0ZSBiZWNhdXNlIHdlIG5lZWQgdG8gZGVjaWRlIGlmIHdlCkBAIC0xMjg3LDE0ICsxMjg5
LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIG1heFZhbHVlID0gc3RkOjpt
aW4obWF4VmFsdWUsIHJlbGF0aW9uc2hpcC5tYXhWYWx1ZU9mTGVmdCgpKTsKICAgICAgICAgICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAg
ICAgICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBtaW5WYWx1ZSA9
ICIsIG1pblZhbHVlLCAiLCBtYXhWYWx1ZSA9ICIsIG1heFZhbHVlLCAiXG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmIChzdW1PdmVyZmxvd3M8aW50Piht
aW5WYWx1ZSwgbm9kZS0+Y2hpbGQyKCktPmFzSW50MzIoKSkgfHwKICAgICAgICAgICAgICAgICAg
ICAgICAgIHN1bU92ZXJmbG93czxpbnQ+KG1heFZhbHVlLCBub2RlLT5jaGlsZDIoKS0+YXNJbnQz
MigpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdl
T3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coIiAgICBJdCdzIGluIGJvdW5kcy5cbiIpOwogICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZU5vZGUoYmxvY2stPmF0KG5vZGVJbmRleCkp
OwpAQCAtMTU0OCw3ICsxNTUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCFyZWxhdGlvbnNo
aXApCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgU2V0dGluZzogIiwgcmVsYXRpb25zaGlw
LCAiICh0dGwgPSAiLCB0aW1lVG9MaXZlLCAiKVxuIik7CiAKICAgICAgICAgYXV0byByZXN1bHQg
PSByZWxhdGlvbnNoaXBNYXAuYWRkKApAQCAtMTYwMiw3ICsxNjA0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgaWYgKG90aGVyUmVsYXRpb25zaGlwLnZhZ3VlbmVzcygpIDwgcmVs
YXRpb25zaGlwLnZhZ3VlbmVzcygpCiAgICAgICAgICAgICAgICAgICAgICAgICAmJiBvdGhlclJl
bGF0aW9uc2hpcC5yaWdodCgpLT5pc0ludDMyQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgUmVsYXRpb25zaGlwIG5ld1JlbGF0aW9uc2hpcCA9IHJlbGF0aW9uc2hpcC5maWx0
ZXJDb25zdGFudChvdGhlclJlbGF0aW9uc2hpcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAodmVyYm9zZSAmJiBuZXdSZWxhdGlvbnNoaXAgIT0gcmVsYXRpb25zaGlwKQorICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJu
YWw6OnZlcmJvc2UgJiYgbmV3UmVsYXRpb25zaGlwICE9IHJlbGF0aW9uc2hpcCkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBSZWZpbmVkIHRvOiAiLCBuZXdSZWxh
dGlvbnNoaXAsICIgYmFzZWQgb24gIiwgb3RoZXJSZWxhdGlvbnNoaXAsICJcbiIpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwID0gbmV3UmVsYXRpb25zaGlwOwogICAgICAg
ICAgICAgICAgICAgICB9CkBAIC0xNjE2LDcgKzE2MTgsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICBpZiAob3RoZXJSZWxhdGlvbnNoaXAudmFndWVuZXNzKCkgPiByZWxhdGlvbnNo
aXAudmFndWVuZXNzKCkKICAgICAgICAgICAgICAgICAgICAgICAgICYmIG90aGVyUmVsYXRpb25z
aGlwLnJpZ2h0KCktPmlzSW50MzJDb25zdGFudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBSZWxhdGlvbnNoaXAgbmV3UmVsYXRpb25zaGlwID0gb3RoZXJSZWxhdGlvbnNoaXAuZmlsdGVy
Q29uc3RhbnQocmVsYXRpb25zaGlwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJi
b3NlICYmIG5ld1JlbGF0aW9uc2hpcCAhPSBvdGhlclJlbGF0aW9uc2hpcCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZUludGVybmFs
Ojp2ZXJib3NlICYmIG5ld1JlbGF0aW9uc2hpcCAhPSBvdGhlclJlbGF0aW9uc2hpcCkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBSZWZpbmVkICIsIG90aGVyUmVs
YXRpb25zaGlwLCAiIHRvOiAiLCBuZXdSZWxhdGlvbnNoaXAsICJcbiIpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgb3RoZXJSZWxhdGlvbnNoaXAgPSBuZXdSZWxhdGlvbnNoaXA7CiAgICAgICAg
ICAgICAgICAgICAgIH0KQEAgLTE2MzksNyArMTY0MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAvLyBAeCA9PSBAYyBhbmQgQHggIT0gQGQsIHdoZXJlIEBkID4gQGMsIHRoZW4gd2Ugd2FudCB0
byB0dXJuIEB4ICE9IEBkIGludG8gQHggPCBAZC4KICAgICAgICAgICAgIAogICAgICAgICAgICAg
aWYgKHRpbWVUb0xpdmUgJiYgb3RoZXJSZWxhdGlvbnNoaXAua2luZCgpID09IFJlbGF0aW9uc2hp
cDo6RXF1YWwpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAg
ICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgQ29uc2lkZXJpbmc6ICIsIG90aGVy
UmVsYXRpb25zaGlwLCAiXG4iKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAv
LyBXZSBoYXZlOgpAQCAtMTY3NSw3ICsxNjc3LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBib29s
IG1lcmdlVG8oUmVsYXRpb25zaGlwTWFwJiByZWxhdGlvbnNoaXBNYXAsIEJhc2ljQmxvY2sqIHRh
cmdldCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdJbnRl
Z2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAg
ICBkYXRhTG9nKCJNZXJnaW5nIHRvICIsIHBvaW50ZXJEdW1wKHRhcmdldCksICI6XG4iKTsKICAg
ICAgICAgICAgIGRhdGFMb2coIiAgICBJbmNvbWluZzogIiwgbGlzdER1bXAoc29ydGVkUmVsYXRp
b25zaGlwcyhyZWxhdGlvbnNoaXBNYXApKSwgIlxuIik7CiAgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgQXQgaGVhZDogIiwgbGlzdER1bXAoc29ydGVkUmVsYXRpb25zaGlwcyhtX3JlbGF0aW9uc2hp
cHNBdEhlYWRbdGFyZ2V0XSkpLCAiXG4iKTsKQEAgLTE2OTcsNyArMTY5OSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgZm9yIChSZWxhdGlvbnNoaXAgcmVsYXRpb25zaGlwIDogZW50cnku
dmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlbGF0aW9uc2hpcC5sZWZ0KCkg
PT0gZW50cnkua2V5KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTGl2ZShyZWxhdGlvbnNo
aXAucmlnaHQoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNl
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
ICBQcm9wYWdhdGluZyAiLCByZWxhdGlvbnNoaXAsICJcbiIpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgdmFsdWVzLmFwcGVuZChyZWxhdGlvbnNoaXApOwogICAgICAgICAgICAgICAgICAgICB9
CkBAIC0xNzM0LDEyICsxNzM2LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBWZWN0b3I8UmVs
YXRpb25zaGlwPiBtZXJnZWRSZWxhdGlvbnNoaXBzOwogICAgICAgICAgICAgZm9yIChSZWxhdGlv
bnNoaXAgdGFyZ2V0UmVsYXRpb25zaGlwIDogZW50cnkudmFsdWUpIHsKICAgICAgICAgICAgICAg
ICBmb3IgKFJlbGF0aW9uc2hpcCBzb3VyY2VSZWxhdGlvbnNoaXAgOiBpdGVyLT52YWx1ZSkgewot
ICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYg
KERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgIE1lcmdpbmcgIiwgdGFyZ2V0UmVsYXRpb25z
aGlwLCAiIGFuZCAiLCBzb3VyY2VSZWxhdGlvbnNoaXAsICI6XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgdGFyZ2V0UmVsYXRpb25zaGlwLm1lcmdlKAogICAgICAgICAgICAgICAgICAgICAgICAg
c291cmNlUmVsYXRpb25zaGlwLAogICAgICAgICAgICAgICAgICAgICAgICAgWyZdIChSZWxhdGlv
bnNoaXAgbmV3UmVsYXRpb25zaGlwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR0ludGVnZXJSYW5n
ZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2coIiAgICBHb3QgIiwgbmV3UmVsYXRpb25zaGlwLCAiXG4iKTsK
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdSZWxhdGlvbnNoaXAucmlnaHQo
KS0+aXNJbnQzMkNvbnN0YW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTW92SGludFJlbW92YWxQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR01vdkhpbnRSZW1vdmFsUGhhc2UuY3BwCmluZGV4IDlmMzQ0YjM3ZGNkODdmYzE0YzBh
MTJkZTRmMTA3MDhiNmQ3NDhmODYuLjFhZWQyYzE4NTZlMmJmNjJjZWY3YTNjNDZkYTI0MjE5MzJm
NWY3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTW92SGludFJl
bW92YWxQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNb3ZIaW50
UmVtb3ZhbFBoYXNlLmNwcApAQCAtNDIsNyArNDIsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNw
YWNlIERGR01vdkhpbnRSZW1vdmFsUGhhc2VJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2
ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIE1vdkhpbnRSZW1vdmFsUGhhc2UgOiBwdWJsaWMg
UGhhc2UgewogcHVibGljOgpAQCAtNTUsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9v
bCBydW4oKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR01v
dkhpbnRSZW1vdmFsUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxv
ZygiR3JhcGggYmVmb3JlIE1vdkhpbnQgcmVtb3ZhbDpcbiIpOwogICAgICAgICAgICAgbV9ncmFw
aC5kdW1wKCk7CiAgICAgICAgIH0KQEAgLTY5LDcgKzcxLDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICB2b2lkIGhhbmRsZUJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrKQogICAgIHsKLSAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdNb3ZIaW50UmVtb3ZhbFBoYXNlSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJIYW5kaW5nIGJsb2NrICIsIHBvaW50ZXJE
dW1wKGJsb2NrKSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICAvLyBBIE1vdkhpbnQgaXMgdW5u
ZWNlc3NhcnkgaWYgdGhlIGxvY2FsIGRpZXMgYmVmb3JlIGl0IGlzIHVzZWQuIFdlIGFuc3dlciB0
aGlzIHF1ZXN0aW9uIGJ5CkBAIC04Nyw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgbV9zdGF0ZS5vcGVyYW5kKHJlZykgPSBjdXJyZW50RXBvY2g7CiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHTW92SGludFJl
bW92YWxQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIExv
Y2FsczogIiwgbV9zdGF0ZSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICAvLyBBc3N1bWUgdGhh
dCBibG9ja3MgYWZ0ZXIgdXMgZXhpdC4KQEAgLTk4LDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IE1vdkhpbnQpIHsKICAgICAg
ICAgICAgICAgICBFcG9jaCBsb2NhbEVwb2NoID0gbV9zdGF0ZS5vcGVyYW5kKG5vZGUtPnVubGlu
a2VkTG9jYWwoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAg
ICAgaWYgKERGR01vdkhpbnRSZW1vdmFsUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiICAgIEF0ICIsIG5vZGUsICI6IGN1cnJlbnQgPSAiLCBjdXJy
ZW50RXBvY2gsICIsIGxvY2FsID0gIiwgbG9jYWxFcG9jaCwgIlxuIik7CiAgICAgICAgICAgICAg
ICAgaWYgKCFsb2NhbEVwb2NoIHx8IGxvY2FsRXBvY2ggPT0gY3VycmVudEVwb2NoKSB7CiAgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKFpvbWJpZUhpbnQpOwpA
QCAtMTIwLDcgKzEyMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
ISFtX3N0YXRlLm9wZXJhbmQocmVnKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR01vdkhpbnRSZW1vdmFs
UGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgS2lsbGVkIG9wZXJhbmQgYXQgIiwgbm9kZSwgIjogIiwgcmVnLCAiXG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUub3BlcmFuZChyZWcpID0gY3VycmVudEVwb2No
OwogICAgICAgICAgICAgICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCmluZGV4
IDdhOWM1MTU2N2IzNDdmZGQzYzhjM2NkOTFiZjA0Yjg5ZGY4MjI1MjguLjNmZGE3ZDQwYjA4NmJk
MTljM2MyOGIwYTYwZGFkMTU3NWVmNjBjMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcApA
QCAtNDgsNyArNDgsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVz
cGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIERGR09iamVjdEFsbG9j
YXRpb25TaW5raW5nUGhhc2VJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7Cit9CiAKIC8vIEluIG9yZGVyIHRvIHNpbmsgb2JqZWN0IGN5Y2xlcywgd2UgdXNlIGEg
cG9pbnRzLXRvIGFuYWx5c2lzIGNvdXBsZWQKIC8vIHdpdGggYW4gZXNjYXBlIGFuYWx5c2lzLiBU
aGlzIGFuYWx5c2lzIGlzIGFjdHVhbGx5IHNpbWlsYXIgdG8gYW4KQEAgLTcxNyw3ICs3MTksNyBA
QCBwdWJsaWM6CiAgICAgICAgIGlmICghcGVyZm9ybVNpbmtpbmcoKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHT2Jq
ZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAg
ICBkYXRhTG9nKCJHcmFwaCBhZnRlciBlbGltaW5hdGlvbjpcbiIpOwogICAgICAgICAgICAgbV9n
cmFwaC5kdW1wKCk7CiAgICAgICAgIH0KQEAgLTc0Miw3ICs3NDQsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgZ3JhcGhCZWZvcmVTaW5raW5nID0gb3V0LnRvQ1N0cmluZygpOwogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR09iamVjdEFsbG9jYXRp
b25TaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygi
R3JhcGggYmVmb3JlIGVsaW1pbmF0aW9uOlxuIik7CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAo
KTsKICAgICAgICAgfQpAQCAtNzUyLDcgKzc1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICgh
ZGV0ZXJtaW5lU2lua0NhbmRpZGF0ZXMoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNp
bmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBmb3IgKEJhc2ljQmxv
Y2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7CiAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiSGVhcCBhdCBoZWFkIG9mICIsICpibG9jaywgIjogXG4iLCBtX2hlYXBB
dEhlYWRbYmxvY2tdKTsKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJIZWFwIGF0IHRhaWwgb2Yg
IiwgKmJsb2NrLCAiOiBcbiIsIG1faGVhcEF0VGFpbFtibG9ja10pOwpAQCAtNzczLDcgKzc3NSw3
IEBAIHByaXZhdGU6CiAKICAgICAgICAgYm9vbCBjaGFuZ2VkOwogICAgICAgICBkbyB7Ci0gICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9u
U2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygi
RG9pbmcgaXRlcmF0aW9uIG9mIGVzY2FwZSBhbmFseXNpcy5cbiIpOwogICAgICAgICAgICAgY2hh
bmdlZCA9IGZhbHNlOwogCkBAIC0xMTk4LDcgKzEyMDAsNyBAQCBwcml2YXRlOgogICAgICAgICBp
ZiAobV9zaW5rQ2FuZGlkYXRlcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gaGFzVW5l
c2NhcGVkUmVhZHM7CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdPYmpl
Y3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBk
YXRhTG9nKCJDYW5kaWRhdGVzOiAiLCBsaXN0RHVtcChtX3NpbmtDYW5kaWRhdGVzKSwgIlxuIik7
CiAKICAgICAgICAgLy8gQ3JlYXRlIHRoZSBtYXRlcmlhbGl6YXRpb24gbm9kZXMKQEAgLTE3NjUs
NyArMTc2Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgaWYgKERGR09iamVjdEFs
bG9jYXRpb25TaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAg
IGRhdGFMb2coIkxvY2FsIG1hcHBpbmcgYXQgIiwgcG9pbnRlckR1bXAoYmxvY2spLCAiOiAiLCBt
YXBEdW1wKG1fbG9jYWxNYXBwaW5nKSwgIlxuIik7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygi
TG9jYWwgbWF0ZXJpYWxpemF0aW9ucyBhdCAiLCBwb2ludGVyRHVtcChibG9jayksICI6ICIsIG1h
cER1bXAobV9lc2NhcGVlVG9NYXRlcmlhbGl6YXRpb24pLCAiXG4iKTsKICAgICAgICAgICAgIH0K
QEAgLTE3ODEsNyArMTc4Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIG1fbG9j
YWxNYXBwaW5nLnNldChsb2NhdGlvbiwgbV9ib3R0b20pOwogCiAgICAgICAgICAgICAgICAgICAg
IGlmIChtX3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKG5vZGUpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdPYmpl
Y3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiRm9yIHNpbmsgY2FuZGlkYXRlICIsIG5vZGUsICIgZm91
bmQgbG9jYXRpb24gIiwgbG9jYXRpb24sICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
bV9pbnNlcnRpb25TZXQuaW5zZXJ0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJ
bmRleCArIDEsCkBAIC0xNzk2LDcgKzE3OTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICBwb3B1bGF0ZU1hdGVyaWFsaXphdGlvbihibG9jaywgbWF0ZXJpYWxpemF0aW9uLCBlc2Nh
cGVlKTsKICAgICAgICAgICAgICAgICAgICAgbV9lc2NhcGVlVG9NYXRlcmlhbGl6YXRpb24uc2V0
KGVzY2FwZWUsIG1hdGVyaWFsaXphdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0
aW9uU2V0Lmluc2VydChub2RlSW5kZXgsIG1hdGVyaWFsaXphdGlvbik7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHT2JqZWN0QWxs
b2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiTWF0ZXJpYWxpemluZyAiLCBlc2NhcGVlLCAiID0+ICIsIG1hdGVyaWFs
aXphdGlvbiwgIiBhdCAiLCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTE4
NTEsNyArMTg1Myw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGRvTG93
ZXIgPSB0cnVlOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ3Jl
YXRpbmcgaGludCB3aXRoIHZhbHVlICIsIG5vZGVWYWx1ZSwgIiBiZWZvcmUgIiwgbm9kZSwgIlxu
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQoCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ICsgMSwKQEAgLTE5OTQsNyArMTk5Niw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGluc2VydE9TUkhpbnRzRm9yVXBkYXRlKHVuc2lnbmVk
IG5vZGVJbmRleCwgTm9kZU9yaWdpbiBvcmlnaW4sIGJvb2wmIGNhbkV4aXQsIEF2YWlsYWJpbGl0
eU1hcCYgYXZhaWxhYmlsaXR5LCBOb2RlKiBlc2NhcGVlLCBOb2RlKiBtYXRlcmlhbGl6YXRpb24p
CiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHT2JqZWN0QWxs
b2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRh
TG9nKCJJbnNlcnRpbmcgT1NSIGhpbnRzIGF0ICIsIG9yaWdpbiwgIjpcbiIpOwogICAgICAgICAg
ICAgZGF0YUxvZygiICAgIEVzY2FwZWU6ICIsIGVzY2FwZWUsICJcbiIpOwogICAgICAgICAgICAg
ZGF0YUxvZygiICAgIE1hdGVyaWFsaXphdGlvbjogIiwgbWF0ZXJpYWxpemF0aW9uLCAiXG4iKTsK
QEAgLTIxNjcsNyArMjE2OSw3IEBAIHByaXZhdGU6CiAKICAgICBOb2RlKiBjcmVhdGVSZWNvdmVy
eShCYXNpY0Jsb2NrKiBibG9jaywgUHJvbW90ZWRIZWFwTG9jYXRpb24gbG9jYXRpb24sIE5vZGUq
IHdoZXJlLCBib29sJiBjYW5FeGl0KQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICBkYXRhTG9nKCJSZWNvdmVyaW5nICIsIGxvY2F0aW9uLCAiIGF0ICIsIHdo
ZXJlLCAiXG4iKTsKICAgICAgICAgQVNTRVJUKGxvY2F0aW9uLmJhc2UoKS0+aXNQaGFudG9tQWxs
b2NhdGlvbigpKTsKICAgICAgICAgTm9kZSogYmFzZSA9IGdldE1hdGVyaWFsaXphdGlvbihibG9j
aywgbG9jYXRpb24uYmFzZSgpKTsKQEAgLTIxNzUsNyArMjE3Nyw3IEBAIHByaXZhdGU6CiAKICAg
ICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSB3aGVyZS0+b3JpZ2luLndpdGhTZW1hbnRpYyhiYXNl
LT5vcmlnaW4uc2VtYW50aWMpOwogCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAo
REZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgZGF0YUxvZygiQmFzZSBpcyAiLCBiYXNlLCAiIGFuZCB2YWx1ZSBpcyAiLCB2YWx1ZSwg
IlxuIik7CiAKICAgICAgICAgaWYgKGJhc2UtPmlzUGhhbnRvbUFsbG9jYXRpb24oKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tSW5zZXJ0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tSW5zZXJ0aW9uUGhh
c2UuY3BwCmluZGV4IGRjYzFjOTc2OTg2ZmVkNmUzZTlkY2VkY2FmNWU5NDA1YjlkM2I4ZGEuLjNj
MDg4YTZhNGE1ZWU2NTA5MDYyMmQ2NjAzMmQ0ZjE3MTAyOTM3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUluc2VydGlvblBoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21JbnNlcnRpb25QaGFzZS5jcHAKQEAg
LTQzLDcgKzQzLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3Bh
Y2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBERkdQaGFudG9tSW5zZXJ0
aW9uUGhhc2VJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9
CiAKIGNsYXNzIFBoYW50b21JbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJsaWM6
CkBAIC02MCw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gU2V0TG9jYWxzIGV4ZWN1dGUs
IHdoaWNoIGlzIGluYWNjdXJhdGUuIFRoYXQgY2F1c2VzIHVzIHRvIGluc2VydCB0b28gZmV3IFBo
YW50b21zLgogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9y
ZWZDb3VudFN0YXRlID09IEV4YWN0UmVmQ291bnQpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZl
cmJvc2UpIHsKKyAgICAgICAgaWYgKERGR1BoYW50b21JbnNlcnRpb25QaGFzZUludGVybmFsOjp2
ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJHcmFwaCBiZWZvcmUgUGhhbnRvbSBpbnNl
cnRpb246XG4iKTsKICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwogICAgICAgICB9CkBAIC03
MCw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1f
Z3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkKICAgICAgICAgICAgIGhhbmRsZUJsb2NrKGJs
b2NrKTsKICAgICAgICAgCi0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdQ
aGFudG9tSW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0
YUxvZygiR3JhcGggYWZ0ZXIgUGhhbnRvbSBpbnNlcnRpb246XG4iKTsKICAgICAgICAgICAgIG1f
Z3JhcGguZHVtcCgpOwogICAgICAgICB9CkBAIC0xMDEsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgdW5zaWduZWQgbGFzdEV4aXRpbmdJbmRleCA9IDA7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgp
IHsKICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR1BoYW50b21JbnNlcnRpb25Q
aGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkNvbnNpZGVy
aW5nICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKG5v
ZGUtPm9wKCkpIHsKQEAgLTEzOSw3ICsxNDEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgVmly
dHVhbFJlZ2lzdGVyIGFscmVhZHlLaWxsZWQ7CiAKICAgICAgICAgICAgIGF1dG8gcHJvY2Vzc0tp
bGxlZE9wZXJhbmQgPSBbJl0gKFZpcnR1YWxSZWdpc3RlciByZWcpIHsKLSAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHUGhhbnRvbUluc2VydGlvblBo
YXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBL
aWxsZWQgb3BlcmFuZDogIiwgcmVnLCAiXG4iKTsKIAogICAgICAgICAgICAgICAgIC8vIEFscmVh
ZHkgaGFuZGxlZCBmcm9tIFNldExvY2FsLgpAQCAtMTU1LDcgKzE1Nyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgaWYgKGtpbGxlZE5vZGUtPmVwb2NoKCkgPT0gY3VycmVudEVwb2NoKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICBpZiAoREZHUGhhbnRvbUluc2Vy
dGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
ZygKICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgSW5zZXJ0aW5nIFBoYW50b20gb24gIiwg
a2lsbGVkTm9kZSwgIiBhZnRlciAiLAogICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2stPmF0
KGxhc3RFeGl0aW5nSW5kZXgpLCAiXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKaW5kZXggZDNkYTU1MjdkNjNiYzA3
Njk4MGVkNDA0ZDU3MzA2NWQ0YTg1MTZiYS4uMTRjZWQyYWE4ZDgyYzZlYmNiMzVlOTRjYTZmYTJl
MmEzZTMzODRmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRT
dGFja1NpbmtpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKQEAgLTQyLDcgKzQyLDkgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsK
K25hbWVzcGFjZSBERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsIHsKK3N0YXRpYyBjb25z
dCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogY2xhc3MgUHV0U3RhY2tTaW5raW5nUGhhc2Ug
OiBwdWJsaWMgUGhhc2UgewogcHVibGljOgpAQCAtNzEsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIC8vIHRoZSBzdGFjay4gSXQncyBub3QgY2xlYXIgdG8gbWUgaWYgdGhpcyBpcyBpbXBvcnRh
bnQgb3Igbm90LgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ1Mjk2CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBp
ZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAg
ICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIFB1dFN0YWNrIHNpbmtpbmc6XG4iKTsKICAgICAgICAg
ICAgIG1fZ3JhcGguZHVtcCgpOwogICAgICAgICB9CkBAIC0xMDUsNyArMTA3LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgIE9wZXJhbmRzPGJvb2w+IGxpdmUgPSBsaXZlQXRUYWlsW2Jsb2Nr
XTsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRleCA9IGJsb2NrLT5zaXpl
KCk7IG5vZGVJbmRleC0tOykgewogICAgICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxv
Y2stPmF0KG5vZGVJbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkxpdmUgYXQgIiwgbm9kZSwg
IjogIiwgbGl2ZSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICBWZWN0b3I8VmlydHVhbFJlZ2lzdGVyLCA0PiByZWFkczsKQEAgLTExMyw3ICsxMTUsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gZXNjYXBlSGFuZGxlciA9IFsmXSAo
VmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChv
cGVyYW5kLmlzSGVhZGVyKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgIiwgb3BlcmFuZCwgIiBpcyBsaXZl
IGF0ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVhZHMuYXBwZW5k
KG9wZXJhbmQpOwogICAgICAgICAgICAgICAgICAgICB9OwpAQCAtMjMwLDcgKzIzMiw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICBPcGVyYW5kczxGbHVzaEZvcm1hdD4gZGVmZXJyZWQgPSBk
ZWZlcnJlZEF0SGVhZFtibG9ja107CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
Zm9yIChOb2RlKiBub2RlIDogKmJsb2NrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkRlZmVycmVk
IGF0ICIsIG5vZGUsICI6IiwgZGVmZXJyZWQsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gR2V0U3RhY2spIHsKQEAgLTI3
Nyw3ICsyNzksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGF1dG8gZXNjYXBlSGFuZGxlciA9IFsmXSAo
VmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2luZ1Bo
YXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiRm9yICIsIG5vZGUsICIgZXNjYXBpbmcgIiwgb3BlcmFuZCwgIlxuIik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0hlYWRlcigpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTMwMywxMyArMzA1LDEzIEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJs
b2NrLT5zdWNjZXNzb3JzKCkpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IGRlZmVycmVkLnNpemUoKTsgaS0tOykgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhh
c2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KCJDb25zaWRlcmluZyAiLCBWaXJ0dWFsUmVnaXN0ZXIoZGVmZXJyZWQub3BlcmFuZEZvckluZGV4
KGkpKSwgIiBhdCAiLCBwb2ludGVyRHVtcChibG9jayksICItPiIsIHBvaW50ZXJEdW1wKHN1Y2Nl
c3NvciksICI6ICIsIGRlZmVycmVkW2ldLCAiIGFuZCAiLCBkZWZlcnJlZEF0SGVhZFtzdWNjZXNz
b3JdW2ldLCAiIG1lcmdlcyB0byAiKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJy
ZWRBdEhlYWRbc3VjY2Vzc29yXVtpXSA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVy
Z2UoZGVmZXJyZWRBdEhlYWRbc3VjY2Vzc29yXVtpXSwgZGVmZXJyZWRbaV0pOwogICAgICAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coZGVmZXJyZWRB
dEhlYWRbc3VjY2Vzc29yXVtpXSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9CkBAIC0zODcsNyArMzg5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
IGlmICghaXNDb25jcmV0ZShmb3JtYXQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlm
IChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCJBZGRpbmcgUGhpIGZvciAiLCBvcGVyYW5kLCAiIGF0ICIsIHBvaW50
ZXJEdW1wKGJsb2NrKSwgIlxuIik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
Tm9kZSogcGhpTm9kZSA9IG1fZ3JhcGguYWRkTm9kZShTcGVjSGVhcFRvcCwgUGhpLCBibG9jay0+
YXQoMCktPm9yaWdpbi53aXRoSW52YWxpZEV4aXQoKSk7CkBAIC00MTEsNyArNDEzLDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgIG1hcHBpbmcub3BlcmFuZChvcGVyYW5kKSA9IGRlZi0+dmFs
dWUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJNYXBwaW5nIGF0IHRvcCBvZiAiLCBwb2lu
dGVyRHVtcChibG9jayksICI6ICIsIG1hcHBpbmcsICJcbiIpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBmb3IgKFNTQUNhbGN1bGF0b3I6OkRlZiogcGhpRGVmIDogc3NhQ2FsY3VsYXRvci5w
aGlzRm9yQmxvY2soYmxvY2spKSB7CkBAIC00MTksNyArNDIxLDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnQoMCwgcGhpRGVm
LT52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9z
ZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgTWFwcGluZyAiLCBvcGVy
YW5kLCAiIHRvICIsIHBoaURlZi0+dmFsdWUoKSwgIlxuIik7CiAgICAgICAgICAgICAgICAgbWFw
cGluZy5vcGVyYW5kKG9wZXJhbmQpID0gcGhpRGVmLT52YWx1ZSgpOwogICAgICAgICAgICAgfQpA
QCAtNDI3LDcgKzQyOSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGRlZmVycmVkID0gZGVmZXJy
ZWRBdEhlYWRbYmxvY2tdOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXggPSAw
OyBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyArK25vZGVJbmRleCkgewogICAgICAgICAgICAg
ICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAgICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiRGVmZXJyZWQg
YXQgIiwgbm9kZSwgIjoiLCBkZWZlcnJlZCwgIlxuIik7CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CkBAIC00MzUsNyArNDM3LDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgICAgICBTdGFja0FjY2Vzc0RhdGEqIGRhdGEgPSBub2RlLT5z
dGFja0FjY2Vzc0RhdGEoKTsKICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9w
ZXJhbmQgPSBkYXRhLT5sb2NhbDsKICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQub3BlcmFu
ZChvcGVyYW5kKSA9IGRhdGEtPmZvcm1hdDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgTWFwcGlu
ZyAiLCBvcGVyYW5kLCAiIHRvICIsIG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgIiBhdCAiLCBub2Rl
LCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgbWFwcGluZy5vcGVyYW5kKG9wZXJhbmQpID0g
bm9kZS0+Y2hpbGQxKCkubm9kZSgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTQ3
MCw3ICs0NzIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ZGVmYXVsdDogewogICAgICAgICAgICAgICAgICAgICBhdXRvIGVzY2FwZUhhbmRsZXIgPSBbJl0g
KFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQ
aGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIkZvciAiLCBub2RlLCAiIGVzY2FwaW5nICIsIG9wZXJhbmQsICJcbiIpOwogCiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0hlYWRlcigpKQpAQCAtNDg0LDcgKzQ4Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHb3R0YSBpbnNlcnQgYSBQdXRTdGFjay4K
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiSW5zZXJ0aW5nIGEgUHV0U3RhY2sgZm9y
ICIsIG9wZXJhbmQsICIgYXQgIiwgbm9kZSwgIlxuIik7CiAKICAgICAgICAgICAgICAgICAgICAg
ICAgIE5vZGUqIGluY29taW5nID0gbWFwcGluZy5vcGVyYW5kKG9wZXJhbmQpOwpAQCAtNTIzLDcg
KzUyNSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgTm9kZSogcGhpTm9kZSA9IHBo
aURlZi0+dmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgU1NBQ2FsY3VsYXRvcjo6VmFyaWFi
bGUqIHZhcmlhYmxlID0gcGhpRGVmLT52YXJpYWJsZSgpOwogICAgICAgICAgICAgICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IGluZGV4VG9PcGVyYW5kW3ZhcmlhYmxlLT5pbmRleCgp
XTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAg
IGlmIChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiQ3JlYXRpbmcgVXBzaWxvbiBmb3IgIiwgb3BlcmFuZCwg
IiBhdCAiLCBwb2ludGVyRHVtcChibG9jayksICItPiIsIHBvaW50ZXJEdW1wKHN1Y2Nlc3NvckJs
b2NrKSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdCA9IGRl
ZmVycmVkQXRIZWFkW3N1Y2Nlc3NvckJsb2NrXS5vcGVyYW5kKG9wZXJhbmQpOwogICAgICAgICAg
ICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIGlzQ29uY3JldGUoZm9ybWF0
KSk7CkBAIC01NjgsNyArNTcwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHUHV0U3Rh
Y2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygi
R3JhcGggYWZ0ZXIgUHV0U3RhY2sgc2lua2luZzpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5k
dW1wKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggM2EyYTcxNzJhZDcz
ZDZhM2UwMTA3MjkyZTViOTcwNTQ5NDdmOGYxYS4uYjVlMmMzNTBiMTgxZjliMDYzOTMyMTVhNDJh
YWFkNzZiNjVlZDg0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTQzLDcgKzQzLDkgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZl
cmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUlu
dGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogZW51bSBj
bGFzcyBQaGFzZU1vZGUgewogICAgIC8vIERvZXMgb25seSBhIGxvY2FsIGFuYWx5c2lzIGZvciBz
dG9yZSBiYXJyaWVyIGluc2VydGlvbiBhbmQgYXNzdW1lcyB0aGF0IHBvaW50ZXJzIGxpdmUKQEAg
LTc1LDcgKzc3LDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAg
ICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJTdGFydGluZyBz
dG9yZSBiYXJyaWVyIGluc2VydGlvbjpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7
CiAgICAgICAgIH0KQEAgLTE2Nyw3ICsxNjksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGJv
b2wgaGFuZGxlQmxvY2soQmFzaWNCbG9jayogYmxvY2spCiAgICAgewotICAgICAgICBpZiAodmVy
Ym9zZSkgeworICAgICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJbnRlcm5h
bDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiRGVhbGluZyB3aXRoIGJsb2NrICIs
IHBvaW50ZXJEdW1wKGJsb2NrKSwgIlxuIik7CiAgICAgICAgICAgICBpZiAocmVhbGx5SW5zZXJ0
QmFycmllcnMoKSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgUmVhbGx5IGluc2VydGlu
ZyBiYXJyaWVycy5cbiIpOwpAQCAtMjA2LDcgKzIwOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGZv
ciAobV9ub2RlSW5kZXggPSAwOyBtX25vZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbV9ub2Rl
SW5kZXgpIHsKICAgICAgICAgICAgIG1fbm9kZSA9IGJsb2NrLT5hdChtX25vZGVJbmRleCk7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICBpZiAo
REZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAg
ICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICIgICAgIiwgbV9jdXJyZW50
RXBvY2gsICI6IExvb2tpbmcgYXQgbm9kZSAiLCBtX25vZGUsICIgd2l0aCBjaGlsZHJlbjogIik7
CiAgICAgICAgICAgICAgICAgQ29tbWFQcmludGVyIGNvbW1hOwpAQCAtMzQ4LDcgKzM1MCw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICBpZiAoREZHU3Rv
cmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAg
ICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICIgICAgIiwgbV9jdXJyZW50RXBvY2gs
ICI6IERvbmUgd2l0aCBub2RlICIsIG1fbm9kZSwgIiAoIiwgbV9ub2RlLT5lcG9jaCgpLAogICAg
ICAgICAgICAgICAgICAgICAiKSB3aXRoIGNoaWxkcmVuOiAiKTsKQEAgLTM4MCw3ICszODIsNyBA
QCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgY29uc2lkZXJCYXJyaWVyKEVkZ2UgYmFzZSwgRWRn
ZSBjaGlsZCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHU3Rv
cmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRh
dGFMb2coIiAgICAgICAgQ29uc2lkZXJpbmcgYWRkaW5nIGJhcnJpZXIgIiwgYmFzZSwgIiA9PiAi
LCBjaGlsZCwgIlxuIik7CiAgICAgICAgIAogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIGEgc3Rv
cmUgYmFycmllciBpZiB0aGUgY2hpbGQgaXMgZ3VhcmFudGVlZCB0byBub3QgYmUgYSBjZWxsLgpA
QCAtMzg5LDcgKzM5MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBEb24ndCB0cnkgdG9v
IGhhcmQgYmVjYXVzZSBpdCdzIHRvbyBleHBlbnNpdmUgdG8gcnVuIEFJLgogICAgICAgICAgICAg
aWYgKGNoaWxkLT5oYXNDb25zdGFudCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFjaGlsZC0+
YXNKU1ZhbHVlKCkuaXNDZWxsKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICAgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUlu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAg
ICAgICAgUmVqZWN0aW5nIGJlY2F1c2Ugb2YgY29uc3RhbnQgdHlwZS5cbiIpOwogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtNDAwLDcgKzQwMiw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50MzI6CiAgICAgICAg
ICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBOb2Rl
UmVzdWx0Qm9vbGVhbjoKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICAgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICAgICAgUmVq
ZWN0aW5nIGJlY2F1c2Ugb2YgcmVzdWx0IHR5cGUuXG4iKTsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CkBAIC00MTQsNyArNDE2LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIC8vIEdvIGludG8gcmFnZSBtb2RlIHRvIGVsaW1pbmF0ZSBhbnkg
Y2hhbmNlIG9mIGEgYmFycmllciB3aXRoIGEgbm9uLWNlbGwgY2hpbGQuIFdlCiAgICAgICAgICAg
ICAvLyBjYW4gYWZmb3JkIHRvIGtlZXAgYXJvdW5kIEFJIGluIEdsb2JhbCBtb2RlLgogICAgICAg
ICAgICAgaWYgKCFtX2ludGVycHJldGVyLT5uZWVkc1R5cGVDaGVjayhjaGlsZCwgflNwZWNDZWxs
KSkgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChE
RkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgICAgICBSZWplY3RpbmcgYmVjYXVzZSBvZiBBSSB0
eXBlLlxuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtNDI2
LDcgKzQyOCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBjb25zaWRlckJhcnJpZXIoRWRn
ZSBiYXNlKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0
YUxvZygiICAgICAgICBDb25zaWRlcmluZyBhZGRpbmcgYmFycmllciBvbiAiLCBiYXNlLCAiXG4i
KTsKICAgICAgICAgCiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgYSBzdG9yZSBiYXJyaWVyIGlm
IHRoZSBlcG9jaCBvZiB0aGUgYmFzZSBpcyBpZGVudGljYWwgdG8gdGhlIGN1cnJlbnQKQEAgLTQz
NCwxMiArNDM2LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGJlIGluIG5ld2dlbiwgb3Igd2Ug
anVzdCByYW4gYSBiYXJyaWVyIG9uIGl0IHNvIGl0J3MgZ3VhcmFudGVlZCB0byBiZSByZW1lbWJl
cmVkCiAgICAgICAgIC8vIGFscmVhZHkuCiAgICAgICAgIGlmIChiYXNlLT5lcG9jaCgpID09IG1f
Y3VycmVudEVwb2NoKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlm
IChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgICAgIFJlamVjdGluZyBiZWNhdXNlIGl0J3MgaW4g
dGhlIGN1cnJlbnQgZXBvY2guXG4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygi
ICAgICAgICAgICAgSW5zZXJ0aW5nIGJhcnJpZXIuXG4iKTsKICAgICAgICAgaW5zZXJ0QmFycmll
cihtX25vZGVJbmRleCArIDEsIGJhc2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCmluZGV4IGUzYzUy
YWNhOWRhMTNmY2Q4M2MxOGUwMWI4NTZmOGE0ODA5ODllOTcuLmU5NzM5NTc3N2ZhOWUwZDgyNjUz
ZGM4Nzc4ZDJhMDIwMGIwOTU5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcApAQCAtNDAsNyArNDAsOSBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVy
Ym9zZSA9IGZhbHNlOworbmFtZXNwYWNlIERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5h
bCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIFZhcmFy
Z3NGb3J3YXJkaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogcHVibGljOgpAQCAtNTMsNyArNTUs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIs
IG1fZ3JhcGgubV9mb3JtICE9IFNTQSk7CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkg
eworICAgICAgICBpZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3Nl
KSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJHcmFwaCBiZWZvcmUgdmFyYXJncyBmb3J3YXJkaW5n
OlxuIik7CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQpAQCAtODUsNyAr
ODcsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBXZSBleHBlY3QgY2FsbHMgaW50byB0aGlzIGZ1
bmN0aW9uIHRvIGJlIHJhcmUuIFNvLCB0aGlzIGlzIHdyaXR0ZW4gaW4gYSBzaW1wbGUgTyhuKSBt
YW5uZXIuCiAgICAgICAgIAogICAgICAgICBOb2RlKiBjYW5kaWRhdGUgPSBibG9jay0+YXQoY2Fu
ZGlkYXRlTm9kZUluZGV4KTsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdW
YXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRh
TG9nKCJIYW5kbGluZyBjYW5kaWRhdGUgIiwgY2FuZGlkYXRlLCAiXG4iKTsKICAgICAgICAgCiAg
ICAgICAgIC8vIEZpbmQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG5vZGUgaW4gdGhpcyBibG9jayB0
byB1c2UgdGhlIGNhbmRpZGF0ZSwgYW5kIGxvb2sgZm9yIGVzY2FwaW5nCkBAIC0xMjEsNyArMTIz
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIHNhd0VzY2FwZSA9IHRydWU7
CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIGlmIChzYXdFc2NhcGUp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAg
IGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRXNjYXBlIGF0ICIsIG5vZGUsICJcbiIpOwog
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtMTM4LDcg
KzE0MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKICAg
ICAgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzSW5saW5lZENhbGxlcjoKICAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCkgPT0gY2FuZGlkYXRlIHx8IG5vZGUtPmNoaWxkMigpID09
IGNhbmRpZGF0ZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBFc2NhcGUgYXQgIiwgbm9k
ZSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9
CkBAIC0xNDgsNyArMTUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGNhc2UgU2V0TG9jYWw6CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpID09
IGNhbmRpZGF0ZSAmJiBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+aXNMb2FkZWRGcm9tKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAg
IGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRXNjYXBlIGF0ICIsIG5vZGUsICJcbiIpOwog
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtMTU2LDcg
KzE1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLnVzZXMobm9kZSwgY2FuZGlkYXRlKSkgewot
ICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYg
KERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2coIiAgICBFc2NhcGUgYXQgIiwgbm9kZSwgIlxuIik7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBAIC0xNjUsNyArMTY3
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZvckFsbEtpbGxlZE9wZXJhbmRzKAogICAgICAg
ICAgICAgICAgIG1fZ3JhcGgsIG5vZGUsIGJsb2NrLT50cnlBdChub2RlSW5kZXggKyAxKSwKICAg
ICAgICAgICAgICAgICBbJl0gKFZpcnR1YWxSZWdpc3RlciByZWcpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdWYXJhcmdzRm9y
d2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgS2lsbGluZyAiLCByZWcsICIgd2hpbGUgd2UgYXJlIGludGVyZXN0ZWQgaW4g
IiwgbGlzdER1bXAocmVsZXZhbnRMb2NhbHMpLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlbGV2YW50TG9jYWxzLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVsZXZhbnRMb2NhbHNbaV0gPT0gcmVnKSB7CkBA
IC0xNzYsNyArMTc4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBp
ZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgZGF0YUxvZygiU2VsZWN0ZWQgbGFzdFVzZXJJbmRleCA9ICIsIGxhc3RVc2VySW5kZXgsICIs
ICIsIGJsb2NrLT5hdChsYXN0VXNlckluZGV4KSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICAv
LyBXZSdyZSBzdGlsbCBpbiBidXNpbmVzcy4gRGV0ZXJtaW5lIGlmIGJldHdlZW4gdGhlIGNhbmRp
ZGF0ZSBhbmQgdGhlIGxhc3QgdXNlciB0aGVyZSBpcyBhbnkKQEAgLTE5Myw3ICsxOTUsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgY2FzZSBab21iaWVIaW50OgogICAgICAgICAgICAgY2FzZSBL
aWxsU3RhY2s6CiAgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50c0ludm9sdmVTdGFja1Nsb3Qo
Y2FuZGlkYXRlLCBub2RlLT51bmxpbmtlZExvY2FsKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHVmFyYXJnc0ZvcndhcmRp
bmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiICAgIEludGVyZmVyZW5jZSBhdCAiLCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAgLTIwMSw3ICsyMDMsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBQdXRTdGFjazoKICAgICAgICAg
ICAgICAgICBpZiAoYXJndW1lbnRzSW52b2x2ZVN0YWNrU2xvdChjYW5kaWRhdGUsIG5vZGUtPnN0
YWNrQWNjZXNzRGF0YSgpLT5sb2NhbCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgSW50
ZXJmZXJlbmNlIGF0ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICAgICAgfQpAQCAtMjEwLDcgKzIxMiw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBjYXNlIFNldExvY2FsOgogICAgICAgICAgICAgY2FzZSBGbHVzaDoKICAgICAgICAgICAg
ICAgICBpZiAoYXJndW1lbnRzSW52b2x2ZVN0YWNrU2xvdChjYW5kaWRhdGUsIG5vZGUtPmxvY2Fs
KCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAg
ICAgICBpZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEludGVyZmVyZW5jZSBhdCAiLCBub2Rl
LCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0K
QEAgLTIzMiw3ICsyMzQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICB9LAogICAg
ICAgICAgICAgICAgICAgICBOb09wQ2xvYmJlcml6ZSgpKTsKICAgICAgICAgICAgICAgICBpZiAo
ZG9lc0ludGVyZmVyZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBJbnRlcmZlcmVuY2Ug
YXQgIiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgICAgICB9CkBAIC0yNDAsNyArMjQyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgLy8gV2UgY2FuIG1ha2UgdGhpcyB3b3JrLgotICAgICAgICBpZiAodmVyYm9z
ZSkKKyAgICAgICAgaWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBXaWxsIGRvIGZvcndhcmRpbmchXG4iKTsKICAg
ICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAKaW5kZXggOTAyMTFmZDk0YWM2MTVjNjVjNTFkMzRj
N2Q1ODhmNGQ5M2IxMjljNy4uOWI5OTE0YWU4Yjg1NGQwMzUyOGE2Yjg4N2JhMjg4OGU3OWVkZGRh
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwLmNwcApA
QCAtMzgsOCArMzgsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKLXVz
aW5nIG5hbWVzcGFjZSBCMzsKLQogQWJzdHJhY3RIZWFwOjpBYnN0cmFjdEhlYXAoQWJzdHJhY3RI
ZWFwKiBwYXJlbnQsIGNvbnN0IGNoYXIqIGhlYXBOYW1lLCBwdHJkaWZmX3Qgb2Zmc2V0KQogICAg
IDogbV9vZmZzZXQob2Zmc2V0KQogICAgICwgbV9oZWFwTmFtZShoZWFwTmFtZSkKQEAgLTc3LDcg
Kzc1LDcgQEAgdm9pZCBBYnN0cmFjdEhlYXA6OmNvbXB1dGUodW5zaWduZWQgYmVnaW4pCiAKICAg
ICBpZiAobV9jaGlsZHJlbi5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gTXVzdCBzcGVjaWFsLWNh
c2UgbGVhdmVzIHNvIHRoYXQgdGhleSB1c2UganVzdCBvbmUgc2xvdCBvbiB0aGUgbnVtYmVyIGxp
bmUuCi0gICAgICAgIG1fcmFuZ2UgPSBIZWFwUmFuZ2UoYmVnaW4pOworICAgICAgICBtX3Jhbmdl
ID0gQjM6OkhlYXBSYW5nZShiZWdpbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg3
LDcgKzg1LDcgQEAgdm9pZCBBYnN0cmFjdEhlYXA6OmNvbXB1dGUodW5zaWduZWQgYmVnaW4pCiAg
ICAgICAgIGN1cnJlbnQgPSBjaGlsZC0+cmFuZ2UoKS5lbmQoKTsKICAgICB9CiAKLSAgICBtX3Jh
bmdlID0gSGVhcFJhbmdlKGJlZ2luLCBjdXJyZW50KTsKKyAgICBtX3JhbmdlID0gQjM6OkhlYXBS
YW5nZShiZWdpbiwgY3VycmVudCk7CiB9CiAKIHZvaWQgQWJzdHJhY3RIZWFwOjpzaGFsbG93RHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKaW5kZXggNTkwM2E4ZTUzZWQz
ZDU3NTBlMWM1Y2RmMDExOGQyOTIyYzVjY2Y5Mi4uNDBjYzhiODE0YzMwZTQxYzUyY2JjNWM5N2Ji
MTg4ZTQ2MjBjM2E0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCkBAIC00Nyw4ICs0Nyw2IEBACiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAotdXNpbmcgbmFtZXNwYWNlIEIzOwotCiBBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KCkKICAgICA6IHJvb3Qo
bnVsbHB0ciwgImpzY1Jvb3QiKQogCkBAIC05Miw0OCArOTAsNDkgQEAgQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeTo6fkFic3RyYWN0SGVhcFJlcG9zaXRvcnkoKQogewogfQogCi12b2lkIEFic3RyYWN0
SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlTWVtb3J5KGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwg
VmFsdWUqIHZhbHVlKQordm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZU1lbW9y
eShjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIEIzOjpWYWx1ZSogdmFsdWUpCiB7CiAgICAgbV9o
ZWFwRm9yTWVtb3J5LmFwcGVuZChIZWFwRm9yVmFsdWUoaGVhcCwgdmFsdWUpKTsKIH0KIAotdm9p
ZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUNDYWxsUmVhZChjb25zdCBBYnN0cmFj
dEhlYXAqIGhlYXAsIFZhbHVlKiB2YWx1ZSkKK3ZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6
ZGVjb3JhdGVDQ2FsbFJlYWQoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBCMzo6VmFsdWUqIHZh
bHVlKQogewogICAgIG1faGVhcEZvckNDYWxsUmVhZC5hcHBlbmQoSGVhcEZvclZhbHVlKGhlYXAs
IHZhbHVlKSk7CiB9CiAKLXZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVDQ2Fs
bFdyaXRlKGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwgVmFsdWUqIHZhbHVlKQordm9pZCBBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUNDYWxsV3JpdGUoY29uc3QgQWJzdHJhY3RIZWFw
KiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQogewogICAgIG1faGVhcEZvckNDYWxsV3JpdGUuYXBw
ZW5kKEhlYXBGb3JWYWx1ZShoZWFwLCB2YWx1ZSkpOwogfQogCi12b2lkIEFic3RyYWN0SGVhcFJl
cG9zaXRvcnk6OmRlY29yYXRlUGF0Y2hwb2ludFJlYWQoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFw
LCBWYWx1ZSogdmFsdWUpCit2b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlUGF0
Y2hwb2ludFJlYWQoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQog
ewogICAgIG1faGVhcEZvclBhdGNocG9pbnRSZWFkLmFwcGVuZChIZWFwRm9yVmFsdWUoaGVhcCwg
dmFsdWUpKTsKIH0KIAotdm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZVBhdGNo
cG9pbnRXcml0ZShjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIFZhbHVlKiB2YWx1ZSkKK3ZvaWQg
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVQYXRjaHBvaW50V3JpdGUoY29uc3QgQWJz
dHJhY3RIZWFwKiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQogewogICAgIG1faGVhcEZvclBhdGNo
cG9pbnRXcml0ZS5hcHBlbmQoSGVhcEZvclZhbHVlKGhlYXAsIHZhbHVlKSk7CiB9CiAKLXZvaWQg
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5jZVJlYWQoY29uc3QgQWJzdHJhY3RI
ZWFwKiBoZWFwLCBWYWx1ZSogdmFsdWUpCit2b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRl
Y29yYXRlRmVuY2VSZWFkKGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwgQjM6OlZhbHVlKiB2YWx1
ZSkKIHsKICAgICBtX2hlYXBGb3JGZW5jZVJlYWQuYXBwZW5kKEhlYXBGb3JWYWx1ZShoZWFwLCB2
YWx1ZSkpOwogfQogCi12b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlRmVuY2VX
cml0ZShjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIFZhbHVlKiB2YWx1ZSkKK3ZvaWQgQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5jZVdyaXRlKGNvbnN0IEFic3RyYWN0SGVhcCog
aGVhcCwgQjM6OlZhbHVlKiB2YWx1ZSkKIHsKICAgICBtX2hlYXBGb3JGZW5jZVdyaXRlLmFwcGVu
ZChIZWFwRm9yVmFsdWUoaGVhcCwgdmFsdWUpKTsKIH0KIAotdm9pZCBBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5OjpkZWNvcmF0ZUZlbmNlZEFjY2Vzcyhjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIFZh
bHVlKiB2YWx1ZSkKK3ZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5jZWRB
Y2Nlc3MoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQogewogICAg
IG1faGVhcEZvckZlbmNlZEFjY2Vzcy5hcHBlbmQoSGVhcEZvclZhbHVlKGhlYXAsIHZhbHVlKSk7
CiB9CiAKIHZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6Y29tcHV0ZVJhbmdlc0FuZERlY29y
YXRlSW5zdHJ1Y3Rpb25zKCkKIHsKKyAgICB1c2luZyBuYW1lc3BhY2UgQjM7CiAgICAgcm9vdC5j
b21wdXRlKCk7CiAKICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAKaW5kZXggMzZkYzQ5
Y2VjMTBjNjU5NzljZjYwYTMzMmU5ZTAwNGI0ZWM2MTBlZC4uYjI4ZGQ5YTVjMzgyMzlkN2Y4N2Fk
MjM2NGU3NGI5NDUxMjQxZWYzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExKSVRGaW5hbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
SklURmluYWxpemVyLmNwcApAQCAtMzcsOSArMzcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEZUTCB7CiAKLXVzaW5nIG5hbWVzcGFjZSBERkc7Ci0KLUpJVEZpbmFsaXplcjo6SklU
RmluYWxpemVyKFBsYW4mIHBsYW4pCitKSVRGaW5hbGl6ZXI6OkpJVEZpbmFsaXplcihERkc6OlBs
YW4mIHBsYW4pCiAgICAgOiBGaW5hbGl6ZXIocGxhbikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExpbmsuY3BwCmluZGV4IDY3NmIzOTA5Yzg3ZDBkYTkwYzVkOGRiNjYwOGFkMjE0YzU5
ODk2NjkuLjdjMDE4MWQ4ZDFlNGI5MzhkZWU3MGFiOTFkNjYyZTA4NGMwMjkyYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcApAQCAtNDEsMTAgKzQxLDkgQEAKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCi11c2luZyBuYW1lc3BhY2UgREZHOwotCiB2b2lk
IGxpbmsoU3RhdGUmIHN0YXRlKQogeworICAgIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAgICAgR3Jh
cGgmIGdyYXBoID0gc3RhdGUuZ3JhcGg7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBncmFw
aC5tX2NvZGVCbG9jazsKICAgICBWTSYgdm0gPSBncmFwaC5tX3ZtOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKaW5kZXggNDE3MTc4ZDY1ZWZkMGU4NDgzNzlk
NzRlNmU2MjYzMDY1MDYxYzIwMi4uOGJjYTU2YzA2NTk3ZTc4NDY1YzI5MjY4NGYzNmI3MmM5YjE2
NzhmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCkBA
IC00MiwxMiArNDIsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCi11
c2luZyBuYW1lc3BhY2UgSlNDOjpERkc7Ci0KIGV4dGVybiAiQyIgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5PU1IoCiAgICAgRXhlY1N0YXRlKiBleGVjLCBFeGl0
VGltZU9iamVjdE1hdGVyaWFsaXphdGlvbiogbWF0ZXJpYWxpemF0aW9uLAogICAgIEVuY29kZWRK
U1ZhbHVlKiBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlKiB2YWx1ZXMpCiB7CisgICAgdXNp
bmcgbmFtZXNwYWNlIERGRzsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAKQEAgLTEyMCw2ICsxMTksNyBAQCBl
eHRlcm4gIkMiIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdEluT1NS
KAogZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJpYWxpemVP
YmplY3RJbk9TUigKICAgICBFeGVjU3RhdGUqIGV4ZWMsIEV4aXRUaW1lT2JqZWN0TWF0ZXJpYWxp
emF0aW9uKiBtYXRlcmlhbGl6YXRpb24sIEVuY29kZWRKU1ZhbHVlKiB2YWx1ZXMpCiB7CisgICAg
dXNpbmcgbmFtZXNwYWNlIERGRzsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogCiAgICAgLy8g
V2UgY2Fubm90IEdDLiBXZSd2ZSBnb3QgcG9pbnRlcnMgaW4gZXZpbCBwbGFjZXMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHAKaW5k
ZXggMDFjMDZlNzVjNWIwMGVkMTA2OGU3YjRjZjFhNzI4YzU5NGNmOTFlMi4uYzVhNmM2Njk3NTky
Zjc5NDBlZmZhNTU2MTllZjMzYTBkNTAxZDZlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcApAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgIk1hcmtpbmdDb25zdHJhaW50U2V0LmgiCiAKICNpbmNsdWRlICJPcHRpb25zLmgi
CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1RpbWVXaXRoRHluYW1p
Y0Nsb2NrVHlwZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEwNiwxNSArMTA3LDE1IEBAIHZv
aWQgTWFya2luZ0NvbnN0cmFpbnRTZXQ6OmRpZFN0YXJ0TWFya2luZygpCiAgICAgbV9pdGVyYXRp
b24gPSAxOwogfQogCi12b2lkIE1hcmtpbmdDb25zdHJhaW50U2V0OjphZGQoQ1N0cmluZyBhYmJy
ZXZpYXRlZE5hbWUsIENTdHJpbmcgbmFtZSwgRnVuY3Rpb248dm9pZChTbG90VmlzaXRvciYsIGNv
bnN0IFZpc2l0aW5nVGltZW91dCYpPiBmdW5jdGlvbiwgQ29uc3RyYWludFZvbGF0aWxpdHkgdm9s
YXRpbGl0eSkKK3ZvaWQgTWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZChDU3RyaW5nIGFiYnJldmlh
dGVkTmFtZSwgQ1N0cmluZyBuYW1lLCA6OkZ1bmN0aW9uPHZvaWQoU2xvdFZpc2l0b3ImLCBjb25z
dCBWaXNpdGluZ1RpbWVvdXQmKT4gZnVuY3Rpb24sIENvbnN0cmFpbnRWb2xhdGlsaXR5IHZvbGF0
aWxpdHkpCiB7CiAgICAgYWRkKHN0ZDo6bWFrZV91bmlxdWU8TWFya2luZ0NvbnN0cmFpbnQ+KFdU
Rk1vdmUoYWJicmV2aWF0ZWROYW1lKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShmdW5jdGlvbiks
IHZvbGF0aWxpdHkpKTsKIH0KIAogdm9pZCBNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKAogICAg
IENTdHJpbmcgYWJicmV2aWF0ZWROYW1lLCBDU3RyaW5nIG5hbWUsCi0gICAgRnVuY3Rpb248dm9p
ZChTbG90VmlzaXRvciYsIGNvbnN0IFZpc2l0aW5nVGltZW91dCYpPiBleGVjdXRlRnVuY3Rpb24s
Ci0gICAgRnVuY3Rpb248ZG91YmxlKFNsb3RWaXNpdG9yJik+IHF1aWNrV29ya0VzdGltYXRlRnVu
Y3Rpb24sCisgICAgOjpGdW5jdGlvbjx2b2lkKFNsb3RWaXNpdG9yJiwgY29uc3QgVmlzaXRpbmdU
aW1lb3V0Jik+IGV4ZWN1dGVGdW5jdGlvbiwKKyAgICA6OkZ1bmN0aW9uPGRvdWJsZShTbG90Vmlz
aXRvciYpPiBxdWlja1dvcmtFc3RpbWF0ZUZ1bmN0aW9uLAogICAgIENvbnN0cmFpbnRWb2xhdGls
aXR5IHZvbGF0aWxpdHkpCiB7CiAgICAgYWRkKHN0ZDo6bWFrZV91bmlxdWU8TWFya2luZ0NvbnN0
cmFpbnQ+KFdURk1vdmUoYWJicmV2aWF0ZWROYW1lKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShl
eGVjdXRlRnVuY3Rpb24pLCBXVEZNb3ZlKHF1aWNrV29ya0VzdGltYXRlRnVuY3Rpb24pLCB2b2xh
dGlsaXR5KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
U2hhZG93Q2hpY2tlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hh
ZG93Q2hpY2tlbi5jcHAKaW5kZXggYWU2ZTE4MzVlMmUyZTdhNDMwMGY3ZGZhMGExMWIyODZkM2Yx
ZmMzMS4uZjcwNjY2ZDg5NzBmNmM3MzMxNTkwNzgxNzdkM2VhM2M1NTgwYWI3MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2VuLmNwcApA
QCAtMzMsNyArMzMsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFtZXNwYWNlIFNoYWRvd0No
aWNrZW5JbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAK
IHZvaWQgU2hhZG93Q2hpY2tlbjo6UGFja2V0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
CiB7CkBAIC04Niw3ICs4OCw3IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6bG9nKFZNJiB2bSwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBQYWNrZXQmIHBhY2tldCkKIAogdm9pZCBTaGFkb3dDaGlja2Vu
Ojp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgaWYgKHZlcmJvc2UpIHsK
KyAgICBpZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFM
b2coIlJ1bm5pbmcgdXBkYXRlIG9uOiAiLCAqdGhpcywgIlxuIik7CiAgICAgICAgIFdURlJlcG9y
dEJhY2t0cmFjZSgpOwogICAgIH0KQEAgLTExMiwxMyArMTE0LDEzIEBAIHZvaWQgU2hhZG93Q2hp
Y2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB9CiAgICAgfQog
ICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkhpZ2hlc3QgcG9pbnQgc2luY2UgbGFzdCB0aW1lOiAi
LCBSYXdQb2ludGVyKGhpZ2hlc3RQb2ludFNpbmNlTGFzdFRpbWUpLCAiXG4iKTsKICAgICAKICAg
ICB3aGlsZSAoIW1fc3RhY2suaXNFbXB0eSgpICYmIChtX3N0YWNrLmxhc3QoKS5mcmFtZSA8IGhp
Z2hlc3RQb2ludFNpbmNlTGFzdFRpbWUgfHwgbV9zdGFjay5sYXN0KCkuaXNUYWlsRGVsZXRlZCkp
CiAgICAgICAgIG1fc3RhY2sucmVtb3ZlTGFzdCgpOwogICAgIAotICAgIGlmICh2ZXJib3NlKQor
ICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2co
IiAgICBSZXZpc2VkIHN0YWNrOiAiLCBsaXN0RHVtcChtX3N0YWNrKSwgIlxuIik7CiAgICAgCiAg
ICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSB0b3Agb2Ygc3RhY2sgaXMgbm93IHRhaWwtZGVs
ZXRlZC4gVGhlIHN0YWNrIG5vIGxvbmdlciBjb250YWlucyBhbnkKQEAgLTE0MSw3ICsxNDMsNyBA
QCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKICAg
ICB9CiAKICAgICAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoU2hhZG93Q2hpY2tlbkludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCIgICAgUmV2aXNlZCBzdGFjazogIiwgbGlz
dER1bXAobV9zdGFjayksICJcbiIpOwogICAgIAogICAgIC8vIFRoZSBsb2ctYmFzZWQgYW5kIGV4
ZWMtYmFzZWQgcnVsZXMgcmVxdWlyZSB0aGF0IFNoYWRvd0NoaWNrZW4gd2FzIGVuYWJsZWQuIFRo
ZSBwb2ludCBvZgpAQCAtMTY5LDcgKzE3MSw3IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRl
KFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgfSk7CiAgICAgICAgIHN0YWNr
UmlnaHROb3cucmV2ZXJzZSgpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgU3RhY2sgcmlnaHQgbm93OiAiLCBsaXN0RHVtcChzdGFja1JpZ2h0Tm93KSwgIlxu
Iik7CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCBzaGFkb3dJbmRleCA9IDA7CkBAIC0xOTQs
NyArMTk2LDcgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgICAgIH0KICAgICAgICAgbV9zdGFjay5yZXNpemUoc2hhZG93SW5kZXgpOwog
ICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChTaGFkb3dDaGlja2Vu
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgUmV2aXNlZCBzdGFj
azogIiwgbGlzdER1bXAobV9zdGFjayksICJcbiIpOwogICAgIH0KICAgICAKQEAgLTIwOCwxNyAr
MjEwLDE3IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChT
aGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgICBIaWdo
ZXN0IHBvaW50IHNpbmNlIGxhc3QgdGltZTogIiwgUmF3UG9pbnRlcihoaWdoZXN0UG9pbnRTaW5j
ZUxhc3RUaW1lKSwgIlxuIik7CiAgICAgCiAgICAgLy8gU2V0IGV2ZXJ5dGhpbmcgdXAgc28gdGhh
dCB3ZSBrbm93IHdoZXJlIHRoZSB0b3AgZnJhbWUgaXMgaW4gdGhlIGxvZy4KICAgICB1bnNpZ25l
ZCBpbmRleEluTG9nID0gbG9nQ3Vyc29ySW5kZXg7CiAgICAgCiAgICAgYXV0byBhZHZhbmNlSW5k
ZXhJbkxvZ1RvID0gWyZdIChDYWxsRnJhbWUqIGZyYW1lLCBKU09iamVjdCogY2FsbGVlLCBDYWxs
RnJhbWUqIGNhbGxlckZyYW1lKSAtPiBib29sIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgQWR2YW5jaW5nIHRvIGZyYW1lID0gIiwgUmF3UG9pbnRlcihmcmFtZSksICIgZnJv
bSBpbmRleEluTG9nID0gIiwgaW5kZXhJbkxvZywgIlxuIik7CiAgICAgICAgIGlmIChpbmRleElu
TG9nID4gbG9nQ3Vyc29ySW5kZXgpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCIgICAgQmFpbGluZy5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CkBAIC0yNDQsNyArMjQ2LDcgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUo
Vk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBpZiAocGFja2V0LmlzUHJvbG9n
dWUoKSAmJiBwYWNrZXQuZnJhbWUgPT0gZnJhbWUKICAgICAgICAgICAgICAgICAmJiAoIWNhbGxl
ZSB8fCBwYWNrZXQuY2FsbGVlID09IGNhbGxlZSkKICAgICAgICAgICAgICAgICAmJiAoIWNhbGxl
ckZyYW1lIHx8IHBhY2tldC5jYWxsZXJGcmFtZSA9PSBjYWxsZXJGcmFtZSkpIHsKLSAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoU2hhZG93Q2hpY2tlbklu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRm91bmQg
YXQgaW5kZXhJbkxvZyA9ICIsIGluZGV4SW5Mb2csICJcbiIpOwogICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMjY2LDcgKzI2OCw3IEBAIHZvaWQgU2hhZG93
Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAvLyBJdCBz
ZWVtcyBsaWtlIHRoZSBsYXR0ZXIgb3B0aW9uIGlzIGxlc3MgaGFybWZ1bCwgc28gdGhhdCdzIHdo
YXQgd2UgZG8uCiAgICAgICAgIGluZGV4SW5Mb2cgPSBvbGRJbmRleEluTG9nOwogICAgICAgICAK
LSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRGlkbid0IGZpbmQgaXQuXG4iKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH07CkBAIC0yODYsMTAgKzI4OCwxMCBAQCB2b2lk
IFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSB2aXNpdG9yLT5jYWxs
RnJhbWUoKTsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKFNoYWRv
d0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
RXhhbWluaW5nICIsIFJhd1BvaW50ZXIoY2FsbEZyYW1lKSwgIlxuIik7CiAgICAgICAgICAgICBp
ZiAoY2FsbEZyYW1lID09IGhpZ2hlc3RQb2ludFNpbmNlTGFzdFRpbWUpIHsKLSAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoU2hhZG93Q2hpY2tlbkludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGluZyBh
dCAiLCBSYXdQb2ludGVyKGNhbGxGcmFtZSksICIgYmVjYXVzZSBpdCdzIHRoZSBoaWdoZXN0IHBv
aW50IHNpbmNlIGxhc3QgdGltZS5cbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBTdGFja1Zp
c2l0b3I6OkRvbmU7CiAgICAgICAgICAgICB9CkBAIC0zMTIsNyArMzE0LDcgQEAgdm9pZCBTaGFk
b3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAg
ICAgLy8gVGhpcyBjb25kaXRpb24gcHJvdGVjdHMgdXMgZnJvbSB0aGUgY2FzZSB3aGVyZSBhZHZh
bmNlSW5kZXhJbkxvZ1RvIGRpZG4ndCBmaW5kCiAgICAgICAgICAgICAgICAgLy8gYW55dGhpbmcu
CiAgICAgICAgICAgICAgICAgJiYgbV9sb2dbaW5kZXhJbkxvZ10uZnJhbWUgPT0gdG9QdXNoLmxh
c3QoKS5mcmFtZSkgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAg
ICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coIiAgICBHb2luZyB0byBsb29wIHRocm91Z2ggdG8gZmluZCB0YWlsIGRlbGV0
ZWQgZnJhbWVzIHdpdGggaW5kZXhJbkxvZyA9ICIsIGluZGV4SW5Mb2csICIgYW5kIHB1c2gtc3Rh
Y2sgdG9wID0gIiwgdG9QdXNoLmxhc3QoKSwgIlxuIik7CiAgICAgICAgICAgICAgICAgZm9yICg7
OykgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9sb2dbaW5kZXhJbkxvZ10uZnJhbWUg
PT0gdG9QdXNoLmxhc3QoKS5mcmFtZSk7CkBAIC0zMzcsNyArMzM5LDcgQEAgdm9pZCBTaGFkb3dD
aGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAgICAg
ICAgIGluZGV4SW5Mb2ctLTsgLy8gU2tpcCBvdmVyIHRoZSB0YWlsIHBhY2tldC4KICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmICghYWR2YW5jZUluZGV4SW5Mb2dU
byh0YWlsUGFja2V0LmZyYW1lLCBudWxscHRyLCBudWxscHRyKSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoU2hhZG93
Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2coIkNhbid0IGZpbmQgcHJvbG9ndWUgcGFja2V0IGZvciB0YWlsOiAiLCBSYXdQb2ludGVy
KHRhaWxQYWNrZXQuZnJhbWUpLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdl
IHdlcmUgdW5hYmxlIHRvIGxvY2F0ZSB0aGUgcHJvbG9ndWUgcGFja2V0IGZvciB0aGlzIHRhaWwg
cGFja2V0LgogICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyByYXJlIGJ1dCBjYW4g
aGFwcGVuIGluIGEgc2l0dWF0aW9uIGxpa2U6CkBAIC0zNTcsNyArMzU5LDcgQEAgdm9pZCBTaGFk
b3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBy
ZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKICAgICAgICAgfSk7CiAKLSAgICBpZiAodmVy
Ym9zZSkKKyAgICBpZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBk
YXRhTG9nKCIgICAgUHVzaGluZzogIiwgbGlzdER1bXAodG9QdXNoKSwgIlxuIik7CiAgICAgCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gdG9QdXNoLnNpemUoKTsgaS0tOykKQEAgLTM3Myw3ICszNzUs
NyBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykK
ICAgICB9IGVsc2UKICAgICAgICAgbV9sb2dDdXJzb3IgPSBtX2xvZzsKIAotICAgIGlmICh2ZXJi
b3NlKQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRh
dGFMb2coIiAgICBBZnRlciBwdXNoaW5nOiAiLCAqdGhpcywgIlxuIik7CiAKICAgICAvLyBSZW1v
dmUgdGFpbCBmcmFtZXMgdW50aWwgdGhlIG51bWJlciBvZiB0YWlsIGRlbGV0ZWQgZnJhbWVzIGlz
IHNtYWxsIGVub3VnaC4KQEAgLTM5OSw3ICs0MDEsNyBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVw
ZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgfQogICAgIH0KIAotICAgIGlm
ICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgIGRhdGFMb2coIiAgICBBZnRlciBjbGVhbi11cDogIiwgKnRoaXMsICJcbiIpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0JpbmFyeVN3aXRjaC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0JpbmFyeVN3aXRjaC5jcHAKaW5kZXggZjNkZGNmY2E5
MjFjOTgxZWYyOGMwYjdkNmQ3YTUxZjVlZmQ1Mzg4Yi4uMGVhYjU2NTE5MjUzMjllMTdiM2Y1Y2Ey
NWRiMTM0YWI0ZGQ5YTY3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9C
aW5hcnlTd2l0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQmluYXJ5U3dp
dGNoLmNwcApAQCAtMzMsNyArMzMsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFtZXNwYWNl
IEJpbmFyeVN3aXRjaEludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxz
ZTsKK30KIAogc3RhdGljIHVuc2lnbmVkIGdsb2JhbENvdW50ZXI7IC8vIFdlIHVzZSBhIGRpZmZl
cmVudCBzZWVkIGV2ZXJ5IHRpbWUgd2UgYXJlIGludm9rZWQuCiAKQEAgLTQ3LDcgKzQ5LDcgQEAg
QmluYXJ5U3dpdGNoOjpCaW5hcnlTd2l0Y2goR1BSUmVnIHZhbHVlLCBjb25zdCBWZWN0b3I8aW50
NjRfdD4mIGNhc2VzLCBUeXBlIHR5cGUKICAgICBpZiAoY2FzZXMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQmluYXJ5U3dpdGNoSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIk9yaWdpbmFsIGNhc2VzOiAiLCBsaXN0RHVt
cChjYXNlcyksICJcbiIpOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYXNl
cy5zaXplKCk7ICsraSkKQEAgLTU1LDcgKzU3LDcgQEAgQmluYXJ5U3dpdGNoOjpCaW5hcnlTd2l0
Y2goR1BSUmVnIHZhbHVlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGNhc2VzLCBUeXBlIHR5cGUK
ICAgICAKICAgICBzdGQ6OnNvcnQobV9jYXNlcy5iZWdpbigpLCBtX2Nhc2VzLmVuZCgpKTsKIAot
ICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChCaW5hcnlTd2l0Y2hJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgZGF0YUxvZygiU29ydGVkIGNhc2VzOiAiLCBsaXN0RHVtcChtX2Nhc2VzKSwgIlxu
Iik7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IG1fY2FzZXMuc2l6ZSgpOyAr
K2kpCkBAIC0xMzcsMTEgKzEzOSwxMSBAQCBib29sIEJpbmFyeVN3aXRjaDo6YWR2YW5jZShNYWNy
b0Fzc2VtYmxlciYgaml0KQogCiB2b2lkIEJpbmFyeVN3aXRjaDo6YnVpbGQodW5zaWduZWQgc3Rh
cnQsIGJvb2wgaGFyZFN0YXJ0LCB1bnNpZ25lZCBlbmQpCiB7Ci0gICAgaWYgKHZlcmJvc2UpCisg
ICAgaWYgKEJpbmFyeVN3aXRjaEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJC
dWlsZGluZyB3aXRoIHN0YXJ0ID0gIiwgc3RhcnQsICIsIGhhcmRTdGFydCA9ICIsIGhhcmRTdGFy
dCwgIiwgZW5kID0gIiwgZW5kLCAiXG4iKTsKIAogICAgIGF1dG8gYXBwZW5kID0gWyZdIChjb25z
dCBCcmFuY2hDb2RlJiBjb2RlKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAo
QmluYXJ5U3dpdGNoSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCI9PT4g
IiwgY29kZSwgIlxuIik7CiAgICAgICAgIG1fYnJhbmNoZXMuYXBwZW5kKGNvZGUpOwogICAgIH07
CkBAIC0xNTksNyArMTYxLDcgQEAgdm9pZCBCaW5hcnlTd2l0Y2g6OmJ1aWxkKHVuc2lnbmVkIHN0
YXJ0LCBib29sIGhhcmRTdGFydCwgdW5zaWduZWQgZW5kKQogICAgIGNvbnN0IHVuc2lnbmVkIGxl
YWZUaHJlc2hvbGQgPSAzOwogICAgIAogICAgIGlmIChzaXplIDw9IGxlYWZUaHJlc2hvbGQpIHsK
LSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCaW5hcnlTd2l0Y2hJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkl0J3MgYSBsZWFmLlxuIik7CiAgICAgICAg
IAogICAgICAgICAvLyBJdCB0dXJucyBvdXQgdGhhdCBmb3IgZXhhY3RseSB0aHJlZSBjYXNlcyBv
ciBsZXNzLCBpdCdzIGJldHRlciB0byBqdXN0IGNvbXBhcmUgZWFjaApAQCAtMTg2LDcgKzE4OCw3
IEBAIHZvaWQgQmluYXJ5U3dpdGNoOjpidWlsZCh1bnNpZ25lZCBzdGFydCwgYm9vbCBoYXJkU3Rh
cnQsIHVuc2lnbmVkIGVuZCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICBpZiAoQmluYXJ5U3dpdGNoSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICBkYXRhTG9nKCJhbGxDb25zZWN1dGl2ZSA9ICIsIGFsbENvbnNlY3V0aXZlLCAi
XG4iKTsKICAgICAgICAgCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZCwgMz4gbG9jYWxDYXNlSW5k
aWNlczsKQEAgLTIxNCw3ICsyMTYsNyBAQCB2b2lkIEJpbmFyeVN3aXRjaDo6YnVpbGQodW5zaWdu
ZWQgc3RhcnQsIGJvb2wgaGFyZFN0YXJ0LCB1bnNpZ25lZCBlbmQpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQmluYXJ5U3dpdGNoSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkl0J3Mgbm90IGEgbGVhZi5cbiIpOwogICAgICAg
ICAKICAgICAvLyBUaGVyZSBhcmUgdHdvIGRpZmZlcmVudCBzdHJhdGVnaWVzIHdlIGNvdWxkIGNv
bnNpZGVyIGhlcmU6CkBAIC0zMTQsNyArMzE2LDcgQEAgdm9pZCBCaW5hcnlTd2l0Y2g6OmJ1aWxk
KHVuc2lnbmVkIHN0YXJ0LCBib29sIGhhcmRTdGFydCwgdW5zaWduZWQgZW5kKQogICAgICAgICAK
ICAgICB1bnNpZ25lZCBtZWRpYW5JbmRleCA9IChzdGFydCArIGVuZCkgLyAyOwogCi0gICAgaWYg
KHZlcmJvc2UpCisgICAgaWYgKEJpbmFyeVN3aXRjaEludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICBkYXRhTG9nKCJtZWRpYW5JbmRleCA9ICIsIG1lZGlhbkluZGV4LCAiXG4iKTsKIAogICAgIC8v
IFdlIHdhbnQgbWVkaWFuSW5kZXggdG8gcG9pbnQgdG8gdGhlIHRoaW5nIHdlIHdpbGwgZG8gYSBs
ZXNzLXRoYW4gY29tcGFyZSBhZ2FpbnN0LiBXZSB3YW50CkBAIC0zNDcsNyArMzQ5LDcgQEAgdm9p
ZCBCaW5hcnlTd2l0Y2g6OmJ1aWxkKHVuc2lnbmVkIHN0YXJ0LCBib29sIGhhcmRTdGFydCwgdW5z
aWduZWQgZW5kKQogICAgIFJFTEVBU0VfQVNTRVJUKG1lZGlhbkluZGV4ID4gc3RhcnQpOwogICAg
IFJFTEVBU0VfQVNTRVJUKG1lZGlhbkluZGV4ICsgMSA8IGVuZCk7CiAgICAgICAgIAotICAgIGlm
ICh2ZXJib3NlKQorICAgIGlmIChCaW5hcnlTd2l0Y2hJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgZGF0YUxvZygiZml4ZWQgbWVkaWFuSW5kZXggPSAiLCBtZWRpYW5JbmRleCwgIlxuIik7CiAK
ICAgICBhcHBlbmQoQnJhbmNoQ29kZShMZXNzVGhhblRvUHVzaCwgbWVkaWFuSW5kZXgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggMWU0OWYyZjg1MzI1
OGUzOTQxNjFjN2M0NDAwMzk5MzNmYWFhOTIxYy4uYWQ4NjlmMjBlMmU0ZDFiOWFlMGRhNzg3NDgy
ZmI2ZmU3ZDI4YWZhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5j
cHAKQEAgLTIyNSw3ICsyMjUsOSBAQCB2b2lkIERhdGE6OmZpbmFsaXplU3RhdHMoKQogfQogCiAj
aWYgRU5BQkxFKExMSU5UX1NUQVRTKQorbmFtZXNwYWNlIExMSW50RGF0YUludGVybmFsIHsKIHN0
YXRpYyBjb25zdCBib29sIHZlcmJvc2VTdGF0cyA9IGZhbHNlOworfQogCiBzdGF0aWMgYm9vbCBj
b21wYXJlU3RhdHMoY29uc3QgT3Bjb2RlU3RhdHMmIGEsIGNvbnN0IE9wY29kZVN0YXRzJiBiKQog
ewpAQCAtMjgzLDcgKzI4NSw3IEBAIHZvaWQgRGF0YTo6bG9hZFN0YXRzKCkKICAgICB1bnNpZ25l
ZCBpbmRleDsKICAgICBjaGFyIG9wY29kZU5hbWVbMTAwXTsKICAgICB3aGlsZSAoZnNjYW5mKGZp
bGUsICJbJXVdOiBmYXN0OiV6dSBzbG93OiV6dSBpZDoldSAlc1xuIiwgJmluZGV4LCAmbG9hZGVk
LmNvdW50LCAmbG9hZGVkLnNsb3dQYXRoQ291bnQsICZsb2FkZWQuaWQsIG9wY29kZU5hbWUpICE9
IEVPRikgewotICAgICAgICBpZiAodmVyYm9zZVN0YXRzKQorICAgICAgICBpZiAoTExJbnREYXRh
SW50ZXJuYWw6OnZlcmJvc2VTdGF0cykKICAgICAgICAgICAgIGRhdGFMb2dGKCJsb2FkZWQgWyV1
XTogZmFzdCAlenUgc2xvdyAlenUgaWQ6JXUgJXNcbiIsIGluZGV4LCBsb2FkZWQuY291bnQsIGxv
YWRlZC5zbG93UGF0aENvdW50LCBsb2FkZWQuaWQsIG9wY29kZU5hbWUpOwogCiAgICAgICAgIE9w
Y29kZVN0YXRzJiBzdGF0cyA9IG9wY29kZVN0YXRzKGxvYWRlZC5pZCk7CkBAIC0yOTEsNyArMjkz
LDcgQEAgdm9pZCBEYXRhOjpsb2FkU3RhdHMoKQogICAgICAgICBzdGF0cy5zbG93UGF0aENvdW50
ID0gbG9hZGVkLnNsb3dQYXRoQ291bnQ7CiAgICAgfQogCi0gICAgaWYgKHZlcmJvc2VTdGF0cykg
eworICAgIGlmIChMTEludERhdGFJbnRlcm5hbDo6dmVyYm9zZVN0YXRzKSB7CiAgICAgICAgIGRh
dGFMb2dGKCJBZnRlciBsb2FkaW5nIGZyb20gJXMsICIsIGZpbGVuYW1lKTsKICAgICAgICAgZHVt
cFN0YXRzKCk7CiAgICAgfQpAQCAtMzMwLDcgKzMzMiw3IEBAIHZvaWQgRGF0YTo6c2F2ZVN0YXRz
KCkKICAgICAgICAgaWYgKCFzdGF0cy5jb3VudCAmJiAhc3RhdHMuc2xvd1BhdGhDb3VudCkKICAg
ICAgICAgICAgIGJyZWFrOyAvLyBzdGF0cyBhcmUgc29ydGVkLiBJZiB3ZSBlbmNvdW50ZXJlZCAw
IGNvdW50cywgdGhlbiB0aGVyZSBhcmUgbm8gbW9yZSBub24temVybyBjb3VudHMuCiAKLSAgICAg
ICAgaWYgKHZlcmJvc2VTdGF0cykKKyAgICAgICAgaWYgKExMSW50RGF0YUludGVybmFsOjp2ZXJi
b3NlU3RhdHMpCiAgICAgICAgICAgICBkYXRhTG9nRigic2F2ZWQgWyV1XTogZmFzdDolenUgc2xv
dzolenUgaWQ6JXUgJXNcbiIsIGluZGV4LCBzdGF0cy5jb3VudCwgc3RhdHMuc2xvd1BhdGhDb3Vu
dCwgc3RhdHMuaWQsIG9wY29kZU5hbWVzW3N0YXRzLmlkXSk7CiAKICAgICAgICAgZnByaW50Zihm
aWxlLCAiWyV1XTogZmFzdDolenUgc2xvdzolenUgaWQ6JXUgJXNcbiIsIGluZGV4LCBzdGF0cy5j
b3VudCwgc3RhdHMuc2xvd1BhdGhDb3VudCwgc3RhdHMuaWQsIG9wY29kZU5hbWVzW3N0YXRzLmlk
XSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHAKaW5kZXggOGY3MTE3YjdmNjE0MmJhMDZhZTcxY2U3Y2U2ZGRmM2ExNjdlNzcxNy4uM2I3MWEz
MDk2N2VhMzk4ZDU5MjkyYjM5OWNiM2VkYjU2MDVhNGIxNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMTM2Niw3ICsxMzY2LDkg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNBcHBl
bmRNZW1jcHkoRXhlY1N0YXRlKiBleGVjKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSBBcnJh
eVByb3RvdHlwZS5jb25zdHJ1Y3RvciBXYXRjaHBvaW50IC0tLS0tLS0tLS0tLS0tLS0tLQogCitu
YW1lc3BhY2UgQXJyYXlQcm90b3R5cGVJbnRlcm5hbCB7CiBzdGF0aWMgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7Cit9CiAKIGNsYXNzIEFycmF5UHJvdG90eXBlQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5
V2F0Y2hwb2ludCA6IHB1YmxpYyBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnRCYXNlIHsKIHB1YmxpYzoKQEAgLTEzODgsNyArMTM5MCw3IEBAIHZvaWQgQXJyYXlQcm90b3R5
cGU6OnRyeUluaXRpYWxpemVTcGVjaWVzV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMpCiAKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAodmVyYm9z
ZSkKKyAgICBpZiAoQXJyYXlQcm90b3R5cGVJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0
YUxvZygiSW5pdGlhbGl6aW5nIEFycmF5IHNwZWNpZXMgd2F0Y2hwb2ludHMgZm9yIEFycmF5LnBy
b3RvdHlwZTogIiwgcG9pbnRlckR1bXAodGhpcyksICIgd2l0aCBzdHJ1Y3R1cmU6ICIsIHBvaW50
ZXJEdW1wKHRoaXMtPnN0cnVjdHVyZSgpKSwgIlxuYW5kIEFycmF5OiAiLCBwb2ludGVyRHVtcCh0
aGlzLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlDb25zdHJ1Y3RvcigpKSwgIiB3aXRoIHN0cnVjdHVy
ZTogIiwgcG9pbnRlckR1bXAodGhpcy0+Z2xvYmFsT2JqZWN0KCktPmFycmF5Q29uc3RydWN0b3Io
KS0+c3RydWN0dXJlKCkpLCAiXG4iKTsKICAgICAvLyBGaXJzdCB3ZSBuZWVkIHRvIG1ha2Ugc3Vy
ZSB0aGF0IHRoZSBBcnJheS5wcm90b3R5cGUuY29uc3RydWN0b3IgcHJvcGVydHkgcG9pbnRzIHRv
IEFycmF5CiAgICAgLy8gYW5kIHRoYXQgQXJyYXlbU3ltYm9sLnNwZWNpZXNdIGlzIHRoZSBwcmlt
b3JkaWFsIEdldHRlclNldHRlci4KQEAgLTE0NjYsNyArMTQ2OCw3IEBAIHZvaWQgQXJyYXlQcm90
b3R5cGVBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlXYXRjaHBvaW50OjpoYW5kbGVGaXJlKGNvbnN0
IEZpcmVEZXRhCiAKICAgICBTdHJpbmdGaXJlRGV0YWlsIHN0cmluZ0RldGFpbChvdXQudG9DU3Ry
aW5nKCkuZGF0YSgpKTsKIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChBcnJheVByb3RvdHlw
ZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBXVEY6OmRhdGFMb2coc3RyaW5nRGV0YWlsLCAi
XG4iKTsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2FycmF5UHJvdG90
eXBlLT5nbG9iYWxPYmplY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JJbnN0YW5jZS5jcHAKaW5kZXggNTQ5M2Y4ZjcwYTM1NzMyMWYxNjdkZTFjNTJiNGYzNTI5
OTg4MDQ4Yy4uZmM4Yjg0ODJiZWZkNmIwYzA3NGI0ZWU4ZmQyN2JhYTIyMjU4YjA4OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKQEAgLTEw
OCw0MSArMTA4LDYgQEAgc3RhdGljIHZvaWQgYXBwZW5kU291cmNlVG9FcnJvcihDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgRXJyb3JJbnN0YW5jZSogZXhjZXB0aW9uLAogCiB9CiAKLWNsYXNzIEZpbmRG
aXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3IgewotcHVibGljOgotICAgIEZpbmRG
aXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3IoQ2FsbEZyYW1lKiBzdGFydENhbGxG
cmFtZSkKLSAgICAgICAgOiBtX3N0YXJ0Q2FsbEZyYW1lKHN0YXJ0Q2FsbEZyYW1lKQotICAgICAg
ICAsIG1fZm91bmRDYWxsRnJhbWUobnVsbHB0cikKLSAgICAgICAgLCBtX2ZvdW5kU3RhcnRDYWxs
RnJhbWUoZmFsc2UpCi0gICAgICAgICwgbV9pbmRleCgwKQotICAgIHsgfQotCi0gICAgU3RhY2tW
aXNpdG9yOjpTdGF0dXMgb3BlcmF0b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpCi0gICAgewot
ICAgICAgICBpZiAoIW1fZm91bmRTdGFydENhbGxGcmFtZSAmJiAodmlzaXRvci0+Y2FsbEZyYW1l
KCkgPT0gbV9zdGFydENhbGxGcmFtZSkpCi0gICAgICAgICAgICBtX2ZvdW5kU3RhcnRDYWxsRnJh
bWUgPSB0cnVlOwotCi0gICAgICAgIGlmIChtX2ZvdW5kU3RhcnRDYWxsRnJhbWUpIHsKLSAgICAg
ICAgICAgIGlmICh2aXNpdG9yLT5jYWxsRnJhbWUoKS0+Y29kZUJsb2NrKCkpIHsKLSAgICAgICAg
ICAgICAgICBtX2ZvdW5kQ2FsbEZyYW1lID0gdmlzaXRvci0+Y2FsbEZyYW1lKCk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIG1faW5kZXgrKzsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBTdGFja1Zpc2l0
b3I6OkNvbnRpbnVlOwotICAgIH0KLQotICAgIENhbGxGcmFtZSogZm91bmRDYWxsRnJhbWUoKSBj
b25zdCB7IHJldHVybiBtX2ZvdW5kQ2FsbEZyYW1lOyB9Ci0gICAgdW5zaWduZWQgaW5kZXgoKSBj
b25zdCB7IHJldHVybiBtX2luZGV4OyB9Ci0KLXByaXZhdGU6Ci0gICAgQ2FsbEZyYW1lKiBtX3N0
YXJ0Q2FsbEZyYW1lOwotICAgIENhbGxGcmFtZSogbV9mb3VuZENhbGxGcmFtZTsKLSAgICBib29s
IG1fZm91bmRTdGFydENhbGxGcmFtZTsKLSAgICB1bnNpZ25lZCBtX2luZGV4OwotfTsKLQogdm9p
ZCBFcnJvckluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBib29sIHVzZUN1cnJlbnRGcmFtZSkKIHsKICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAppbmRleCA3ZWYwMDA4ZDgzN2NjZjkxMzcxNGYz
YTM1YzM5NTUxOTk4YjZmOTdmLi5jOTIwYWNmNDdlODJjOTUyZThmYjZlMzA3ZDliMGZlM2Y1YTgy
YmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdC5jcHAKQEAgLTQ5LDcgKzQ5LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25z
dCBDbGFzc0luZm8gSW50bERhdGVUaW1lRm9ybWF0OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxEYXRl
VGltZUZvcm1hdCkgfTsKIAorbmFtZXNwYWNlIEludGxEVEZJbnRlcm5hbCB7CiBzdGF0aWMgY29u
c3QgY2hhciogY29uc3QgcmVsZXZhbnRFeHRlbnNpb25LZXlzWzJdID0geyAiY2EiLCAibnUiIH07
Cit9CisKIHN0YXRpYyBjb25zdCBzaXplX3QgaW5kZXhPZkV4dGVuc2lvbktleUNhID0gMDsKIHN0
YXRpYyBjb25zdCBzaXplX3QgaW5kZXhPZkV4dGVuc2lvbktleU51ID0gMTsKIApAQCAtMTg5LDYg
KzE5Miw3IEBAIHN0YXRpYyBTdHJpbmcgY2Fub25pY2FsaXplVGltZVpvbmVOYW1lKGNvbnN0IFN0
cmluZyYgdGltZVpvbmVOYW1lKQogICAgIHJldHVybiBjYW5vbmljYWw7CiB9CiAKK25hbWVzcGFj
ZSBJbnRsRFRGSW50ZXJuYWwgewogc3RhdGljIFZlY3RvcjxTdHJpbmc+IGxvY2FsZURhdGEoY29u
c3QgU3RyaW5nJiBsb2NhbGUsIHNpemVfdCBrZXlJbmRleCkKIHsKICAgICBWZWN0b3I8U3RyaW5n
PiBrZXlMb2NhbGVEYXRhOwpAQCAtMzE5LDYgKzMyMyw3IEBAIHN0YXRpYyBKU09iamVjdCogdG9E
YXRlVGltZU9wdGlvbnNBbnlEYXRlKEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSBvcmlnaW5hbE9w
dGlvCiAgICAgLy8gOS4gUmV0dXJuIG9wdGlvbnMuCiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9Cit9
CiAKIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0OjpzZXRGb3JtYXRzRnJvbVBhdHRlcm4oY29uc3Qg
U3RyaW5nVmlldyYgcGF0dGVybikKIHsKQEAgLTQzMyw3ICs0MzgsNyBAQCB2b2lkIEludGxEYXRl
VGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSYgZXhlYywgSlNW
YWx1ZSBsb2NhbAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKICAg
ICAvLyA1LiBMZXQgb3B0aW9ucyBiZSBUb0RhdGVUaW1lT3B0aW9ucyhvcHRpb25zLCAiYW55Iiwg
ImRhdGUiKS4KLSAgICBKU09iamVjdCogb3B0aW9ucyA9IHRvRGF0ZVRpbWVPcHRpb25zQW55RGF0
ZShleGVjLCBvcmlnaW5hbE9wdGlvbnMpOworICAgIEpTT2JqZWN0KiBvcHRpb25zID0gSW50bERU
RkludGVybmFsOjp0b0RhdGVUaW1lT3B0aW9uc0FueURhdGUoZXhlYywgb3JpZ2luYWxPcHRpb25z
KTsKICAgICAvLyA2LiBSZXR1cm5JZkFicnVwdChvcHRpb25zKS4KICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCkBAIC00NTAsNyArNDU1LDcgQEAgdm9pZCBJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChFeGVjU3RhdGUmIGV4ZWMsIEpT
VmFsdWUgbG9jYWwKICAgICAvLyAxMS4gTGV0IGxvY2FsZURhdGEgYmUgdGhlIHZhbHVlIG9mICVE
YXRlVGltZUZvcm1hdCUuW1tsb2NhbGVEYXRhXV0uCiAgICAgLy8gMTIuIExldCByIGJlIFJlc29s
dmVMb2NhbGUoICVEYXRlVGltZUZvcm1hdCUuW1thdmFpbGFibGVMb2NhbGVzXV0sIHJlcXVlc3Rl
ZExvY2FsZXMsIG9wdCwgJURhdGVUaW1lRm9ybWF0JS5bW3JlbGV2YW50RXh0ZW5zaW9uS2V5c11d
LCBsb2NhbGVEYXRhKS4KICAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4gYXZhaWxhYmxlTG9jYWxl
cyA9IGV4ZWMuanNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPmludGxEYXRlVGltZUZvcm1hdEF2
YWlsYWJsZUxvY2FsZXMoKTsKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiByZXNvbHZlZCA9
IHJlc29sdmVMb2NhbGUoZXhlYywgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywg
bG9jYWxlT3B0LCByZWxldmFudEV4dGVuc2lvbktleXMsIFdURl9BUlJBWV9MRU5HVEgocmVsZXZh
bnRFeHRlbnNpb25LZXlzKSwgbG9jYWxlRGF0YSk7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4gcmVzb2x2ZWQgPSByZXNvbHZlTG9jYWxlKGV4ZWMsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVl
c3RlZExvY2FsZXMsIGxvY2FsZU9wdCwgSW50bERURkludGVybmFsOjpyZWxldmFudEV4dGVuc2lv
bktleXMsIFdURl9BUlJBWV9MRU5HVEgoSW50bERURkludGVybmFsOjpyZWxldmFudEV4dGVuc2lv
bktleXMpLCBJbnRsRFRGSW50ZXJuYWw6OmxvY2FsZURhdGEpOwogCiAgICAgLy8gMTMuIFNldCBk
YXRlVGltZUZvcm1hdC5bW2xvY2FsZV1dIHRvIHRoZSB2YWx1ZSBvZiByLltbbG9jYWxlXV0uCiAg
ICAgbV9sb2NhbGUgPSByZXNvbHZlZC5nZXQodm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLnN0cmlu
ZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdC5jcHAKaW5kZXggMjI0NzQ3OWJhNDQ4ZGIxYTRjODE3ZDJmNzdjZmMzYzUyZjNmYzY0Yy4u
YzJmYjgzNDYzYTM0NDQ3N2EwZmI0ZWZiNGE0MzVmZTNlZTc3MjcxYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKQEAgLTg4LDEy
ICs4OCwxNCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX2JvdW5kRm9ybWF0KTsKIH0KIAorbmFtZXNwYWNlIEludGxORkludGVybmFsIHsKIHN0YXRp
YyBWZWN0b3I8U3RyaW5nPiBsb2NhbGVEYXRhKGNvbnN0IFN0cmluZyYgbG9jYWxlLCBzaXplX3Qg
a2V5SW5kZXgpCiB7CiAgICAgLy8gOS4xIEludGVybmFsIHNsb3RzIG9mIFNlcnZpY2UgQ29uc3Ry
dWN0b3JzICYgMTEuMi4zIEludGVybmFsIHNsb3RzIChFQ01BLTQwMiAyLjApCiAgICAgQVNTRVJU
X1VOVVNFRChrZXlJbmRleCwgIWtleUluZGV4KTsgLy8gVGhlIGluZGV4IG9mIHRoZSBleHRlbnNp
b24ga2V5ICJudSIgaW4gcmVsZXZhbnRFeHRlbnNpb25LZXlzIGlzIDAuCiAgICAgcmV0dXJuIG51
bWJlcmluZ1N5c3RlbXNGb3JMb2NhbGUobG9jYWxlKTsKIH0KK30KIAogc3RhdGljIGlubGluZSB1
bnNpZ25lZCBjb21wdXRlQ3VycmVuY3lTb3J0S2V5KGNvbnN0IFN0cmluZyYgY3VycmVuY3kpCiB7
CkBAIC0xOTIsNyArMTk0LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVt
YmVyRm9ybWF0KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgbG9jYWxlcywKICAgICAvLyAxMS4g
TGV0IGxvY2FsZURhdGEgYmUgJU51bWJlckZvcm1hdCUuW1tsb2NhbGVEYXRhXV0uCiAgICAgLy8g
MTIuIExldCByIGJlIFJlc29sdmVMb2NhbGUoJU51bWJlckZvcm1hdCUuW1thdmFpbGFibGVMb2Nh
bGVzXV0sIHJlcXVlc3RlZExvY2FsZXMsIG9wdCwgJU51bWJlckZvcm1hdCUuW1tyZWxldmFudEV4
dGVuc2lvbktleXNdXSwgbG9jYWxlRGF0YSkuCiAgICAgYXV0byYgYXZhaWxhYmxlTG9jYWxlcyA9
IHN0YXRlLmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5pbnRsTnVtYmVyRm9ybWF0QXZhaWxh
YmxlTG9jYWxlcygpOwotICAgIGF1dG8gcmVzdWx0ID0gcmVzb2x2ZUxvY2FsZShzdGF0ZSwgYXZh
aWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0LCByZWxldmFudEV4dGVuc2lvbktl
eXMsIFdURl9BUlJBWV9MRU5HVEgocmVsZXZhbnRFeHRlbnNpb25LZXlzKSwgbG9jYWxlRGF0YSk7
CisgICAgYXV0byByZXN1bHQgPSByZXNvbHZlTG9jYWxlKHN0YXRlLCBhdmFpbGFibGVMb2NhbGVz
LCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHQsIHJlbGV2YW50RXh0ZW5zaW9uS2V5cywgV1RGX0FSUkFZ
X0xFTkdUSChyZWxldmFudEV4dGVuc2lvbktleXMpLCBJbnRsTkZJbnRlcm5hbDo6bG9jYWxlRGF0
YSk7CiAKICAgICAvLyAxMy4gU2V0IG51bWJlckZvcm1hdC5bW2xvY2FsZV1dIHRvIHRoZSB2YWx1
ZSBvZiByLltbbG9jYWxlXV0uCiAgICAgbV9sb2NhbGUgPSByZXN1bHQuZ2V0KEFTQ0lJTGl0ZXJh
bCgibG9jYWxlIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5jcHAKaW5kZXggMGFiYzUzMDg2OTdlYjI1MzQx
ZmFkMTJmMDNkZTA4YzBhMWYxNWY0NS4uNzhjOWU2NDA0ZjFiZjFkMzlkNTY0OGNkNGE0OWVjNDZj
MmEwNjAwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
ZEFycmF5Q29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCisjdW5kZWYgTUFLRV9TX0lORk8KICNkZWZpbmUgTUFLRV9TX0lORk8odHlw
ZSkgXAogICAgIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTIyN0eXBlIyNDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyJGdW5jdGlvbiIsICZKUyMjdHlwZSMjQ29uc3RydWN0b3I6OkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKUyMjdHlwZSMjQ29u
c3RydWN0b3IpfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGVkQXJyYXlQcm90b3R5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwCmluZGV4IDY2ZDc0ZTY5ZWNhNGYxNzI1ZTgyYzEy
ZWFkM2FkZGUyNGJlOTI5ZmEuLmIxNDM0NTViMGQxMWNkMzkyZTUyMWMwYjhiMGE4MmEwMzJhODRi
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJh
eVByb3RvdHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZWRBcnJheVByb3RvdHlwZXMuY3BwCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
Y29uc3QgQ2xhc3NJbmZvIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU6OnNfaW5mbyA9IHsiUHJv
dG90eXBlIiwgJkpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU6OkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwKICAgICBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVHlwZWRBcnJheVZpZXdQcm90
b3R5cGUpfTsKIAorI3VuZGVmIE1BS0VfU19JTkZPCiAjZGVmaW5lIE1BS0VfU19JTkZPKHR5cGUp
IFwKICAgICB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKUyMjdHlwZSMjUHJvdG90eXBlOjpz
X2luZm8gPSB7I3R5cGUgIlByb3RvdHlwZSIsICZKUyMjdHlwZSMjUHJvdG90eXBlOjpCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlMjI3R5cGUjI1By
b3RvdHlwZSl9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZWRBcnJheXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFy
cmF5cy5jcHAKaW5kZXggZDBhOTNjNDI1NTc0OGU3ZTU4NDFhNjc4ODFhMTEyNGE0NjY5ZDBkNi4u
MDkxODlkMmM1Y2E1YjUzNWRhNDMzMzE0NjkzNGJlY2ZkMzAzZjVjOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5cy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5cy5jcHAKQEAgLTMyLDYgKzMyLDcg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyN1bmRlZiBNQUtFX1NfSU5GTwogI2RlZmluZSBNQUtF
X1NfSU5GTyh0eXBlKSBcCiAgICAgdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlMjI3R5cGUj
I0FycmF5OjpzX2luZm8gPSB7IFwKICAgICAgICAgI3R5cGUgIkFycmF5IiwgJkpTIyN0eXBlIyNB
cnJheTo6QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsR2V0dGVyRnVuY3Rpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbEdldHRlckZ1bmN0aW9uLmNwcAppbmRleCAzZjZm
MjgyMTUzZTA0YjMzYjEwZDkzNDA5NmNkNWIxNjI0NmYxMGNhLi5iYTQ2YjMwMmM4MmE0MmI3YmY2
ZGRkODhmMDQ2ZGU0ODVkODYwMWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OdWxsR2V0dGVyRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bGxHZXR0ZXJGdW5jdGlvbi5jcHAKQEAgLTMzLDE0ICszMywxNiBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIE51bGxHZXR0ZXJGdW5jdGlvbjo6c19pbmZv
ID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKE51bGxHZXR0ZXJGdW5jdGlvbikgfTsKIAorbmFtZXNwYWNlIE51bGxHZXR0
ZXJGdW5jdGlvbkludGVybmFsIHsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxSZXR1cm5VbmRlZmluZWQoRXhlY1N0YXRlKikKIHsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQorfQogCiBDYWxsVHlwZSBOdWxsR2V0dGVyRnVuY3Rp
b246OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKLSAgICBjYWxs
RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsUmV0dXJuVW5kZWZpbmVkOworICAgIGNhbGxEYXRh
Lm5hdGl2ZS5mdW5jdGlvbiA9IE51bGxHZXR0ZXJGdW5jdGlvbkludGVybmFsOjpjYWxsUmV0dXJu
VW5kZWZpbmVkOwogICAgIHJldHVybiBDYWxsVHlwZTo6SG9zdDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAKaW5kZXgg
NTBjNWI4MGRjZjk1YTUzOTBkMWU2MDEwMWVlYmQ2YjU2NjY1OWYyOC4uNmFmMGQxYTg1ZGYyMGZm
MDgxYTk4N2NmZGRkYTY3ZDUxYWI2ZTBlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwCkBAIC03MCw2ICs3MCw3IEBAIHN0
YXRpYyBib29sIGNhbGxlcklzU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gaXRl
ci5jYWxsZXJJc1N0cmljdCgpOwogfQogCituYW1lc3BhY2UgTnVsbFNldHRlckZ1bmN0aW9uSW50
ZXJuYWwgewogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJldHVyblVu
ZGVmaW5lZChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAg
LTc5LDEwICs4MCwxMSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
UmV0dXJuVW5kZWZpbmVkKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJTZXR0aW5n
IGEgcHJvcGVydHkgdGhhdCBoYXMgb25seSBhIGdldHRlciIpKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KK30KIAogQ2FsbFR5cGUgTnVsbFNldHRlckZ1
bmN0aW9uOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7Ci0gICAg
Y2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbFJldHVyblVuZGVmaW5lZDsKKyAgICBjYWxs
RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBOdWxsU2V0dGVyRnVuY3Rpb25JbnRlcm5hbDo6Y2FsbFJl
dHVyblVuZGVmaW5lZDsKICAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCmluZGV4IGMx
N2I1ZWJkZmExMmEwZjNlY2I2MmU2NjhhNjY5ZjNiYWQ3ZTdjNTguLjYxM2NkMDkyNWViNTY3MDE5
ZDA0ZDhlNTk0OGZhMjM4Zjk0YjA5NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL2R0b2EvZG91YmxlLWNvbnZlcnNpb24u
aD4KIAotdXNpbmcgbmFtZXNwYWNlIFdURjo6ZG91YmxlX2NvbnZlcnNpb247Cit1c2luZyBEb3Vi
bGVUb1N0cmluZ0NvbnZlcnRlciA9IFdURjo6ZG91YmxlX2NvbnZlcnNpb246OkRvdWJsZVRvU3Ry
aW5nQ29udmVydGVyOwogCiAvLyBUbyBhdm9pZCBjb25mbGljdCB3aXRoIFdURjo6U3RyaW5nQnVp
bGRlci4KIHR5cGVkZWYgV1RGOjpkb3VibGVfY29udmVyc2lvbjo6U3RyaW5nQnVpbGRlciBEb3Vi
bGVDb252ZXJzaW9uU3RyaW5nQnVpbGRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcAppbmRleCAzZGNhZWFhZmU1YjM4
ZmJhNWJhOGFmOTc2NjBmNTFiYzY1OWZkMjQ1Li4wODc4MDQ2OTVjZGYzNWE3NDk0YmJkNTg5NDQy
OTA0ZWI5Y2E3MDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9taXNlRGVmZXJyZWRUaW1lci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvbWlzZURlZmVycmVkVGltZXIuY3BwCkBAIC0zNCw3ICszNCw5IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCituYW1lc3BhY2UgUHJvbWlzZURlZmVycmVkVGltZXJJbnRlcm5hbCB7CiBzdGF0
aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIFByb21pc2VEZWZlcnJlZFRpbWVy
OjpQcm9taXNlRGVmZXJyZWRUaW1lcihWTSYgdm0pCiAgICAgOiBCYXNlKCZ2bSkKQEAgLTU1LDcg
KzU3LDcgQEAgdm9pZCBQcm9taXNlRGVmZXJyZWRUaW1lcjo6ZG9Xb3JrKCkKICAgICAgICAgSlNQ
cm9taXNlRGVmZXJyZWQqIHRpY2tldDsKICAgICAgICAgVGFzayB0YXNrOwogICAgICAgICBzdGQ6
OnRpZSh0aWNrZXQsIHRhc2spID0gbV90YXNrcy50YWtlTGFzdCgpOwotICAgICAgICBkYXRhTG9n
TG5JZih2ZXJib3NlLCAiRG9pbmcgd29yayBvbiBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tl
dCkpOworICAgICAgICBkYXRhTG9nTG5JZihQcm9taXNlRGVmZXJyZWRUaW1lckludGVybmFsOjp2
ZXJib3NlLCAiRG9pbmcgd29yayBvbiBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwog
CiAgICAgICAgIC8vIFdlIG1heSBoYXZlIGFscmVhZHkgY2FuY2VsZWQgdGhlc2UgcHJvbWlzZXMu
CiAgICAgICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5jb250YWlucyh0aWNrZXQpKSB7CkBAIC0x
MDUsMTEgKzEwNywxMSBAQCB2b2lkIFByb21pc2VEZWZlcnJlZFRpbWVyOjphZGRQZW5kaW5nUHJv
bWlzZShKU1Byb21pc2VEZWZlcnJlZCogdGlja2V0LCBWZWN0b3I8UwogCiAgICAgYXV0byByZXN1
bHQgPSBtX3BlbmRpbmdQcm9taXNlcy5hZGQodGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+
KCkpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBkYXRhTG9nTG5JZih2
ZXJib3NlLCAiQWRkaW5nIG5ldyBwZW5kaW5nIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0
KSk7CisgICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VEZWZlcnJlZFRpbWVySW50ZXJuYWw6OnZl
cmJvc2UsICJBZGRpbmcgbmV3IHBlbmRpbmcgcHJvbWlzZTogIiwgUmF3UG9pbnRlcih0aWNrZXQp
KTsKICAgICAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPigqbV92bSwgdGlj
a2V0KSk7CiAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKGRlcGVuZGVu
Y2llcyk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIkFkZGlu
ZyBuZXcgZGVwZW5kZW5jaWVzIGZvciBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwor
ICAgICAgICBkYXRhTG9nTG5JZihQcm9taXNlRGVmZXJyZWRUaW1lckludGVybmFsOjp2ZXJib3Nl
LCAiQWRkaW5nIG5ldyBkZXBlbmRlbmNpZXMgZm9yIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlj
a2V0KSk7CiAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kVmVjdG9yKGRlcGVu
ZGVuY2llcyk7CiAgICAgfQogCkBAIC0xMjQsNyArMTI2LDcgQEAgYm9vbCBQcm9taXNlRGVmZXJy
ZWRUaW1lcjo6Y2FuY2VsUGVuZGluZ1Byb21pc2UoSlNQcm9taXNlRGVmZXJyZWQqIHRpY2tldCkK
ICAgICBib29sIHJlc3VsdCA9IG1fcGVuZGluZ1Byb21pc2VzLnJlbW92ZSh0aWNrZXQpOwogCiAg
ICAgaWYgKHJlc3VsdCkKLSAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIkNhbmNlbGluZyBw
cm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworICAgICAgICBkYXRhTG9nTG5JZihQcm9t
aXNlRGVmZXJyZWRUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQ2FuY2VsaW5nIHByb21pc2U6ICIs
IFJhd1BvaW50ZXIodGlja2V0KSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlci5jcHAKaW5kZXggZTMxNWM0MTJi
OTMzMzBiMDVhZjY2NDA3MGNhMTE2Y2Q1M2U5MmRiNy4uMGY4NWVmODgyODVjMmU4YjgxZDVmZjAw
YmNhYTJiOTljZjZkYzgwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVHlwZVByb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
eXBlUHJvZmlsZXIuY3BwCkBAIC0zMiw3ICszMiw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitu
YW1lc3BhY2UgVHlwZVByb2ZpbGVySW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9z
ZSA9IGZhbHNlOworfQogCiBUeXBlUHJvZmlsZXI6OlR5cGVQcm9maWxlcigpCiAgICAgOiBtX25l
eHRVbmlxdWVWYXJpYWJsZUlEKDEpCkBAIC01OSw3ICs2MSw3IEBAIHZvaWQgVHlwZVByb2ZpbGVy
Ojpsb2dUeXBlc0ZvclR5cGVMb2NhdGlvbihUeXBlTG9jYXRpb24qIGxvY2F0aW9uLCBWTSYgdm0p
CiAKIHZvaWQgVHlwZVByb2ZpbGVyOjppbnNlcnROZXdMb2NhdGlvbihUeXBlTG9jYXRpb24qIGxv
Y2F0aW9uKQogewotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChUeXBlUHJvZmlsZXJJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZ0YoIlJlZ2lzdGVyaW5nIGxvY2F0aW9uOjogZGl2
b3RTdGFydDoldSwgZGl2b3RFbmQ6JXVcbiIsIGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQsIGxvY2F0
aW9uLT5tX2Rpdm90RW5kKTsKIAogICAgIGlmICghbV9idWNrZXRNYXAuY29udGFpbnMobG9jYXRp
b24tPm1fc291cmNlSUQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VHlwZVByb2ZpbGVyTG9nLmNwcAppbmRleCA4NWM0OWQwNDZiYWZlYWM3YzJmZGVhMjE1MjU4ZDNj
NDRlZmNkMTE1Li41M2Q3M2U4OGIxNGUzODZiNzM3OGI4ODI0N2I3NzY5NjRmNmI1N2VmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHAK
QEAgLTM3LDcgKzM3LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK25hbWVzcGFjZSBUeXBlUHJv
ZmlsZXJMb2dJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9
CiAKIHZvaWQgVHlwZVByb2ZpbGVyTG9nOjppbml0aWFsaXplTG9nKCkKIHsKQEAgLTU2LDcgKzU4
LDcgQEAgVHlwZVByb2ZpbGVyTG9nOjp+VHlwZVByb2ZpbGVyTG9nKCkKIHZvaWQgVHlwZVByb2Zp
bGVyTG9nOjpwcm9jZXNzTG9nRW50cmllcyhjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKICAgICBk
b3VibGUgYmVmb3JlID0gMDsKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChUeXBlUHJvZmls
ZXJMb2dJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICBkYXRhTG9nKCJQcm9jZXNzIGNhbGxl
cjonIiwgcmVhc29uLCAiJyIpOwogICAgICAgICBiZWZvcmUgPSBjdXJyZW50VGltZU1TKCk7CiAg
ICAgfQpAQCAtOTUsNyArOTcsNyBAQCB2b2lkIFR5cGVQcm9maWxlckxvZzo6cHJvY2Vzc0xvZ0Vu
dHJpZXMoY29uc3QgU3RyaW5nJiByZWFzb24pCiAgICAgLy8gcGF1c2VzIGFuZCBjYXVzZXMgdGhl
IGNvbGxlY3RvciB0byBtYXJrIHRoZSBsb2cuCiAgICAgbV9jdXJyZW50TG9nRW50cnlQdHIgPSBt
X2xvZ1N0YXJ0UHRyOwogCi0gICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoVHlwZVByb2ZpbGVy
TG9nSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZG91YmxlIGFmdGVyID0gY3VycmVudFRp
bWVNUygpOwogICAgICAgICBkYXRhTG9nRigiIFByb2Nlc3NpbmcgdGhlIGxvZyB0b29rOiAnJWYn
IG1zXG4iLCBhZnRlciAtIGJlZm9yZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IDAwYWMzYzFhZGJkN2FjODJkMjE1
OTBmNjAxMjhiOTRhNDAwYzYyOGUuLmFkN2Q2MjFlYzg3ODg1YWMwMzZkODEzMTNkNWIwZmEwOTFh
NGVmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVy
YXRvci5jcHAKQEAgLTc2LDcgKzc2LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNt
IHsKIHVzaW5nIG5hbWVzcGFjZSBCMzsKIAogbmFtZXNwYWNlIHsKLWNvbnN0IGJvb2wgdmVyYm9z
ZSA9IGZhbHNlOworbmFtZXNwYWNlIFdhc21CM0lSR2VuZXJhdG9ySW50ZXJuYWwgeworc3RhdGlj
IGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogfQogCiBjbGFzcyBCM0lSR2VuZXJhdG9y
IHsKQEAgLTE1NjYsOSArMTU2OCw5IEBAIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5h
bEZ1bmN0aW9uPiwgU3RyaW5nPiBwYXJzZUFuZENvbXBpbGUoQ29tcGlsYXRpb25DCiAgICAgaWYg
KCFBU1NFUlRfRElTQUJMRUQpCiAgICAgICAgIHZhbGlkYXRlKHByb2NlZHVyZSwgIkFmdGVyIHBh
cnNpbmc6XG4iKTsKIAotICAgIGRhdGFMb2dJZih2ZXJib3NlLCAiUHJlIFNTQTogIiwgcHJvY2Vk
dXJlKTsKKyAgICBkYXRhTG9nSWYoV2FzbUIzSVJHZW5lcmF0b3JJbnRlcm5hbDo6dmVyYm9zZSwg
IlByZSBTU0E6ICIsIHByb2NlZHVyZSk7CiAgICAgZml4U1NBKHByb2NlZHVyZSk7Ci0gICAgZGF0
YUxvZ0lmKHZlcmJvc2UsICJQb3N0IFNTQTogIiwgcHJvY2VkdXJlKTsKKyAgICBkYXRhTG9nSWYo
V2FzbUIzSVJHZW5lcmF0b3JJbnRlcm5hbDo6dmVyYm9zZSwgIlBvc3QgU1NBOiAiLCBwcm9jZWR1
cmUpOwogICAgIAogICAgIHsKICAgICAgICAgQjM6OnByZXBhcmVGb3JHZW5lcmF0aW9uKHByb2Nl
ZHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxh
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKaW5kZXgg
NTBmZWI3MzBiMDBmZGQ5ZDBmMDE2ZTM2NjkwODEwNzIyZGJhZGIxNS4uMjJlZGQxNjAxM2U1MTk2
ZmU3NGFiZGQ4NDBjNmU0YmNjOTc1MGQwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CQlFQbGFuLmNwcApAQCAtNDksNyArNDksOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIFdhc20gewogCituYW1lc3BhY2UgV2FzbUJCUVBsYW5JbnRlcm5hbCB7CiBzdGF0aWMg
Y29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIEJCUVBsYW46OkJCUVBsYW4oVk0qIHZt
LCBSZWY8TW9kdWxlSW5mb3JtYXRpb24+IGluZm8sIEFzeW5jV29yayB3b3JrLCBDb21wbGV0aW9u
VGFzayYmIHRhc2spCiAgICAgOiBCYXNlKHZtLCBXVEZNb3ZlKGluZm8pLCBXVEZNb3ZlKHRhc2sp
KQpAQCAtODYsNyArODgsNyBAQCBjb25zdCBjaGFyKiBCQlFQbGFuOjpzdGF0ZVN0cmluZyhTdGF0
ZSBzdGF0ZSkKIHZvaWQgQkJRUGxhbjo6bW92ZVRvU3RhdGUoU3RhdGUgc3RhdGUpCiB7CiAgICAg
QVNTRVJUKHN0YXRlID49IG1fc3RhdGUpOwotICAgIGRhdGFMb2dMbklmKHZlcmJvc2UgJiYgc3Rh
dGUgIT0gbV9zdGF0ZSwgIm1vdmluZyB0byBzdGF0ZTogIiwgc3RhdGVTdHJpbmcoc3RhdGUpLCAi
IGZyb20gc3RhdGU6ICIsIHN0YXRlU3RyaW5nKG1fc3RhdGUpKTsKKyAgICBkYXRhTG9nTG5JZihX
YXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlICYmIHN0YXRlICE9IG1fc3RhdGUsICJtb3Zpbmcg
dG8gc3RhdGU6ICIsIHN0YXRlU3RyaW5nKHN0YXRlKSwgIiBmcm9tIHN0YXRlOiAiLCBzdGF0ZVN0
cmluZyhtX3N0YXRlKSk7CiAgICAgbV9zdGF0ZSA9IHN0YXRlOwogfQogCkBAIC05NSw5ICs5Nyw5
IEBAIGJvb2wgQkJRUGxhbjo6cGFyc2VBbmRWYWxpZGF0ZU1vZHVsZSgpCiAgICAgaWYgKG1fc3Rh
dGUgIT0gU3RhdGU6OkluaXRpYWwpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgZGF0YUxv
Z0xuSWYodmVyYm9zZSwgInN0YXJ0aW5nIHZhbGlkYXRpb24iKTsKKyAgICBkYXRhTG9nTG5JZihX
YXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlLCAic3RhcnRpbmcgdmFsaWRhdGlvbiIpOwogICAg
IE1vbm90b25pY1RpbWUgc3RhcnRUaW1lOwotICAgIGlmICh2ZXJib3NlIHx8IE9wdGlvbnM6OnJl
cG9ydENvbXBpbGVUaW1lcygpKQorICAgIGlmIChXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3Nl
IHx8IE9wdGlvbnM6OnJlcG9ydENvbXBpbGVUaW1lcygpKQogICAgICAgICBzdGFydFRpbWUgPSBN
b25vdG9uaWNUaW1lOjpub3coKTsKIAogICAgIHsKQEAgLTExMSw3ICsxMTMsNyBAQCBib29sIEJC
UVBsYW46OnBhcnNlQW5kVmFsaWRhdGVNb2R1bGUoKQogCiAgICAgY29uc3QgYXV0byYgZnVuY3Rp
b25Mb2NhdGlvbnMgPSBtX21vZHVsZUluZm9ybWF0aW9uLT5mdW5jdGlvbkxvY2F0aW9uSW5CaW5h
cnk7CiAgICAgZm9yICh1bnNpZ25lZCBmdW5jdGlvbkluZGV4ID0gMDsgZnVuY3Rpb25JbmRleCA8
IGZ1bmN0aW9uTG9jYXRpb25zLnNpemUoKTsgKytmdW5jdGlvbkluZGV4KSB7Ci0gICAgICAgIGRh
dGFMb2dMbklmKHZlcmJvc2UsICJQcm9jZXNzaW5nIGZ1bmN0aW9uIHN0YXJ0aW5nIGF0OiAiLCBm
dW5jdGlvbkxvY2F0aW9uc1tmdW5jdGlvbkluZGV4XS5zdGFydCwgIiBhbmQgZW5kaW5nIGF0OiAi
LCBmdW5jdGlvbkxvY2F0aW9uc1tmdW5jdGlvbkluZGV4XS5lbmQpOworICAgICAgICBkYXRhTG9n
TG5JZihXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlLCAiUHJvY2Vzc2luZyBmdW5jdGlvbiBz
dGFydGluZyBhdDogIiwgZnVuY3Rpb25Mb2NhdGlvbnNbZnVuY3Rpb25JbmRleF0uc3RhcnQsICIg
YW5kIGVuZGluZyBhdDogIiwgZnVuY3Rpb25Mb2NhdGlvbnNbZnVuY3Rpb25JbmRleF0uZW5kKTsK
ICAgICAgICAgY29uc3QgdWludDhfdCogZnVuY3Rpb25TdGFydCA9IG1fc291cmNlICsgZnVuY3Rp
b25Mb2NhdGlvbnNbZnVuY3Rpb25JbmRleF0uc3RhcnQ7CiAgICAgICAgIHNpemVfdCBmdW5jdGlv
bkxlbmd0aCA9IGZ1bmN0aW9uTG9jYXRpb25zW2Z1bmN0aW9uSW5kZXhdLmVuZCAtIGZ1bmN0aW9u
TG9jYXRpb25zW2Z1bmN0aW9uSW5kZXhdLnN0YXJ0OwogICAgICAgICBBU1NFUlQoZnVuY3Rpb25M
ZW5ndGggPD0gbV9zb3VyY2VMZW5ndGgpOwpAQCAtMTIwLDcgKzEyMiw3IEBAIGJvb2wgQkJRUGxh
bjo6cGFyc2VBbmRWYWxpZGF0ZU1vZHVsZSgpCiAKICAgICAgICAgYXV0byB2YWxpZGF0aW9uUmVz
dWx0ID0gdmFsaWRhdGVGdW5jdGlvbihmdW5jdGlvblN0YXJ0LCBmdW5jdGlvbkxlbmd0aCwgc2ln
bmF0dXJlLCBtX21vZHVsZUluZm9ybWF0aW9uLmdldCgpKTsKICAgICAgICAgaWYgKCF2YWxpZGF0
aW9uUmVzdWx0KSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgaWYg
KFdhc21CQlFQbGFuSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZnVuY3Rpb25MZW5ndGg7ICsraSkKICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZyhSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uU3Rh
cnRbaV0pKSwgIiwgIik7CiAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCk7CkBAIC0xMzAsNyAr
MTMyLDcgQEAgYm9vbCBCQlFQbGFuOjpwYXJzZUFuZFZhbGlkYXRlTW9kdWxlKCkKICAgICAgICAg
fQogICAgIH0KIAotICAgIGlmICh2ZXJib3NlIHx8IE9wdGlvbnM6OnJlcG9ydENvbXBpbGVUaW1l
cygpKQorICAgIGlmIChXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlIHx8IE9wdGlvbnM6OnJl
cG9ydENvbXBpbGVUaW1lcygpKQogICAgICAgICBkYXRhTG9nTG4oIlRvb2sgIiwgKE1vbm90b25p
Y1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lKS5taWNyb3NlY29uZHMoKSwgIiB1cyB0byB2YWxpZGF0
ZSBtb2R1bGUiKTsKIAogICAgIG1vdmVUb1N0YXRlKFN0YXRlOjpWYWxpZGF0ZWQpOwpAQCAtMTQy
LDcgKzE0NCw3IEBAIGJvb2wgQkJRUGxhbjo6cGFyc2VBbmRWYWxpZGF0ZU1vZHVsZSgpCiB2b2lk
IEJCUVBsYW46OnByZXBhcmUoKQogewogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpWYWxp
ZGF0ZWQpOwotICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJTdGFydGluZyBwcmVwYXJhdGlvbiIp
OworICAgIGRhdGFMb2dMbklmKFdhc21CQlFQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJTdGFydGlu
ZyBwcmVwYXJhdGlvbiIpOwogCiAgICAgYXV0byB0cnlSZXNlcnZlQ2FwYWNpdHkgPSBbdGhpc10g
KGF1dG8mIHZlY3Rvciwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIHdoYXQpIHsKICAgICAgICAg
aWYgKFVOTElLRUxZKCF2ZWN0b3IudHJ5UmVzZXJ2ZUNhcGFjaXR5KHNpemUpKSkgewpAQCAtMTc0
LDcgKzE3Niw3IEBAIHZvaWQgQkJRUGxhbjo6cHJlcGFyZSgpCiAgICAgICAgIGlmIChpbXBvcnQt
PmtpbmQgIT0gRXh0ZXJuYWxLaW5kOjpGdW5jdGlvbikKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB1bnNpZ25lZCBpbXBvcnRGdW5jdGlvbkluZGV4ID0gbV93YXNtVG9XYXNtRXhpdFN0
dWJzLnNpemUoKTsKLSAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIlByb2Nlc3NpbmcgaW1w
b3J0IGZ1bmN0aW9uIG51bWJlciAiLCBpbXBvcnRGdW5jdGlvbkluZGV4LCAiOiAiLCBtYWtlU3Ry
aW5nKGltcG9ydC0+bW9kdWxlKSwgIjogIiwgbWFrZVN0cmluZyhpbXBvcnQtPmZpZWxkKSk7Cisg
ICAgICAgIGRhdGFMb2dMbklmKFdhc21CQlFQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJQcm9jZXNz
aW5nIGltcG9ydCBmdW5jdGlvbiBudW1iZXIgIiwgaW1wb3J0RnVuY3Rpb25JbmRleCwgIjogIiwg
bWFrZVN0cmluZyhpbXBvcnQtPm1vZHVsZSksICI6ICIsIG1ha2VTdHJpbmcoaW1wb3J0LT5maWVs
ZCkpOwogICAgICAgICBhdXRvIGJpbmRpbmcgPSB3YXNtVG9XYXNtKGltcG9ydEZ1bmN0aW9uSW5k
ZXgpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIWJpbmRpbmcpKSB7CiAgICAgICAgICAgICBzd2l0
Y2ggKGJpbmRpbmcuZXJyb3IoKSkgewpAQCAtMjMwLDcgKzIzMiw3IEBAIHB1YmxpYzoKIHZvaWQg
QkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9ucyhDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiB7CiAg
ICAgQVNTRVJUKG1fc3RhdGUgPj0gU3RhdGU6OlByZXBhcmVkKTsKLSAgICBkYXRhTG9nTG5JZih2
ZXJib3NlLCAiU3RhcnRpbmcgY29tcGlsYXRpb24iKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtQkJR
UGxhbkludGVybmFsOjp2ZXJib3NlLCAiU3RhcnRpbmcgY29tcGlsYXRpb24iKTsKIAogICAgIGlm
ICghaGFzV29yaygpKQogICAgICAgICByZXR1cm47CkBAIC0yOTQsNyArMjk2LDcgQEAgdm9pZCBC
QlFQbGFuOjpjb21waWxlRnVuY3Rpb25zKENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKIHZvaWQg
QkJRUGxhbjo6Y29tcGxldGUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlcikKIHsKICAgICBB
U1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6Q29tcGlsZWQgfHwgbV9jdXJyZW50SW5kZXggPj0gbV9t
b2R1bGVJbmZvcm1hdGlvbi0+ZnVuY3Rpb25Mb2NhdGlvbkluQmluYXJ5LnNpemUoKSk7Ci0gICAg
ZGF0YUxvZ0xuSWYodmVyYm9zZSwgIlN0YXJ0aW5nIENvbXBsZXRpb24iKTsKKyAgICBkYXRhTG9n
TG5JZihXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlLCAiU3RhcnRpbmcgQ29tcGxldGlvbiIp
OwogCiAgICAgaWYgKCFmYWlsZWQoKSAmJiBtX3N0YXRlID09IFN0YXRlOjpDb21waWxlZCkgewog
ICAgICAgICBmb3IgKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXggPSAwOyBmdW5jdGlvbkluZGV4IDwg
bV9tb2R1bGVJbmZvcm1hdGlvbi0+ZnVuY3Rpb25Mb2NhdGlvbkluQmluYXJ5LnNpemUoKTsgZnVu
Y3Rpb25JbmRleCsrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCmluZGV4IGU4NmZkNDc5OTBlODg4OGQyNmZkZGZhNzM5
NGU0NzZhYmNjODAxODQuLjJiMWQ4MjhlMjdjNzUzNTBmZGQ5NGZjMTk1Y2U2NGQ3YzFlYzVhNjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhh
bmRsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25h
bEhhbmRsZXIuY3BwCkBAIC00Miw4ICs0MiwxMCBAQAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBXYXNtIHsKIAogbmFtZXNwYWNlIHsKK25hbWVzcGFjZSBXYXNtRmF1bHRTaWduYWxIYW5kbGVy
SW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogfQorfQogCiBz
dGF0aWMgU3RhdGljTG9jayBjb2RlTG9jYXRpb25zTG9jazsKIHN0YXRpYyBMYXp5TmV2ZXJEZXN0
cm95ZWQ8SGFzaFNldDxzdGQ6OnR1cGxlPHZvaWQqLCB2b2lkKj4+PiBjb2RlTG9jYXRpb25zOyAv
LyAoc3RhcnQsIGVuZCkKQEAgLTU1LDMzICs1NywzMyBAQCBzdGF0aWMgYm9vbCBmYXN0SGFuZGxl
ckluc3RhbGxlZCB7IGZhbHNlIH07CiBzdGF0aWMgU2lnbmFsQWN0aW9uIHRyYXBIYW5kbGVyKFNp
Z25hbCwgU2lnSW5mbyYgc2lnSW5mbywgUGxhdGZvcm1SZWdpc3RlcnMmIGNvbnRleHQpCiB7CiAg
ICAgdm9pZCogZmF1bHRpbmdJbnN0cnVjdGlvbiA9IE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlv
blBvaW50ZXIoY29udGV4dCk7Ci0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgInN0YXJ0aW5nIGhh
bmRsZXIgZm9yIGZhdWx0IGF0OiAiLCBSYXdQb2ludGVyKGZhdWx0aW5nSW5zdHJ1Y3Rpb24pKTsK
KyAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2Us
ICJzdGFydGluZyBoYW5kbGVyIGZvciBmYXVsdCBhdDogIiwgUmF3UG9pbnRlcihmYXVsdGluZ0lu
c3RydWN0aW9uKSk7CiAKLSAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiSklUIG1lbW9yeSBzdGFy
dDogIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihzdGFydE9mRml4ZWRFeGVj
dXRhYmxlTWVtb3J5UG9vbCkpLCAiIGVuZDogIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0
PHZvaWQqPihlbmRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2wpKSk7CisgICAgZGF0YUxvZ0xu
SWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAiSklUIG1lbW9yeSBz
dGFydDogIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihzdGFydE9mRml4ZWRF
eGVjdXRhYmxlTWVtb3J5UG9vbCkpLCAiIGVuZDogIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9j
YXN0PHZvaWQqPihlbmRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2wpKSk7CiAgICAgLy8gRmly
c3Qgd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgYXJlIGluIEpJVCBjb2RlIGJlZm9yZSB3ZSBjYW4g
YXF1aXJlIGFueSBsb2Nrcy4gT3RoZXJ3aXNlLAogICAgIC8vIHdlIG1pZ2h0IGhhdmUgY3Jhc2hl
ZCBpbiBjb2RlIHRoYXQgaXMgYWxyZWFkeSBob2xkaW5nIG9uZSBvZiB0aGUgbG9ja3Mgd2Ugd2Fu
dCB0byBhcXVpcmUuCiAgICAgaWYgKGlzSklUUEMoZmF1bHRpbmdJbnN0cnVjdGlvbikpIHsKICAg
ICAgICAgYm9vbCBmYXVsdGVkSW5BY3RpdmVGYXN0TWVtb3J5ID0gZmFsc2U7CiAgICAgICAgIHsK
ICAgICAgICAgICAgIHZvaWQqIGZhdWx0aW5nQWRkcmVzcyA9IHNpZ0luZm8uZmF1bHRpbmdBZGRy
ZXNzOwotICAgICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgImNoZWNraW5nIGZhdWx0aW5n
IGFkZHJlc3M6ICIsIFJhd1BvaW50ZXIoZmF1bHRpbmdBZGRyZXNzKSwgIiBpcyBpbiBhbiBhY3Rp
dmUgZmFzdCBtZW1vcnkiKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25h
bEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImNoZWNraW5nIGZhdWx0aW5nIGFkZHJlc3M6ICIs
IFJhd1BvaW50ZXIoZmF1bHRpbmdBZGRyZXNzKSwgIiBpcyBpbiBhbiBhY3RpdmUgZmFzdCBtZW1v
cnkiKTsKICAgICAgICAgICAgIGZhdWx0ZWRJbkFjdGl2ZUZhc3RNZW1vcnkgPSBXYXNtOjpNZW1v
cnk6OmFkZHJlc3NJc0luQWN0aXZlRmFzdE1lbW9yeShmYXVsdGluZ0FkZHJlc3MpOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChmYXVsdGVkSW5BY3RpdmVGYXN0TWVtb3J5KSB7Ci0gICAgICAgICAg
ICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiZm91bmQgYWN0aXZlIGZhc3QgbWVtb3J5IGZvciBmYXVs
dGluZyBhZGRyZXNzIik7CisgICAgICAgICAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxI
YW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJmb3VuZCBhY3RpdmUgZmFzdCBtZW1vcnkgZm9yIGZh
dWx0aW5nIGFkZHJlc3MiKTsKICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGNvZGVMb2Nh
dGlvbnNMb2NrKTsKICAgICAgICAgICAgIGZvciAoYXV0byByYW5nZSA6IGNvZGVMb2NhdGlvbnMu
Z2V0KCkpIHsKICAgICAgICAgICAgICAgICB2b2lkKiBzdGFydDsKICAgICAgICAgICAgICAgICB2
b2lkKiBlbmQ7CiAgICAgICAgICAgICAgICAgc3RkOjp0aWUoc3RhcnQsIGVuZCkgPSByYW5nZTsK
LSAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiZnVuY3Rpb24gc3RhcnQ6ICIs
IFJhd1BvaW50ZXIoc3RhcnQpLCAiIGVuZDogIiwgUmF3UG9pbnRlcihlbmQpKTsKKyAgICAgICAg
ICAgICAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJv
c2UsICJmdW5jdGlvbiBzdGFydDogIiwgUmF3UG9pbnRlcihzdGFydCksICIgZW5kOiAiLCBSYXdQ
b2ludGVyKGVuZCkpOwogICAgICAgICAgICAgICAgIGlmIChzdGFydCA8PSBmYXVsdGluZ0luc3Ry
dWN0aW9uICYmIGZhdWx0aW5nSW5zdHJ1Y3Rpb24gPCBlbmQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgImZvdW5kIG1hdGNoIik7CisgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwg
ImZvdW5kIG1hdGNoIik7CiAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBleGNlcHRpb25TdHViID0gVGh1bmtzOjpzaW5nbGV0b24oKS5leGlzdGluZ1N0dWIodGhyb3dF
eGNlcHRpb25Gcm9tV2FzbVRodW5rR2VuZXJhdG9yKTsKICAgICAgICAgICAgICAgICAgICAgLy8g
SWYgZm9yIHdoYXRldmVyIHJlYXNvbiB3ZSBkb24ndCBoYXZlIGEgc3R1YiB0aGVuIHdlIHNob3Vs
ZCBqdXN0IHRyZWF0IHRoaXMgbGlrZSBhIHJlZ3VsYXIgY3Jhc2guCiAgICAgICAgICAgICAgICAg
ICAgIGlmICghZXhjZXB0aW9uU3R1YikKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiZm91bmQgc3R1YjogIiwg
UmF3UG9pbnRlcihleGNlcHRpb25TdHViLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRl
cm5hbDo6dmVyYm9zZSwgImZvdW5kIHN0dWI6ICIsIFJhd1BvaW50ZXIoZXhjZXB0aW9uU3R1Yi5j
b2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAgICAgICAgICAgICAgICBNYWNoaW5l
Q29udGV4dDo6YXJndW1lbnRQb2ludGVyPDE+KGNvbnRleHQpID0gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNNZW1vcnlBY2Nlc3MpOwogICAgICAgICAg
ICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRleHQpID0g
ZXhjZXB0aW9uU3R1Yi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIFNpZ25hbEFjdGlvbjo6SGFuZGxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21PTUdQbGFuLmNwcAppbmRleCA1OTE4ZjkyYmI4MGJiZGVlNTQwMTA0NzEzMWQ4
MzJiZDE5NmJmNzViLi43NGNmNjUzNDk3NTI1Y2UyNjFkNDBjNzJjNDYyM2FjZDgwZjY1Y2U1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCkBAIC00Nyw3ICs0
Nyw5IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKK25hbWVzcGFjZSBX
YXNtT01HUGxhbkludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsK
K30KIAogT01HUGxhbjo6T01HUGxhbihSZWY8TW9kdWxlPiBtb2R1bGUsIHVpbnQzMl90IGZ1bmN0
aW9uSW5kZXgsIE1lbW9yeU1vZGUgbW9kZSwgQ29tcGxldGlvblRhc2smJiB0YXNrKQogICAgIDog
QmFzZShudWxscHRyLCBtYWtlUmVmKGNvbnN0X2Nhc3Q8TW9kdWxlSW5mb3JtYXRpb24mPihtb2R1
bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkpKSwgV1RGTW92ZSh0YXNrKSkKQEAgLTU4LDcgKzYwLDcg
QEAgT01HUGxhbjo6T01HUGxhbihSZWY8TW9kdWxlPiBtb2R1bGUsIHVpbnQzMl90IGZ1bmN0aW9u
SW5kZXgsIE1lbW9yeU1vZGUgbW9kZSwgQ28KICAgICBzZXRNb2RlKG1vZGUpOwogICAgIEFTU0VS
VChtX2NvZGVCbG9jay0+cnVubmFibGUoKSk7CiAgICAgQVNTRVJUKG1fY29kZUJsb2NrLnB0cigp
ID09IG1fbW9kdWxlLT5jb2RlQmxvY2tGb3IobV9tb2RlKSk7Ci0gICAgZGF0YUxvZ0xuSWYodmVy
Ym9zZSwgIlN0YXJ0aW5nIE9NRyBwbGFuIGZvciAiLCBmdW5jdGlvbkluZGV4LCAiIG9mIG1vZHVs
ZTogIiwgUmF3UG9pbnRlcigmbV9tb2R1bGUuZ2V0KCkpKTsKKyAgICBkYXRhTG9nTG5JZihXYXNt
T01HUGxhbkludGVybmFsOjp2ZXJib3NlLCAiU3RhcnRpbmcgT01HIHBsYW4gZm9yICIsIGZ1bmN0
aW9uSW5kZXgsICIgb2YgbW9kdWxlOiAiLCBSYXdQb2ludGVyKCZtX21vZHVsZS5nZXQoKSkpOwog
fQogCiB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGlsYXRpb25FZmZvcnQpCkBAIC0xMzgsOSArMTQw
LDkgQEAgdm9pZCBPTUdQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogCiAgICAgICAgIGF1
dG8gcmVwYXRjaENhbGxzID0gWyZdIChjb25zdCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2Fs
bD4mICBjYWxsc2l0ZXMpIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgY2FsbCA6IGNhbGxzaXRl
cykgewotICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJDb25zaWRlcmluZyBy
ZXBhdGNoaW5nIGNhbGwgYXQ6ICIsIFJhd1BvaW50ZXIoY2FsbC5jYWxsTG9jYXRpb24uZGF0YUxv
Y2F0aW9uKCkpLCAiIHRoYXQgdGFyZ2V0cyAiLCBjYWxsLmZ1bmN0aW9uSW5kZXhTcGFjZSk7Cisg
ICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbU9NR1BsYW5JbnRlcm5hbDo6dmVyYm9zZSwg
IkNvbnNpZGVyaW5nIHJlcGF0Y2hpbmcgY2FsbCBhdDogIiwgUmF3UG9pbnRlcihjYWxsLmNhbGxM
b2NhdGlvbi5kYXRhTG9jYXRpb24oKSksICIgdGhhdCB0YXJnZXRzICIsIGNhbGwuZnVuY3Rpb25J
bmRleFNwYWNlKTsKICAgICAgICAgICAgICAgICBpZiAoY2FsbC5mdW5jdGlvbkluZGV4U3BhY2Ug
PT0gZnVuY3Rpb25JbmRleFNwYWNlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklm
KHZlcmJvc2UsICJSZXBhdGNoaW5nIGNhbGwgYXQ6ICIsIFJhd1BvaW50ZXIoY2FsbC5jYWxsTG9j
YXRpb24uZGF0YUxvY2F0aW9uKCkpLCAiIHRvICIsIFJhd1BvaW50ZXIoZW50cnlwb2ludCkpOwor
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihXYXNtT01HUGxhbkludGVybmFsOjp2ZXJi
b3NlLCAiUmVwYXRjaGluZyBjYWxsIGF0OiAiLCBSYXdQb2ludGVyKGNhbGwuY2FsbExvY2F0aW9u
LmRhdGFMb2NhdGlvbigpKSwgIiB0byAiLCBSYXdQb2ludGVyKGVudHJ5cG9pbnQpKTsKICAgICAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hOZWFyQ2FsbChjYWxsLmNhbGxM
b2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoZW50cnlwb2ludCkpOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KQEAgLTE1Niw3ICsxNTgsNyBAQCB2b2lkIE9NR1BsYW46Ondvcmso
Q29tcGlsYXRpb25FZmZvcnQpCiAgICAgICAgIHJlcGF0Y2hDYWxscyh1bmxpbmtlZENhbGxzKTsK
ICAgICB9CiAKLSAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiRmluaXNoZWQgd2l0aCB0aWVyIHVw
IGNvdW50IGF0OiAiLCBtX2NvZGVCbG9jay0+dGllclVwQ291bnQobV9mdW5jdGlvbkluZGV4KS5j
b3VudCgpKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtT01HUGxhbkludGVybmFsOjp2ZXJib3NlLCAi
RmluaXNoZWQgd2l0aCB0aWVyIHVwIGNvdW50IGF0OiAiLCBtX2NvZGVCbG9jay0+dGllclVwQ291
bnQobV9mdW5jdGlvbkluZGV4KS5jb3VudCgpKTsKICAgICBjb21wbGV0ZShob2xkTG9jayhtX2xv
Y2spKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBs
YW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwCmluZGV4IDE0
ODNhYzc0ODkyYjJmMTY0MmE2Y2IzNjBiYzY0OTg3YmNmNWYxMWYuLmJhMjdjZjlmOTZmNTU1MGYy
ZjQ4MTJlMDkxMjRiNWJmODEwMDVhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21QbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
UGxhbi5jcHAKQEAgLTQ3LDcgKzQ3LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBX
YXNtIHsKIAorbmFtZXNwYWNlIFdhc21QbGFuSW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wg
dmVyYm9zZSA9IGZhbHNlOworfQogCiBQbGFuOjpQbGFuKFZNKiB2bSwgUmVmPE1vZHVsZUluZm9y
bWF0aW9uPiBpbmZvLCBDb21wbGV0aW9uVGFzayYmIHRhc2spCiAgICAgOiBtX21vZHVsZUluZm9y
bWF0aW9uKFdURk1vdmUoaW5mbykpCkBAIC0xMjgsNyArMTMwLDcgQEAgYm9vbCBQbGFuOjp0cnlS
ZW1vdmVWTUFuZENhbmNlbElmTGFzdChWTSYgdm0pCiAKIHZvaWQgUGxhbjo6ZmFpbChjb25zdCBB
YnN0cmFjdExvY2tlciYgbG9ja2VyLCBTdHJpbmcmJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgZGF0
YUxvZ0xuSWYodmVyYm9zZSwgImZhaWxpbmcgd2l0aCBtZXNzYWdlOiAiLCBlcnJvck1lc3NhZ2Up
OworICAgIGRhdGFMb2dMbklmKFdhc21QbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJmYWlsaW5nIHdp
dGggbWVzc2FnZTogIiwgZXJyb3JNZXNzYWdlKTsKICAgICBtX2Vycm9yTWVzc2FnZSA9IFdURk1v
dmUoZXJyb3JNZXNzYWdlKTsKICAgICBjb21wbGV0ZShsb2NrZXIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAppbmRleCBiMjI5OGQ2NWNiYWI4ZDUw
YmU4N2UwMjJkYTQzYmI2MjJjNThmZTdiLi44YjYwMGVkMzg2NDQzMTI4ODJmMTNjNWY0OWZjOGZk
OWU2NzkyOTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2ln
bmF0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJl
LmNwcApAQCAtMzYsNyArMzYsOSBAQAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsK
IAogbmFtZXNwYWNlIHsKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIFdh
c21TaWduYXR1cmVJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7
Cit9CiB9CiAKIFN0cmluZyBTaWduYXR1cmU6OnRvU3RyaW5nKCkgY29uc3QKQEAgLTEwMyw3ICsx
MDUsNyBAQCBzdGQ6OnBhaXI8U2lnbmF0dXJlSW5kZXgsIFJlZjxTaWduYXR1cmU+PiBTaWduYXR1
cmVJbmZvcm1hdGlvbjo6YWRvcHQoUmVmPFNpZ25hdAogICAgICAgICArK2luZm8ubV9uZXh0SW5k
ZXg7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZm8ubV9uZXh0SW5kZXggPiBuZXh0VmFsdWUp
OyAvLyBjcmFzaCBvbiBvdmVyZmxvdy4KICAgICAgICAgQVNTRVJUKG5leHRWYWx1ZSA9PSBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlm
IChXYXNtU2lnbmF0dXJlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nTG4o
IkFkb3B0IG5ldyBzaWduYXR1cmUgIiwgc2lnbmF0dXJlLmdldCgpLCAiIHdpdGggaW5kZXggIiwg
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSwgIiBoYXNoOiAiLCBzaWduYXR1cmUtPmhhc2goKSk7
CiAKICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBpbmZvLm1faW5kZXhNYXAuYWRkKG5leHRWYWx1
ZSwgc2lnbmF0dXJlLmNvcHlSZWYoKSk7CkBAIC0xMTEsNyArMTEzLDcgQEAgc3RkOjpwYWlyPFNp
Z25hdHVyZUluZGV4LCBSZWY8U2lnbmF0dXJlPj4gU2lnbmF0dXJlSW5mb3JtYXRpb246OmFkb3B0
KFJlZjxTaWduYXQKICAgICAgICAgQVNTRVJUKGluZm8ubV9pbmRleE1hcC5zaXplKCkgPT0gaW5m
by5tX3NpZ25hdHVyZU1hcC5zaXplKCkpOwogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIo
bmV4dFZhbHVlLCBXVEZNb3ZlKHNpZ25hdHVyZSkpOwogICAgIH0KLSAgICBpZiAodmVyYm9zZSkK
KyAgICBpZiAoV2FzbVNpZ25hdHVyZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9n
TG4oIkV4aXN0aW5nIHNpZ25hdHVyZSAiLCBzaWduYXR1cmUuZ2V0KCksICIgd2l0aCBpbmRleCAi
LCBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLCAiIGhhc2g6ICIsIHNpZ25hdHVyZS0+aGFzaCgp
KTsKICAgICBBU1NFUlQoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSAhPSBTaWduYXR1cmU6Omlu
dmFsaWRJbmRleCk7CiAgICAgQVNTRVJUKGluZm8ubV9pbmRleE1hcC5jb250YWlucyhhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtV29ya2xpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdv
cmtsaXN0LmNwcAppbmRleCA3NmE4N2FjMWI0NzM2ZjNjZjM3YzM1MzlkYmM5NjFmNjc4NmEwMTM0
Li45YzViNjg0NGM0NmI3NGYwMjZlMGQ4NTZiNDE5Y2U5NzVjNjAwOTJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKQEAgLTMzLDcgKzMzLDkgQEAKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAorbmFtZXNwYWNlIFdhc21Xb3JrbGlz
dEludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogY29u
c3QgY2hhciogV29ya2xpc3Q6OnByaW9yaXR5U3RyaW5nKFByaW9yaXR5IHByaW9yaXR5KQogewpA
QCAtMTQ0LDcgKzE0Niw3IEBAIHZvaWQgV29ya2xpc3Q6OmVucXVldWUoUmVmPFBsYW4+IHBsYW4p
CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGVsZW1lbnQsIGVsZW1lbnQucGxhbi5nZXQoKSAh
PSAmcGxhbi5nZXQoKSk7CiAgICAgfQogCi0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIkVucXVl
dWluZyBwbGFuIik7CisgICAgZGF0YUxvZ0xuSWYoV2FzbVdvcmtsaXN0SW50ZXJuYWw6OnZlcmJv
c2UsICJFbnF1ZXVpbmcgcGxhbiIpOwogICAgIG1fcXVldWUuZW5xdWV1ZSh7IFByaW9yaXR5OjpQ
cmVwYXJhdGlvbiwgbmV4dFRpY2tldCgpLCAgV1RGTW92ZShwbGFuKSB9KTsKICAgICBtX3BsYW5F
bnF1ZXVlZC0+bm90aWZ5T25lKGxvY2tlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2dl
bmVyYXRlLXVuaWZpZWQtc291cmNlLWJ1bmRsZXMucmIgYi9Tb3VyY2UvV1RGL2dlbmVyYXRlLXVu
aWZpZWQtc291cmNlLWJ1bmRsZXMucmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg1ODJlMjU2MjM5MWY2ZGRlMjAz
NGFlMTQ4NDMwYmY5ODVkNTUwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvZ2VuZXJh
dGUtdW5pZmllZC1zb3VyY2UtYnVuZGxlcy5yYgpAQCAtMCwwICsxLDE1MCBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAnZmlsZXV0aWxzJwor
cmVxdWlyZSAncGF0aG5hbWUnCityZXF1aXJlICdnZXRvcHRsb25nJworCitkZWYgdXNhZ2UKKyAg
ICBwdXRzICItLWhlbHAgICAgICAgICAgICAgICAgICAgICAgICAgICgtaCkgUHJpbnQgdGhpcyBt
ZXNzYWdlIgorICAgIHB1dHMgIi0tZGVyaXZlZC1zb3VyY2VzLXBhdGggICAgICAgICAgKC1wKSBQ
YXRoIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHVuaWZpZWQgc291cmNlIGZpbGVzIHNob3Vs
ZCBiZSBwbGFjZWQuIFRoaXMgYXJndW1lbnQgaXMgcmVxdWlyZWQuIgorICAgIHB1dHMgIi0tdmVy
Ym9zZSAgICAgICAgICAgICAgICAgICAgICAgKC12KSBBZGRzIGV4dHJhIGxvZ2dpbmcgdG8gc3Rk
ZXJyLiIKKyAgICBleGl0IDEKK2VuZAorCitNQVhfQlVORExFX1NJWkUgPSA4CiskZGVyaXZlZFNv
dXJjZXNQYXRoID0gbmlsCiskdmVyYm9zZSA9IGZhbHNlCisjIFBpY2sgYW4gdW5yZWFzb25hYmxl
IG51bWJlciBiZWNhdXNlLi4uIHdoYXRldmVyLgorIyBGSVhNRTogVXNlIHRoZXNlIHdoZW4gWGNv
ZGUgdXNlcyB1bmlmaWVkIHNvdXJjZXMuCiskbWF4Q3BwQnVuZGxlQ291bnQgPSAxMDAwMDAKKyRt
YXhDQnVuZGxlQ291bnQgPSAxMDAwMDAKKyRtYXhPYmpDQnVuZGxlQ291bnQgPSAxMDAwMDAKKwor
R2V0b3B0TG9uZy5uZXcoWyctLWhlbHAnLCAnLWgnLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0s
CisgICAgICAgICAgICAgICBbJy0tZGVyaXZlZC1zb3VyY2VzLXBhdGgnLCAnLXAnLCBHZXRvcHRM
b25nOjpSRVFVSVJFRF9BUkdVTUVOVF0sCisgICAgICAgICAgICAgICBbJy0tdmVyYm9zZScsICct
dicsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKKyAgICAgICAgICAgICAgIFsnLS1tYXgtY3Bw
LWJ1bmRsZS1jb3VudCcsIEdldG9wdExvbmc6OlJFUVVJUkVEX0FSR1VNRU5UXSwKKyAgICAgICAg
ICAgICAgIFsnLS1tYXgtYy1idW5kbGUtY291bnQnLCBHZXRvcHRMb25nOjpSRVFVSVJFRF9BUkdV
TUVOVF0sCisgICAgICAgICAgICAgICBbJy0tbWF4LW9iai1jLWJ1bmRsZS1jb3VudCcsIEdldG9w
dExvbmc6OlJFUVVJUkVEX0FSR1VNRU5UXSkuZWFjaCB7CisgICAgfCBvcHQsIGFyZyB8CisgICAg
Y2FzZSBvcHQKKyAgICB3aGVuICctLWhlbHAnCisgICAgICAgIHVzYWdlCisgICAgd2hlbiAnLS1k
ZXJpdmVkLXNvdXJjZXMtcGF0aCcKKyAgICAgICAgJGRlcml2ZWRTb3VyY2VzUGF0aCA9IFBhdGhu
YW1lLm5ldyhhcmcpCisgICAgd2hlbiAnLS12ZXJib3NlJworICAgICAgICAkdmVyYm9zZSA9IHRy
dWUKKyAgICB3aGVuICctLW1heC1jcHAtYnVuZGxlLWNvdW50JworICAgICAgICAkbWF4Q3BwQnVu
ZGxlQ291bnQgPSBhcmcKKyAgICB3aGVuICctLW1heC1jLWJ1bmRsZS1jb3VudCcKKyAgICAgICAg
JG1heENCdW5kbGVDb3VudCA9IGFyZworICAgIHdoZW4gJy0tbWF4LW9iai1jLWJ1bmRsZS1jb3Vu
dCcKKyAgICAgICAgJG1heE9iakNCdW5kbGVDb3VudCA9IGFyZworICAgIGVuZAorfQorCit1c2Fn
ZSB1bmxlc3MgJGRlcml2ZWRTb3VyY2VzUGF0aAorCitkZWYgbG9nKHRleHQpCisgICAgJHN0ZGVy
ci5wdXRzIHRleHQgaWYgJHZlcmJvc2UKK2VuZAorCiskZ2VuZXJhdGVkU291cmNlcyA9IFtdCisK
K2NsYXNzIEJ1bmRsZU1hbmFnZXIKKyAgICBhdHRyX3JlYWRlciA6YnVuZGxlQ291bnQsIDpleHRl
bnNpb24sIDpmaWxlQ291bnQsIDpjdXJyZW50QnVuZGxlRmlsZSwgOmN1cnJlbnRCdW5kbGVUZXh0
CisKKyAgICBkZWYgaW5pdGlhbGl6ZShleHRlbnNpb24pCisgICAgICAgIEBleHRlbnNpb24gPSBl
eHRlbnNpb24KKyAgICAgICAgQGZpbGVDb3VudCA9IDAKKyAgICAgICAgQGJ1bmRsZUNvdW50ID0g
MAorICAgIGVuZAorCisgICAgZGVmIGZsdXNoKCkKKyAgICAgICAgIyBObyBwb2ludCBpbiB3YXN0
aW5nIGJ1bmRsZXMKKyAgICAgICAgcmV0dXJuIGlmIEBjdXJyZW50QnVuZGxlVGV4dCA9PSAiIgor
ICAgICAgICBpZiAoQGN1cnJlbnRCdW5kbGVGaWxlKQorICAgICAgICAgICAgbG9nKCJ3cml0aW5n
IGJ1bmRsZSAje0BjdXJyZW50QnVuZGxlRmlsZX0gd2l0aDogXG4je0BjdXJyZW50QnVuZGxlVGV4
dH0iKQorICAgICAgICAgICAgSU86OndyaXRlKEBjdXJyZW50QnVuZGxlRmlsZSwgQGN1cnJlbnRC
dW5kbGVUZXh0KQorICAgICAgICAgICAgJGdlbmVyYXRlZFNvdXJjZXMgPDwgQGN1cnJlbnRCdW5k
bGVGaWxlCisgICAgICAgICAgICBAYnVuZGxlQ291bnQgKz0gMQorICAgICAgICBlbmQKKyAgICAg
ICAgQGN1cnJlbnRCdW5kbGVGaWxlID0gJGRlcml2ZWRTb3VyY2VzUGF0aCArICJVbmlmaWVkU291
cmNlI3soJGdlbmVyYXRlZFNvdXJjZXMubGVuZ3RoICsgMSkudG9fcyArIGV4dGVuc2lvbn0iCisg
ICAgICAgIEBjdXJyZW50QnVuZGxlVGV4dCA9ICIiCisgICAgICAgIEBmaWxlQ291bnQgPSAwCisg
ICAgZW5kCisKKyAgICBkZWYgYWRkRmlsZShmaWxlKQorICAgICAgICByYWlzZSAid3JvbmcgZXh0
ZW5zaW9uOiAje2ZpbGUuZXh0bmFtZX0gZXhwZWN0ZWQgI3tAZXh0ZW5zaW9ufSIgdW5sZXNzIGZp
bGUuZXh0bmFtZSA9PSBAZXh0ZW5zaW9uCisgICAgICAgIGlmIChAZmlsZUNvdW50ICUgTUFYX0JV
TkRMRV9TSVpFID09IDApCisgICAgICAgICAgICBsb2coImZsdXNoaW5nIGJlY2F1c2UgbmV3IGJ1
bmRsZSBpcyBmdWxsICN7QGZpbGVDb3VudH0iKQorICAgICAgICAgICAgZmx1c2gKKyAgICAgICAg
ZW5kCisgICAgICAgIEBjdXJyZW50QnVuZGxlVGV4dCArPSAiI2luY2x1ZGUgXCIje2ZpbGV9XCJc
biIKKyAgICAgICAgQGZpbGVDb3VudCArPSAxCisgICAgZW5kCitlbmQKKworI0ZJWE1FOiBXZSBz
aG91bGQgZmlndXJlIG91dCBob3cgdG8gYnVuZGxlIEMgZmlsZXMuIFRoZSBsYWNrIG9mIG5hbWVz
cGFjZXMgbWFrZXMgdGhpcyBkaWZmaWN1bHQuLi4KK2NsYXNzIENGaWxlTWFuYWdlcgorICAgIGRl
ZiBmbHVzaCgpCisgICAgZW5kCisKKyAgICBkZWYgYWRkRmlsZShmaWxlKQorICAgICAgICAkZ2Vu
ZXJhdGVkU291cmNlcyA8PCBmaWxlCisgICAgZW5kCitlbmQKKworJGJ1bmRsZU1hbmFnZXJzID0g
eworICAgICIuY3BwIiA9PiBCdW5kbGVNYW5hZ2VyLm5ldygiLmNwcCIpLAorICAgICIuYyIgPT4g
Q0ZpbGVNYW5hZ2VyLm5ldygpLAorICAgICIubW0iID0+IEJ1bmRsZU1hbmFnZXIubmV3KCIubW0i
KQorfQorCiskY3VycmVudERpcmVjdG9yeSA9IFBhdGhuYW1lLm5ldyhBUkdWWzBdKS5kaXJuYW1l
CisKK0FSR1Yuc29ydC5lYWNoIHsKKyAgICB8IGZpbGUgfAorCisgICAgcGF0aCA9IFBhdGhuYW1l
Lm5ldyhmaWxlKQorICAgIGlmICgkY3VycmVudERpcmVjdG9yeSAhPSBwYXRoLmRpcm5hbWUpCisg
ICAgICAgIGxvZygiZmx1c2hpbmcgYmVjYXVzZSBuZXcgZGlybmFtZSIpCisgICAgICAgICRidW5k
bGVNYW5hZ2Vycy5lYWNoX3ZhbHVlIHsKKyAgICAgICAgICAgIHwgYnVuZGxlIHwKKyAgICAgICAg
ICAgIGJ1bmRsZS5mbHVzaAorICAgICAgICB9CisgICAgICAgICRjdXJyZW50RGlyZWN0b3J5ID0g
cGF0aC5kaXJuYW1lCisgICAgZW5kCisKKyAgICBidW5kbGUgPSAkYnVuZGxlTWFuYWdlcnNbcGF0
aC5leHRuYW1lXQorICAgIHJhaXNlICJ1bmtub3duIHNvdXJjZSBleHRlbnNpb246ICN7cGF0aC5l
eHRuYW1lfSBrbm93biBleHRlbnNpb25zOiAjeyRidW5kbGVNYW5hZ2Vycy5rZXlzLnRvX3N9IiB1
bmxlc3MgYnVuZGxlCisgICAgYnVuZGxlLmFkZEZpbGUocGF0aCkKK30KKworJGJ1bmRsZU1hbmFn
ZXJzLmVhY2hfdmFsdWUgeworICAgIHwgYnVuZGxlIHwKKyAgICBidW5kbGUuZmx1c2gKK30KKwor
cHV0cyAkZ2VuZXJhdGVkU291cmNlcy5qb2luKCI7IikgKyAiOyIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0Fzc2VydGlvbnMuaCBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaAppbmRl
eCAzYjA0Mzc5OWEwYTRlNGJkZTBhZmRmNTBjMmFkMDYwZTE1OTI5NjNhLi4xNzlmNTE4ZWQ2NGU4
YjUyZDBhM2NkN2ZkY2VkZmVjN2UzYzI3ZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9B
c3NlcnRpb25zLmgKKysrIGIvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oCkBAIC01MzUsMTgg
KzUzNSwyMiBAQCBpbmxpbmUgdm9pZCBjb21waWxlckZlbmNlRm9yQ3Jhc2goKQogI2VuZGlmCiB9
CiAKLSNpZm5kZWYgQ1JBU0hfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTl9BTkRfSU5GTworI2lm
bmRlZiBDUkFTSF9XSVRIX0lORk8KIC8vIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBhcmUgZ29pbmcg
dG8gc3R1ZmYgZGF0YSBpbnRvIHJlZ2lzdGVycyBiZWZvcmUgY3Jhc2hpbmcuIExpa2UgdGhlIGNy
YXNoV2l0aEluZm8gZnVuY3Rpb25zIGJlbG93Li4uCiAvLyBHQ0MgZG9lc24ndCBsaWtlIHRoZSAj
I19fVkFfQVJHU19fIGhlcmUgc2luY2UgdGhpcyBtYWNybyBpcyBjYWxsZWQgZnJvbSBhbm90aGVy
IG1hY3JvIHNvIHdlIGp1c3QgQ1JBU0ggaW5zdGVhZCB0aGVyZS4KICNpZiBDT01QSUxFUihDTEFO
RykgfHwgQ09NUElMRVIoTVNWQykKLSNkZWZpbmUgQ1JBU0hfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTl9BTkRfSU5GTyguLi4pIGRvIHsgXAorI2RlZmluZSBDUkFTSF9XSVRIX0lORk8oLi4uKSBk
byB7IFwKICAgICAgICAgV1RGOjppc0ludGVncmFsVHlwZShfX1ZBX0FSR1NfXyk7IFwKICAgICAg
ICAgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFwKICAgICAgICAgV1RGQ3Jhc2hXaXRoSW5mbyhf
X0xJTkVfXywgX19GSUxFX18sIFdURl9QUkVUVFlfRlVOQ1RJT04sIF9fQ09VTlRFUl9fLCAjI19f
VkFfQVJHU19fKTsgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogI2Vsc2UKLSNkZWZpbmUgQ1JBU0hf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTl9BTkRfSU5GTyguLi4pIENSQVNIKCkKKyNkZWZpbmUg
Q1JBU0hfV0lUSF9JTkZPKC4uLikgQ1JBU0goKQogI2VuZGlmCisjZW5kaWYgLy8gQ1JBU0hfV0lU
SF9JTkZPCisKKyNpZm5kZWYgQ1JBU0hfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTl9BTkRfSU5G
TworI2RlZmluZSBDUkFTSF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OX0FORF9JTkZPIENSQVNI
X1dJVEhfSU5GTwogI2VuZGlmIC8vIENSQVNIX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fQU5E
X0lORk8KIAogI2VuZGlmIC8vIF9fY3BsdXNwbHVzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320559</attachid>
            <date>2017-09-12 12:20:07 -0700</date>
            <delta_ts>2017-09-12 12:30:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176076-20170912122006.patch</filename>
            <type>text/plain</type>
            <size>230666</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxOTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YzgyZjNlZjRiYTgwZDBlY2RjODRkN2MwNjljNTk3NDdjMGUyNWMzLi5iMGNlNDFmYmRhYzdlOGY1
NWMyMjFlM2U4NjgwNDg5ZTQ3MWI0NzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzcgQEAKKzIwMTctMDktMTEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgRG8gdW5pZmllZCBzb3VyY2UgYnVpbGRzIGZvciBKU0MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjA3NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggc3dp
dGNocyB0aGUgQ01ha2UgSmF2YVNjcmlwdENvcmUgYnVpbGQgdG8gdXNlIHVuaWZpZWQgc291cmNl
cy4KKyAgICAgICAgVGhlIFhjb2RlIGJ1aWxkIHdpbGwgYmUgdXBncmFkZWQgaW4gYSBmb2xsb3cg
dXAgcGF0Y2guCisKKyAgICAgICAgTW9zdCBvZiB0aGUgc291cmNlIGNoYW5nZXMgaW4gdGhpcyBw
YXRjaCBhcmUgZml4aW5nIHN0YXRpYworICAgICAgICB2YXJpYWJsZS9mdW5jdGlvbnMgbmFtZSBj
b2xsaXNpb25zLiBUaGUgbW9zdCBjb21tb24gY29sbGlzaW9ucworICAgICAgICB3ZXJlIGZyb20g
b3VyIHVzZSBvZiAic3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSIgYW5kICJ1c2luZworICAgICAg
ICBuYW1lc3BhY2UgLi4uIi4gSSBmaXhlZCBhbGwgdGhlIHZlcmJvc2UgY2FzZXMgYW5kIGZpeGVk
IHRoZSAidXNpbmcKKyAgICAgICAgbmFtZXNwYWNlIiBpc3N1ZXMgdGhhdCBvY2N1cnJlZCB1bmRl
ciB0aGUgY3VycmVudCBidW5kbGluZworICAgICAgICBzdHJhdGVneS4gSXQncyBsaWtlbHkgdGhh
dCBtb3JlIG9mIHRoZSAidXNpbmcgbmFtZXNwYWNlIiBpc3N1ZXMKKyAgICAgICAgd2lsbCBuZWVk
IHRvIGJlIHJlc29sdmVkIGluIHRoZSBmdXR1cmUsIHBhcnRpY3VsYXJseSBpbiB0aGUgRlRMLgor
CisgICAgICAgIEkgZG9uJ3QgZXhwZWN0IGVpdGhlciBvZiB0aGVzZSBwcm9ibGVtcyB3aWxsIGFw
cGx5IHRvIG90aGVyIHBhcnRzCisgICAgICAgIG9mIHRoZSBwcm9qZWN0IG5lYXJseSBhcyBtdWNo
IGFzIGluIEpTQy4gVXNpbmcgYSB2ZXJib3NlIHZhcmlhYmxlCisgICAgICAgIGlzIGEgSlNDIGlk
aW9tIGFuZCBKU0MgdGVuZHMgdXNlIHRoZSBzYW1lLCBjYW5vbmljYWwsIGNsYXNzIG5hbWUKKyAg
ICAgICAgaW4gbXVsdGlwbGUgcGFydHMgb2YgdGhlIGVuZ2luZS4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIGIzL0IzQ2hlY2tTcGVjaWFsLmNwcDoKKyAgICAgICAgKEpT
Qzo6QjM6OkNoZWNrU3BlY2lhbDo6Zm9yRWFjaEFyZyk6CisgICAgICAgIChKU0M6OkIzOjpDaGVj
a1NwZWNpYWw6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6bnVtQjNBcmdzKTog
RGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM0R1cGxpY2F0ZVRhaWxzLmNwcDoKKyAgICAgICAgKiBi
My9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcDoKKyAgICAgICAgKiBiMy9CM0Zp
eFNTQS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpkZW1vdGVWYWx1ZXMpOgorICAgICAgICAqIGIz
L0IzRm9sZFBhdGhDb25zdGFudHMuY3BwOgorICAgICAgICAqIGIzL0IzSW5mZXJTd2l0Y2hlcy5j
cHA6CisgICAgICAgICogYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHA6Cisg
ICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Okxvd2VyVG9BaXIpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpydW4pOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzaG91bGRDb3B5UHJvcGFnYXRlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6QXJnUHJvbWlz
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21p
c2U6OnN3YXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpB
cmdQcm9taXNlOjpvcGVyYXRvcj0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpBcmdQcm9taXNlOjp+QXJnUHJvbWlzZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OnNldFRyYXBzKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6dG1wKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6b3Bl
cmF0b3IgYm9vbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6OkFyZ1Byb21pc2U6OmtpbmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjpwZWVrIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6Y29uc3VtZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6Omlu
c3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0bXApOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0bXBQcm9taXNlKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y2FuQmVJbnRlcm5h
bCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNvbW1pdElu
dGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3Jv
c3Nlc0ludGVyZmVyZW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6OnNjYWxlRm9yU2hsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6ZWZmZWN0aXZlQWRkcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okxvd2VyVG9BaXI6OmFkZHIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjp0cmFwcGluZ0luc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpsb2FkUHJvbWlzZUFueU9wY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmxvYWRQcm9taXNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6aW1tKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6TG93ZXJUb0Fpcjo6Yml0SW1tKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6Yml0SW1tNjQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjppbW1PclRtcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okxvd2VyVG9BaXI6OnRyeU9wY29kZUZvclR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpMb3dlclRvQWlyOjpvcGNvZGVGb3JUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kVW5PcCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnByZWZlclJpZ2h0Rm9yUmVzdWx0KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kQmluT3ApOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRTaGlmdCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyeUFwcGVuZFN0b3JlVW5P
cCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyeUFwcGVu
ZFN0b3JlQmluT3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
OjpjcmVhdGVTdG9yZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OnN0b3JlT3Bjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJU
b0Fpcjo6YXBwZW5kU3RvcmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjptb3ZlRm9yVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6OnJlbGF4ZWRNb3ZlRm9yVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OnByaW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6YXBwZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
TG93ZXJUb0Fpcjo6YXBwZW5kVHJhcHBpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpMb3dlclRvQWlyOjpmaW5pc2hBcHBlbmRpbmdJbnN0cnVjdGlvbnMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpuZXdCbG9jayk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnNwbGl0QmxvY2spOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjplbnN1cmVTcGVjaWFsKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6ZW5zdXJlQ2hlY2tTcGVjaWFs
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6ZmlsbFN0YWNr
bWFwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRl
R2VuZXJpY0NvbXBhcmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRv
QWlyOjpjcmVhdGVCcmFuY2gpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpjcmVhdGVDb21wYXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
TG93ZXJUb0Fpcjo6Y3JlYXRlU2VsZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6dHJ5QXBwZW5kTGVhKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kWDg2RGl2KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kWDg2VURpdik6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmxvYWRMaW5rT3Bjb2RlKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6c3RvcmVDb25kT3Bjb2RlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kQ0FTKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kVm9pZEF0b21pYyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZEdlbmVyYWxB
dG9taWMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpsb3dl
cik6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHA6CisgICAg
ICAgIChKU0M6OkIzOjpQYXRjaHBvaW50U3BlY2lhbDo6Z2VuZXJhdGUpOgorICAgICAgICAqIGIz
L0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpyZWR1Y2VEb3Vi
bGVUb0Zsb2F0KToKKyAgICAgICAgKiBiMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcDoKKyAgICAgICAg
KiBiMy9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5jcHA6CisgICAgICAgICogYjMvQjNTdGFj
a21hcFNwZWNpYWwuY3BwOgorICAgICAgICAoSlNDOjpCMzo6U3RhY2ttYXBTcGVjaWFsOjpyZXBz
SW1wbCk6CisgICAgICAgIChKU0M6OkIzOjpTdGFja21hcFNwZWNpYWw6OnJlcEZvckFyZyk6Cisg
ICAgICAgICogYjMvYWlyL0FpckFsbG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcuY3BwOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjphbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nKToKKyAgICAg
ICAgKiBiMy9haXIvQWlyRW1pdFNodWZmbGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpl
bWl0U2h1ZmZsZSk6CisgICAgICAgICogYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwOgor
ICAgICAgICAqIGIzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpsb3dlckFmdGVyUmVnQWxsb2MpOgorICAgICAgICAqIGIzL2Fpci9BaXJTdGFj
a0FsbG9jYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjphdHRlbXB0QXNzaWdubWVu
dCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmFzc2lnbik6CisgICAgICAgICogYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6
CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZURGR1N0YXR1c2VzKToKKyAgICAgICAgKiBieXRlY29kZS9H
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZTo6ZW1pdERPTUpJVEdldHRlcik6CisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKToKKyAg
ICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgorICAgICAgICAqIGJ5
dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlDb25k
aXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50IGNvbnN0
KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHA6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKToKKyAgICAgICAgKiBkZmcvREZH
QXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6RGVsYXllZFNl
dExvY2FsOjpEZWxheWVkU2V0TG9jYWwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjppbmxpbmluZ0Nvc3QpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpp
bmxpbmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRv
SW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGxhbkxvYWQpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpzdG9yZSk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpsaW5rQmxvY2tzKToKKyAgICAgICAgKiBkZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAg
ICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
SW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKToKKyAgICAgICAgKiBkZmcvREZHSW50ZWdlckNo
ZWNrQ29tYmluaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkludGVnZXJDaGVja0Nv
bWJpbmluZ1BoYXNlOjpoYW5kbGVCbG9jayk6CisgICAgICAgICogZGZnL0RGR0ludGVnZXJSYW5n
ZU9wdGltaXphdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHTW92SGludFJlbW92YWxQ
aGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2Uu
Y3BwOgorICAgICAgICAqIGRmZy9ERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAqIGRmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0
b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHVmFyYXJnc0Zv
cndhcmRpbmdQaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwOjpjb21wdXRlKToKKyAgICAgICAgKiBmdGwv
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVNZW1vcnkpOgorICAgICAgICAoSlNDOjpGVEw6OkFi
c3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlQ0NhbGxSZWFkKToKKyAgICAgICAgKEpTQzo6
RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUNDYWxsV3JpdGUpOgorICAgICAg
ICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlUGF0Y2hwb2ludFJl
YWQpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRl
UGF0Y2hwb2ludFdyaXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5OjpkZWNvcmF0ZUZlbmNlUmVhZCk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFw
UmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5jZVdyaXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUZlbmNlZEFjY2Vzcyk6CisgICAgICAgIChKU0M6
OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6Y29tcHV0ZVJhbmdlc0FuZERlY29yYXRlSW5z
dHJ1Y3Rpb25zKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6bGluayk6CisgICAgICAgICogaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHA6CisgICAg
ICAgIChKU0M6Ok1hcmtpbmdDb25zdHJhaW50U2V0OjphZGQpOgorICAgICAgICAqIGludGVycHJl
dGVyL1NoYWRvd0NoaWNrZW4uY3BwOgorICAgICAgICAoSlNDOjpTaGFkb3dDaGlja2VuOjp1cGRh
dGUpOgorICAgICAgICAqIGppdC9CaW5hcnlTd2l0Y2guY3BwOgorICAgICAgICAoSlNDOjpCaW5h
cnlTd2l0Y2g6OkJpbmFyeVN3aXRjaCk6CisgICAgICAgIChKU0M6OkJpbmFyeVN3aXRjaDo6YnVp
bGQpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50
OjpEYXRhOjpsb2FkU3RhdHMpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6c2F2ZVN0YXRz
KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
QXJyYXlQcm90b3R5cGU6OnRyeUluaXRpYWxpemVTcGVjaWVzV2F0Y2hwb2ludCk6CisgICAgICAg
IChKU0M6OkFycmF5UHJvdG90eXBlQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5V2F0Y2hwb2ludDo6
aGFuZGxlRmlyZSk6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2NrRnVuY3Rvcjo6RmluZEZp
cnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2NrRnVuY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3I6Om9wZXJhdG9yKCkp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGaW5kRmlyc3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxv
Y2tGdW5jdG9yOjpmb3VuZENhbGxGcmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3I6OmluZGV4IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAg
ICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KToK
KyAgICAgICAgKiBydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6UHJvbWlzZURlZmVycmVkVGltZXI6OmRvV29yayk6CisgICAgICAgIChKU0M6OlByb21pc2VE
ZWZlcnJlZFRpbWVyOjphZGRQZW5kaW5nUHJvbWlzZSk6CisgICAgICAgIChKU0M6OlByb21pc2VE
ZWZlcnJlZFRpbWVyOjpjYW5jZWxQZW5kaW5nUHJvbWlzZSk6CisgICAgICAgICogcnVudGltZS9U
eXBlUHJvZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXI6Omluc2VydE5ld0xv
Y2F0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHA6CisgICAgICAg
IChKU0M6OlR5cGVQcm9maWxlckxvZzo6cHJvY2Vzc0xvZ0VudHJpZXMpOgorICAgICAgICAqIHJ1
bnRpbWUvV2Vha01hcFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtN
YXBEZWxldGUpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwR2V0KToKKyAgICAgICAg
KEpTQzo6cHJvdG9GdW5jV2Vha01hcEhhcyk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtN
YXBTZXQpOgorICAgICAgICAoSlNDOjpnZXRXZWFrTWFwRGF0YSk6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6cHJvdG9GdW5j
V2Vha1NldERlbGV0ZSk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtTZXRIYXMpOgorICAg
ICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrU2V0QWRkKToKKyAgICAgICAgKEpTQzo6Z2V0V2Vha01h
cERhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHRlc3RSZWdFeHAuY3BwOgorICAgICAgICAodGVz
dE9uZVJlZ0V4cCk6CisgICAgICAgIChydW5Gcm9tRmlsZXMpOgorICAgICAgICAqIHdhc20vV2Fz
bUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpwYXJzZUFuZENvbXBpbGUp
OgorICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpC
QlFQbGFuOjptb3ZlVG9TdGF0ZSk6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OnBhcnNl
QW5kVmFsaWRhdGVNb2R1bGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpwcmVwYXJl
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9ucyk6CisgICAg
ICAgIChKU0M6Oldhc206OkJCUVBsYW46OmNvbXBsZXRlKToKKyAgICAgICAgKiB3YXNtL1dhc21G
YXVsdFNpZ25hbEhhbmRsZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp0cmFwSGFuZGxlcik6
CisgICAgICAgICogd2FzbS9XYXNtT01HUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok9N
R1BsYW46Ok9NR1BsYW4pOgorICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAg
ICAgICAgKiB3YXNtL1dhc21QbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGxhbjo6ZmFp
bCk6CisgICAgICAgICogd2FzbS9XYXNtU2lnbmF0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6U2lnbmF0dXJlSW5mb3JtYXRpb246OmFkb3B0KToKKyAgICAgICAgKiB3YXNtL1dhc21Xb3Jr
bGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjplbnF1ZXVlKToKKwogMjAx
Ny0wOS0xMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgTW9yZSBl
eGNlcHRpb24gY2hlY2sgYm9vay1rZWVwaW5nIG5lZWRlZCBmb3VuZCBieSAzMi1iaXQgSlNDIHRl
c3QgZmFpbHVyZXMuCkBAIC0zMiw2ICsyNjYsNDQyIEBACiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYwMTAKICAgICAgICAgaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvMjIxODU0CiAKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBiMy9CM0NoZWNrU3BlY2lhbC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpDaGVja1Nw
ZWNpYWw6OmZvckVhY2hBcmcpOgorICAgICAgICAoSlNDOjpCMzo6Q2hlY2tTcGVjaWFsOjpnZW5l
cmF0ZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Om51bUIzQXJncyk6IERlbGV0ZWQuCisgICAg
ICAgICogYjMvQjNEdXBsaWNhdGVUYWlscy5jcHA6CisgICAgICAgICogYjMvQjNFbGltaW5hdGVD
b21tb25TdWJleHByZXNzaW9ucy5jcHA6CisgICAgICAgICogYjMvQjNGaXhTU0EuY3BwOgorICAg
ICAgICAoSlNDOjpCMzo6ZGVtb3RlVmFsdWVzKToKKyAgICAgICAgKiBiMy9CM0ZvbGRQYXRoQ29u
c3RhbnRzLmNwcDoKKyAgICAgICAgKiBiMy9CM0luZmVyU3dpdGNoZXMuY3BwOgorICAgICAgICAq
IGIzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwOgorICAgICAgICAoKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpMb3dlclRvQWlyOjpMb3dlclRvQWlyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6TG93ZXJUb0Fpcjo6cnVuKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
TG93ZXJUb0Fpcjo6c2hvdWxkQ29weVByb3BhZ2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OkFyZ1Byb21pc2UpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjpzd2FwKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6b3Bl
cmF0b3I9KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJn
UHJvbWlzZTo6fkFyZ1Byb21pc2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpBcmdQcm9taXNlOjpzZXRUcmFwcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OnRtcCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6Om9wZXJhdG9yIGJvb2wgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9t
aXNlOjpraW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJU
b0Fpcjo6QXJnUHJvbWlzZTo6cGVlayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OmNvbnN1bWUpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjppbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dG1wKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dG1wUHJvbWlzZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNhbkJlSW50ZXJuYWwpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpjb21taXRJbnRlcm5hbCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyb3NzZXNJbnRlcmZlcmVu
Y2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzY2FsZUZv
clNobCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmVmZmVj
dGl2ZUFkZHIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjph
ZGRyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJhcHBp
bmdJbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG9h
ZFByb21pc2VBbnlPcGNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpsb2FkUHJvbWlzZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6OmltbSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OmJpdEltbSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OmJpdEltbTY0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
aW1tT3JUbXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0
cnlPcGNvZGVGb3JUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJU
b0Fpcjo6b3Bjb2RlRm9yVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6OmFwcGVuZFVuT3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpwcmVmZXJSaWdodEZvclJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZEJpbk9wKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kU2hpZnQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0cnlBcHBlbmRTdG9yZVVuT3ApOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0cnlBcHBlbmRTdG9yZUJpbk9wKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRlU3RvcmUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzdG9yZU9wY29k
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFN0
b3JlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bW92ZUZv
clR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpyZWxh
eGVkTW92ZUZvclR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRv
QWlyOjpwcmludCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OmFwcGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFw
cGVuZFRyYXBwaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fp
cjo6ZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bmV3QmxvY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpMb3dlclRvQWlyOjpzcGxpdEJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6ZW5zdXJlU3BlY2lhbCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmVuc3VyZUNoZWNrU3BlY2lhbCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmZpbGxTdGFja21hcCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZUdlbmVyaWNDb21wYXJl
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRlQnJh
bmNoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRl
Q29tcGFyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNy
ZWF0ZVNlbGVjdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OnRyeUFwcGVuZExlYSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OmFwcGVuZFg4NkRpdik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6OmFwcGVuZFg4NlVEaXYpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpsb2FkTGlua09wY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6OnN0b3JlQ29uZE9wY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZENBUyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFZvaWRBdG9taWMpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRHZW5lcmFsQXRvbWljKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG93ZXIpOiBEZWxldGVkLgor
ICAgICAgICAqIGIzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwOgorICAgICAgICAoSlNDOjpCMzo6
UGF0Y2hwb2ludFNwZWNpYWw6OmdlbmVyYXRlKToKKyAgICAgICAgKiBiMy9CM1JlZHVjZURvdWJs
ZVRvRmxvYXQuY3BwOgorICAgICAgICAoSlNDOjpCMzo6cmVkdWNlRG91YmxlVG9GbG9hdCk6Cisg
ICAgICAgICogYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHA6CisgICAgICAgICogYjMvQjNTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMuY3BwOgorICAgICAgICAqIGIzL0IzU3RhY2ttYXBTcGVjaWFsLmNw
cDoKKyAgICAgICAgKEpTQzo6QjM6OlN0YWNrbWFwU3BlY2lhbDo6cmVwc0ltcGwpOgorICAgICAg
ICAoSlNDOjpCMzo6U3RhY2ttYXBTcGVjaWFsOjpyZXBGb3JBcmcpOgorICAgICAgICAqIGIzL2Fp
ci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6YWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZyk6CisgICAgICAgICogYjMvYWlyL0Fp
ckVtaXRTaHVmZmxlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6ZW1pdFNodWZmbGUpOgor
ICAgICAgICAqIGIzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcDoKKyAgICAgICAgKiBiMy9h
aXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6bG93
ZXJBZnRlclJlZ0FsbG9jKToKKyAgICAgICAgKiBiMy9haXIvQWlyU3RhY2tBbGxvY2F0aW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6YXR0ZW1wdEFzc2lnbm1lbnQpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjphc3NpZ24pOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVERkdTdGF0dXNlcyk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRE
T01KSVRHZXR0ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0LmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAg
ICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcyk6CisgICAgICAgIChKU0M6OlBv
bHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Qcm9wZXJ0
eUNvbmRpdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxs
VmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCBjb25zdCk6CisgICAgICAgICog
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVT
dHViSW5mbzo6YWRkQWNjZXNzQ2FzZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SGVhcC5j
cHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGRmZy9ERkdBcmd1
bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpEZWxheWVkU2V0TG9j
YWw6OkRlbGF5ZWRTZXRMb2NhbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmlubGluaW5nQ29zdCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGlu
ZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9Jbmxp
bmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5p
bmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwbGFuTG9hZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnN0b3JlKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmxpbmtCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmxpbmtCbG9ja3MpOgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5jcHA6CisgICAgICAgICog
ZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBs
YWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UpOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyQ2hlY2tD
b21iaW5pbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW50ZWdlckNoZWNrQ29tYmlu
aW5nUGhhc2U6OmhhbmRsZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHSW50ZWdlclJhbmdlT3B0
aW1pemF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdNb3ZIaW50UmVtb3ZhbFBoYXNl
LmNwcDoKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHA6
CisgICAgICAgICogZGZnL0RGR1BoYW50b21JbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICog
ZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3RvcmVC
YXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdWYXJhcmdzRm9yd2Fy
ZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXA6OmNvbXB1dGUpOgorICAgICAgICAqIGZ0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5OjpkZWNvcmF0ZU1lbW9yeSk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVDQ2FsbFJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6
OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlQ0NhbGxXcml0ZSk6CisgICAgICAgIChK
U0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVQYXRjaHBvaW50UmVhZCk6
CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVQYXRj
aHBvaW50V3JpdGUpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6
OmRlY29yYXRlRmVuY2VSZWFkKToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5OjpkZWNvcmF0ZUZlbmNlV3JpdGUpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0
SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlRmVuY2VkQWNjZXNzKToKKyAgICAgICAgKEpTQzo6RlRM
OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Ojpjb21wdXRlUmFuZ2VzQW5kRGVjb3JhdGVJbnN0cnVj
dGlvbnMpOgorICAgICAgICAqIGZ0bC9GVExKSVRGaW5hbGl6ZXIuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OkpJVEZpbmFsaXplcjo6SklURmluYWxpemVyKToKKyAgICAgICAgKiBmdGwvRlRMTGlu
ay5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICogZnRsL0ZUTE9wZXJh
dGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5P
U1IpOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1Ip
OgorICAgICAgICAqIGhlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwOgorICAgICAgICAoSlND
OjpNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9TaGFk
b3dDaGlja2VuLmNwcDoKKyAgICAgICAgKEpTQzo6U2hhZG93Q2hpY2tlbjo6dXBkYXRlKToKKyAg
ICAgICAgKiBqaXQvQmluYXJ5U3dpdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6QmluYXJ5U3dpdGNo
OjpCaW5hcnlTd2l0Y2gpOgorICAgICAgICAoSlNDOjpCaW5hcnlTd2l0Y2g6OmJ1aWxkKToKKyAg
ICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6
bG9hZFN0YXRzKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnNhdmVTdGF0cyk6CisgICAg
ICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFycmF5UHJv
dG90eXBlOjp0cnlJbml0aWFsaXplU3BlY2llc1dhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpB
cnJheVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ6OmhhbmRsZUZp
cmUpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6
OkZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3I6OkZpbmRGaXJzdENhbGxl
ckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGaW5k
Rmlyc3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjpvcGVyYXRvcigpKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2NrRnVuY3Rv
cjo6Zm91bmRDYWxsRnJhbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGaW5kRmly
c3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjppbmRleCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlND
OjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCk6CisgICAgICAg
IChKU0M6OmxvY2FsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjp0b0RhdGVUaW1lT3B0
aW9uc0FueURhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJG
b3JtYXQpOgorICAgICAgICAoSlNDOjpsb2NhbGVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0pTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgICogcnVudGltZS9K
U1R5cGVkQXJyYXlQcm90b3R5cGVzLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZWRBcnJh
eXMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvTnVsbEdldHRlckZ1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6TnVsbEdldHRlckZ1bmN0aW9uOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6
OmNhbGxSZXR1cm5VbmRlZmluZWQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvTnVsbFNl
dHRlckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6TnVsbFNldHRlckZ1bmN0aW9uOjpnZXRD
YWxsRGF0YSk6CisgICAgICAgIChKU0M6OmNhbGxSZXR1cm5VbmRlZmluZWQpOiBEZWxldGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvbWlzZURlZmVycmVkVGltZXIuY3BwOgorICAgICAgICAoSlND
OjpQcm9taXNlRGVmZXJyZWRUaW1lcjo6ZG9Xb3JrKToKKyAgICAgICAgKEpTQzo6UHJvbWlzZURl
ZmVycmVkVGltZXI6OmFkZFBlbmRpbmdQcm9taXNlKToKKyAgICAgICAgKEpTQzo6UHJvbWlzZURl
ZmVycmVkVGltZXI6OmNhbmNlbFBlbmRpbmdQcm9taXNlKToKKyAgICAgICAgKiBydW50aW1lL1R5
cGVQcm9maWxlci5jcHA6CisgICAgICAgIChKU0M6OlR5cGVQcm9maWxlcjo6aW5zZXJ0TmV3TG9j
YXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcDoKKyAgICAgICAg
KEpTQzo6VHlwZVByb2ZpbGVyTG9nOjpwcm9jZXNzTG9nRW50cmllcyk6CisgICAgICAgICogd2Fz
bS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OnBhcnNlQW5kQ29t
cGlsZSk6CisgICAgICAgICogd2FzbS9XYXNtQkJRUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OkJCUVBsYW46Om1vdmVUb1N0YXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6
cGFyc2VBbmRWYWxpZGF0ZU1vZHVsZSk6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OnBy
ZXBhcmUpOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpjb21waWxlRnVuY3Rpb25zKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6Y29tcGxldGUpOgorICAgICAgICAqIHdhc20v
V2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OnRyYXBIYW5k
bGVyKToKKyAgICAgICAgKiB3YXNtL1dhc21PTUdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6T01HUGxhbjo6T01HUGxhbik6CisgICAgICAgIChKU0M6Oldhc206Ok9NR1BsYW46Ondvcmsp
OgorICAgICAgICAqIHdhc20vV2FzbVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpQbGFu
OjpmYWlsKToKKyAgICAgICAgKiB3YXNtL1dhc21TaWduYXR1cmUuY3BwOgorICAgICAgICAoSlND
OjpXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6YWRvcHQpOgorICAgICAgICAqIHdhc20vV2Fz
bVdvcmtsaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6V29ya2xpc3Q6OmVucXVldWUpOgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogYjMvQjNDaGVja1NwZWNpYWwu
Y3BwOgorICAgICAgICAoSlNDOjpCMzo6Q2hlY2tTcGVjaWFsOjpmb3JFYWNoQXJnKToKKyAgICAg
ICAgKEpTQzo6QjM6OkNoZWNrU3BlY2lhbDo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpudW1CM0FyZ3MpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzRHVwbGljYXRlVGFpbHMu
Y3BwOgorICAgICAgICAqIGIzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwOgor
ICAgICAgICAqIGIzL0IzRml4U1NBLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OmRlbW90ZVZhbHVl
cyk6CisgICAgICAgICogYjMvQjNGb2xkUGF0aENvbnN0YW50cy5jcHA6CisgICAgICAgICogYjMv
QjNJbmZlclN3aXRjaGVzLmNwcDoKKyAgICAgICAgKiBiMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRp
bWl6YXRpb25zLmNwcDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNMb3dl
clRvQWlyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6TG93ZXJUb0Fp
cik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnJ1bik6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnNob3VsZENvcHlQcm9w
YWdhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQ
cm9taXNlOjpBcmdQcm9taXNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6c3dhcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6On5BcmdQcm9taXNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6c2V0
VHJhcHMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQ
cm9taXNlOjp0bXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
OjpBcmdQcm9taXNlOjpvcGVyYXRvciBib29sIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6a2luZCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OnBlZWsgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9t
aXNlOjpjb25zdW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fp
cjo6QXJnUHJvbWlzZTo6aW5zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6OnRtcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OnRtcFByb21pc2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRv
QWlyOjpjYW5CZUludGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6Y29tbWl0SW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjpjcm9zc2VzSW50ZXJmZXJlbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6c2NhbGVGb3JTaGwpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjplZmZlY3RpdmVBZGRyKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YWRkcik6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyYXBwaW5nSW5zdCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmxvYWRQcm9taXNlQW55T3Bjb2RlKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG9hZFByb21pc2UpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjppbW0pOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpiaXRJbW0pOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpiaXRJbW02NCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmltbU9yVG1wKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJ5T3Bjb2RlRm9yVHlwZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Om9wY29kZUZvclR5cGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRVbk9wKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6cHJlZmVyUmlnaHRGb3JS
ZXN1bHQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBl
bmRCaW5PcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFw
cGVuZFNoaWZ0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
dHJ5QXBwZW5kU3RvcmVVbk9wKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6dHJ5QXBwZW5kU3RvcmVCaW5PcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZVN0b3JlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6c3RvcmVPcGNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRTdG9yZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Om1vdmVGb3JUeXBlKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6cmVsYXhlZE1vdmVGb3JUeXBlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6cHJpbnQpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmQpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRUcmFwcGluZyk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmZpbmlzaEFwcGVuZGluZ0luc3RydWN0
aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Om5ld0Js
b2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6c3BsaXRC
bG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmVuc3Vy
ZVNwZWNpYWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpl
bnN1cmVDaGVja1NwZWNpYWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpmaWxsU3RhY2ttYXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpjcmVhdGVHZW5lcmljQ29tcGFyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZUJyYW5jaCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZUNvbXBhcmUpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpjcmVhdGVTZWxlY3QpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0cnlBcHBlbmRMZWEpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRYODZEaXYpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRYODZVRGl2KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG9hZExpbmtPcGNvZGUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzdG9yZUNvbmRP
cGNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBl
bmRDQVMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBl
bmRWb2lkQXRvbWljKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fp
cjo6YXBwZW5kR2VuZXJhbEF0b21pYyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okxvd2VyVG9BaXI6Omxvd2VyKTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM1BhdGNocG9pbnRT
cGVjaWFsLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlBhdGNocG9pbnRTcGVjaWFsOjpnZW5lcmF0
ZSk6CisgICAgICAgICogYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcDoKKyAgICAgICAgKEpT
Qzo6QjM6OnJlZHVjZURvdWJsZVRvRmxvYXQpOgorICAgICAgICAqIGIzL0IzUmVkdWNlU3RyZW5n
dGguY3BwOgorICAgICAgICAqIGIzL0IzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmNwcDoKKyAg
ICAgICAgKiBiMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpTdGFj
a21hcFNwZWNpYWw6OnJlcHNJbXBsKToKKyAgICAgICAgKEpTQzo6QjM6OlN0YWNrbWFwU3BlY2lh
bDo6cmVwRm9yQXJnKToKKyAgICAgICAgKiBiMy9haXIvQWlyQWxsb2NhdGVTdGFja0J5R3JhcGhD
b2xvcmluZy5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmFsbG9jYXRlU3RhY2tCeUdyYXBo
Q29sb3JpbmcpOgorICAgICAgICAqIGIzL2Fpci9BaXJFbWl0U2h1ZmZsZS5jcHA6CisgICAgICAg
IChKU0M6OkIzOjpBaXI6OmVtaXRTaHVmZmxlKToKKyAgICAgICAgKiBiMy9haXIvQWlyRml4T2J2
aW91c1NwaWxscy5jcHA6CisgICAgICAgICogYjMvYWlyL0Fpckxvd2VyQWZ0ZXJSZWdBbGxvYy5j
cHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Omxvd2VyQWZ0ZXJSZWdBbGxvYyk6CisgICAgICAg
ICogYjMvYWlyL0FpclN0YWNrQWxsb2NhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6
OmF0dGVtcHRBc3NpZ25tZW50KToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6YXNzaWduKToKKyAg
ICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2Fz
ZTo6Z2VuZXJhdGVJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHA6
CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRlREZHU3RhdHVzZXMpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlND
OjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjplbWl0RE9NSklUR2V0dGVyKToKKyAgICAgICAgKiBi
eXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHA6CisgICAgICAgICogYnl0ZWNv
ZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vz
czo6YWRkQ2FzZXMpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uY3BwOgorICAgICAgICAo
SlNDOjpQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0
eVdhdGNocG9pbnQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgor
ICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEhlYXAuY3BwOgorICAgICAgICAoV1RGOjpwcmludElu
dGVybmFsKToKKyAgICAgICAgKiBkZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6RGVsYXllZFNldExvY2FsOjpEZWxheWVkU2V0TG9jYWwpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6cGxhbkxvYWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpzdG9yZSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2spOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2tzKToKKyAgICAgICAgKiBk
ZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKToK
KyAgICAgICAgKiBkZmcvREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlOjpoYW5kbGVCbG9jayk6Cisg
ICAgICAgICogZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHTW92SGludFJlbW92YWxQaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR09i
amVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdQaGFudG9t
SW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFz
ZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHA6CisgICAgICAgICog
ZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFw
Ojpjb21wdXRlKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVNZW1v
cnkpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRl
Q0NhbGxSZWFkKToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Ojpk
ZWNvcmF0ZUNDYWxsV3JpdGUpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9z
aXRvcnk6OmRlY29yYXRlUGF0Y2hwb2ludFJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3Ry
YWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlUGF0Y2hwb2ludFdyaXRlKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUZlbmNlUmVhZCk6CisgICAg
ICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5jZVdyaXRl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUZl
bmNlZEFjY2Vzcyk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6
Y29tcHV0ZVJhbmdlc0FuZERlY29yYXRlSW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKiBmdGwvRlRM
SklURmluYWxpemVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpKSVRGaW5hbGl6ZXI6OkpJVEZp
bmFsaXplcik6CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OmxpbmspOgorICAgICAgICAqIGZ0bC9GVExPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKToKKyAgICAgICAgKEpTQzo6RlRMOjpv
cGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NSKToKKyAgICAgICAgKiBoZWFwL01hcmtpbmdD
b25zdHJhaW50U2V0LmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFk
ZCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHA6CisgICAgICAgIChK
U0M6OlNoYWRvd0NoaWNrZW46OnVwZGF0ZSk6CisgICAgICAgICogaml0L0JpbmFyeVN3aXRjaC5j
cHA6CisgICAgICAgIChKU0M6OkJpbmFyeVN3aXRjaDo6QmluYXJ5U3dpdGNoKToKKyAgICAgICAg
KEpTQzo6QmluYXJ5U3dpdGNoOjpidWlsZCk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNw
cDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmxvYWRTdGF0cyk6CisgICAgICAgIChKU0M6
OkxMSW50OjpEYXRhOjpzYXZlU3RhdHMpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheVByb3RvdHlwZTo6dHJ5SW5pdGlhbGl6ZVNwZWNp
ZXNXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGVBZGFwdGl2ZUluZmVy
cmVkUHJvcGVydHlXYXRjaHBvaW50OjpoYW5kbGVGaXJlKToKKyAgICAgICAgKiBydW50aW1lL0Vy
cm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpGaW5kRmlyc3RDYWxsZXJGcmFtZVdpdGhD
b2RlYmxvY2tGdW5jdG9yOjpGaW5kRmlyc3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9y
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJs
b2NrRnVuY3Rvcjo6b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZpbmRGaXJz
dENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3I6OmZvdW5kQ2FsbEZyYW1lIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2Nr
RnVuY3Rvcjo6aW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bERh
dGVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojppbml0
aWFsaXplRGF0ZVRpbWVGb3JtYXQpOgorICAgICAgICAoSlNDOjpsb2NhbGVEYXRhKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6dG9EYXRlVGltZU9wdGlvbnNBbnlEYXRlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRs
TnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKEpTQzo6bG9j
YWxlRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlDb25zdHJ1
Y3RvcnMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5UHJvdG90eXBlcy5jcHA6
CisgICAgICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlzLmNwcDoKKyAgICAgICAgKiBydW50aW1l
L051bGxHZXR0ZXJGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6Ok51bGxHZXR0ZXJGdW5jdGlv
bjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpjYWxsUmV0dXJuVW5kZWZpbmVkKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6Ok51bGxTZXR0ZXJGdW5jdGlvbjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpj
YWxsUmV0dXJuVW5kZWZpbmVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1Byb21pc2VE
ZWZlcnJlZFRpbWVyLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvbWlzZURlZmVycmVkVGltZXI6OmRv
V29yayk6CisgICAgICAgIChKU0M6OlByb21pc2VEZWZlcnJlZFRpbWVyOjphZGRQZW5kaW5nUHJv
bWlzZSk6CisgICAgICAgIChKU0M6OlByb21pc2VEZWZlcnJlZFRpbWVyOjpjYW5jZWxQZW5kaW5n
UHJvbWlzZSk6CisgICAgICAgICogcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwOgorICAgICAgICAo
SlNDOjpUeXBlUHJvZmlsZXI6Omluc2VydE5ld0xvY2F0aW9uKToKKyAgICAgICAgKiBydW50aW1l
L1R5cGVQcm9maWxlckxvZy5jcHA6CisgICAgICAgIChKU0M6OlR5cGVQcm9maWxlckxvZzo6cHJv
Y2Vzc0xvZ0VudHJpZXMpOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpwYXJzZUFuZENvbXBpbGUpOgorICAgICAgICAqIHdhc20vV2Fz
bUJCUVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjptb3ZlVG9TdGF0ZSk6
CisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OnBhcnNlQW5kVmFsaWRhdGVNb2R1bGUpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpwcmVwYXJlKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9ucyk6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBs
YW46OmNvbXBsZXRlKToKKyAgICAgICAgKiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjp0cmFwSGFuZGxlcik6CisgICAgICAgICogd2FzbS9XYXNt
T01HUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok9NR1BsYW46Ok9NR1BsYW4pOgorICAg
ICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21QbGFu
LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGxhbjo6ZmFpbCk6CisgICAgICAgICogd2FzbS9X
YXNtU2lnbmF0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2lnbmF0dXJlSW5mb3JtYXRp
b246OmFkb3B0KToKKyAgICAgICAgKiB3YXNtL1dhc21Xb3JrbGlzdC5jcHA6CisgICAgICAgIChK
U0M6Oldhc206OldvcmtsaXN0OjplbnF1ZXVlKToKKwogMjAxNy0wOS0wMyAgWXVzdWtlIFN1enVr
aSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbREZHXSBPcHRpbWl6ZSBXZWFr
TWFwOjpnZXQgYnkgYWRkaW5nIGludHJpbnNpYyBhbmQgZml4dXAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODEzMDgzMGVhODg2
NGE3NGQxZmI3NGFiNTVlOGI3NTk3YjJhMTc0Ni4uYzg5YTk3YWViZjFmOTQ3OGRkMDZmMGYyZjkz
MjhlODJhYTFiNTk2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxNy0wOS0xMSAgS2VpdGggTWls
bGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBEbyB1bmlmaWVkIHNvdXJj
ZSBidWlsZHMgZm9yIEpTQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc2MDc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgc2NyaXB0IHRoYXQgd2lsbCBhdXRvbWF0aWNhbGx5
IGJ1bmRsZSBzb3VyY2UKKyAgICAgICAgZmlsZXMsIHdoaWNoIGlzIGN1cnJlbnRseSBvbmx5IHVz
ZWQgYnkgdGhlIENNYWtlIGJ1aWxkLiBJdCdzCisgICAgICAgIGltcG9ydGFudCB0aGF0IHdlIHVz
ZSB0aGUgc2FtZSBzY3JpcHQgdG8gZ2VuZXJhdGUgdGhlIHRoZSBidW5kbGVzCisgICAgICAgIGZv
ciB0aGUgQ01ha2UgYnVpbGQgYXMgdGhlIFhjb2RlIGJ1aWxkLiBJZiB3ZSBkaWRuJ3QgZG8gdGhp
cyB0aGVuCisgICAgICAgIGl0J3MgbGlrZWx5IHRoYXQgdGhlcmUgd291bGQgYmUgYnVpbGQgZXJy
b3JzIHRoYXQgb2NjdXIgaW4gb25seQorICAgICAgICBvbmUgYnVpbGQgc3lzdGVtLiBPbiB0aGUg
c2FtZSBub3RlLCB3ZSBhbHNvIG5lZWQgdG8gYmUgY2FyZWZ1bCB0bworICAgICAgICBub3QgYnVu
ZGxlIHBsYXRmb3JtIHNwZWNpZmljIHNvdXJjZSBmaWxlcyB3aXRoIHBsYXRmb3JtCisgICAgICAg
IGluZGVwZW5kZW50IG9uZXMuIFRoZXJlIGFyZSBhIGNvdXBsZSBvZiB0aGluZ3MgdGhlIHNjcmlw
dCBkb2VzIG5vdAorICAgICAgICBjdXJyZW50bHkgaGFuZGxlIGJ1dCBhcmUgbm90IGVzc2VudGlh
bCBmb3IgdGhlIENNYWtlIGJ1aWxkLiBGaXJzdCwKKyAgICAgICAgaXQgZG9lcyBub3QgaGFuZGxl
IHRoZSBtYXggYnVuZGxlIHNpemUgcmVzdHJpY3Rpb25zIHRoYXQgdGhlIFhjb2RlCisgICAgICAg
IGJ1aWxkIHdpbGwgcmVxdWlyZS4gSXQgYWxzbyBkb2VzIG5vdCBoYW5kbGUgQyBmaWxlcy4KKwor
ICAgICAgICBUaGUgdW5pZmllZCBzb3VyY2UgZ2VuZXJhdG9yIHNjcmlwdCB3b3JrcyBieSBjb2xs
ZWN0aW5nIGdyb3VwcyBvZgorICAgICAgICB1cCB0byA4IGZpbGVzIGZyb20gdGhlIHNhbWUgZGly
ZWN0b3J5LiBXZSBkb24ndCBidW5kbGUgZmlsZXMgZnJvbQorICAgICAgICBhY3Jvc3MgZGlyZWN0
b3JpZXMgc2luY2UgSSBkaWRuJ3Qgc2VlIGEgc3BlZWR1cCBmcm9tIGRvaW5nCisgICAgICAgIHNv
LiBBZGRpdGlvbmFsbHksIHNwbGl0dGluZyBhdCB0aGUgZGlyZWN0b3J5IGJvdW5kYXJ5IG1lYW5z
IHRoYXQKKyAgICAgICAgaXQgaXMgbGVzcyBsaWtlbHkgdGhhdCBhZGRpbmcgYSBuZXcgZmlsZSB3
aWxsIGZvcmNlIGEgImNsZWFuIgorICAgICAgICBidWlsZC4gVGhpcyB3b3VsZCBoYXBwZW4gYmVj
YXVzZSB0aGUgbmV3IGZpbGUgd2lsbCBzaGlmdCBldmVyeQorICAgICAgICBzdWJzZXF1ZW50IGZp
bGUgaW50byB0aGUgbmV4dCB1bmlmaWVkIHNvdXJjZSBidW5kbGUuCisKKyAgICAgICAgVXNpbmcg
dW5pZmllZCBzb3VyY2VzIGFwcGVhcnMgdG8gYmUgYSByb3VnaGx5IDMuNXggYnVpbGQgdGltZQor
ICAgICAgICBzcGVlZCB1cCBmb3IgY2xlYW4gYnVpbGRzIG9uIG15IE1CUCBhbmQgYXBwZWFycyB0
byBoYXZlIGEKKyAgICAgICAgbmVnbGlnaWJsZSBlZmZlY3QgaW4gaW5jcmVtZW50YWwgYnVpbGRz
LgorCisgICAgICAgICogZ2VuZXJhdGUtdW5pZmllZC1zb3VyY2UtYnVuZGxlcy5yYjogQWRkZWQu
CisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuaDoKKwogMjAxNy0wOS0xMSAgUnlhbiBIYWRkYWQg
IDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMjIxODU0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGRhMWJhMWQ5
YmUxNTdiNTgzYzgxMDc4YmFkYmVmZGVhZDViYjIwZmEuLmFkMDc4YmFjYzJhZTU3ZmY3NmJmNTcw
MjAyYjNlN2FlMmRjMTMzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTQ2LDcgKzQ2LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9S
SUVTCiAgICAgIiR7SUNVX0lOQ0xVREVfRElSU30iCiApCiAKLXNldChKYXZhU2NyaXB0Q29yZV9T
T1VSQ0VTCitzZXQoSmF2YVNjcmlwdENvcmVfT0dfU09VUkNFUwogICAgIEFQSS9KU0Jhc2UuY3Bw
CiAgICAgQVBJL0pTQ1Rlc3RSdW5uZXJVdGlscy5jcHAKICAgICBBUEkvSlNDYWxsYmFja0NvbnN0
cnVjdG9yLmNwcApAQCAtODc5LDcgKzg3OSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VT
CiAgICAgcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcAogICAgIHJ1bnRpbWUvUHJvdG90eXBlTWFw
LmNwcAogICAgIHJ1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAKLSAgICBydW50aW1lL1Byb3h5
T2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvUHJveHlSZXZva2UuY3BwCiAgICAgcnVudGltZS9SZWZs
ZWN0T2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvUmVnRXhwLmNwcApAQCAtMTAxNyw2ICsxMDE2LDMz
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgeWFyci9ZYXJyU3ludGF4Q2hlY2tl
ci5jcHAKICkKIAorCitmb3JlYWNoIChfc291cmNlRmlsZSBJTiBMSVNUUyBKYXZhU2NyaXB0Q29y
ZV9PR19TT1VSQ0VTKQorICAgIGlmIChOT1QgKCR7X3NvdXJjZUZpbGV9IE1BVENIRVMgIi4qYyQi
KSkKKyAgICAgICAgc2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzKCR7X3NvdXJjZUZpbGV9IFBS
T1BFUlRJRVMgSEVBREVSX0ZJTEVfT05MWSBPTikKKyAgICAgICAgbGlzdChBUFBFTkQgSmF2YVNj
cmlwdENvcmVfSEVBREVSUyAke19zb3VyY2VGaWxlfSkKKyAgICBlbmRpZiAoKQorZW5kZm9yZWFj
aCAoKQorCitleGVjdXRlX3Byb2Nlc3MoQ09NTUFORCAke1JVQllfRVhFQ1VUQUJMRX0gJHtDTUFL
RV9DVVJSRU5UX1NPVVJDRV9ESVJ9Ly4uL1dURi9nZW5lcmF0ZS11bmlmaWVkLXNvdXJjZS1idW5k
bGVzLnJiCisgICItLWRlcml2ZWQtc291cmNlcy1wYXRoIiAke0RFUklWRURfU09VUkNFU19KQVZB
U0NSSVBUQ09SRV9ESVJ9ICR7SmF2YVNjcmlwdENvcmVfT0dfU09VUkNFU30KKyAgUkVTVUxUX1ZB
UklBQkxFIGdlbmVyYXRlVW5pZmllZFNvdXJjZXNSZXN1bHQKKyAgT1VUUFVUX1ZBUklBQkxFIGdl
bmVyYXRlVW5pZmllZFNvdXJjZXNPdXRwdXQKKykKKworaWYgKCR7Z2VuZXJhdGVVbmlmaWVkU291
cmNlc1Jlc3VsdH0pCisgICAgbWVzc2FnZSgiV0FSTklORzogdW5pZmllZC1zb3VyY2UtYnVuZGxl
ci5yYiBleGl0ZWQgd2l0aCBub24temVybyBzdGF0dXMgbm90IGFwcGVuZGluZyByZXN1bHRzIikK
K2Vsc2UgKCkKKyAgICBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTICR7Z2VuZXJh
dGVVbmlmaWVkU291cmNlc091dHB1dH0pCitlbmRpZiAoKQorCittZXNzYWdlKCR7Z2VuZXJhdGVV
bmlmaWVkU291cmNlc091dHB1dH0pCisKKyMgVGhlc2UgYXJlIHNwZWNpYWwgZmlsZXMgdGhhdCB3
ZSBjYW4ndCBvciBkb24ndCB3YW50IHRvIHVuaWZpZWQgc291cmNlIGNvbXBpbGUKK2xpc3QoQVBQ
RU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKKyAgICBydW50aW1lL1Byb3h5T2JqZWN0LmNwcAor
KQorCiAjIEV4dHJhIGZsYWdzIGZvciBjb21waWxlIHNvdXJjZXMgY2FuIGdvIGhlcmUuCiBpZiAo
Tk9UIE1TVkMpCiAgICAgc2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzKHJ1bnRpbWUvUHJveHlP
YmplY3QuY3BwIFBST1BFUlRJRVMgQ09NUElMRV9GTEFHUyAtZm5vLW9wdGltaXplLXNpYmxpbmct
Y2FsbHMpCkBAIC0xMzM2LDYgKzEzNjIsNyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgTUFJ
Tl9ERVBFTkRFTkNZICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9jcmVhdGVfcmVnZXhfdGFi
bGVzCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vY3JlYXRlX3JlZ2V4X3RhYmxlcyA+ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vUmVnRXhwSml0VGFibGVzLmgKICAgICBWRVJCQVRJTSkKK2xpc3QoQVBQRU5E
IEphdmFTY3JpcHRDb3JlX0hFQURFUlMgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVf
RElSfS9SZWdFeHBKaXRUYWJsZXMuaCkKIFdFQktJVF9BRERfU09VUkNFX0RFUEVOREVOQ0lFUygk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0veWFyci9ZYXJyUGF0dGVybi5jcHAgJHtERVJJVkVE
X1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9SZWdFeHBKaXRUYWJsZXMuaCkKIAogYWRkX2N1
c3RvbV9jb21tYW5kKApAQCAtMTM1Niw2ICsxMzgzLDcgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAog
ICAgIERFUEVORFMgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3BhcnNlci9LZXl3b3Jkcy50
YWJsZQogICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5UX1NP
VVJDRV9ESVJ9L0tleXdvcmRMb29rdXBHZW5lcmF0b3IucHkgJHtDTUFLRV9DVVJSRU5UX1NPVVJD
RV9ESVJ9L3BhcnNlci9LZXl3b3Jkcy50YWJsZSA+ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vS2V5d29yZExvb2t1cC5oCiAgICAgVkVSQkFUSU0pCitsaXN0KEFQUEVORCBK
YXZhU2NyaXB0Q29yZV9IRUFERVJTICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vS2V5d29yZExvb2t1cC5oKQogV0VCS0lUX0FERF9TT1VSQ0VfREVQRU5ERU5DSUVTKCR7Q01B
S0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9wYXJzZXIvTGV4ZXIuY3BwICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vS2V5d29yZExvb2t1cC5oKQogCiAKQEAgLTE1MDMsNyArMTUz
MSw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9CiApCiAKLWxpc3QoQVBQRU5EIEphdmFTY3Jp
cHRDb3JlX1NPVVJDRVMKK2xpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMKICAgICAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0Fpck9wY29kZS5oCiAgICAgJHtE
RVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9BaXJPcGNvZGVHZW5lcmF0ZWQuaAog
KQpAQCAtMTU2NSw2ICsxNTkzLDggQEAgZWxzZSAoKQogICAgIG1lc3NhZ2UoRkFUQUxfRVJST1Ig
IlVua25vd24gQ1BVIikKIGVuZGlmICgpCiAKK21lc3NhZ2UoJHtKYXZhU2NyaXB0Q29yZV9TT1VS
Q0VTfSkKKwogV0VCS0lUX0ZSQU1FV09SS19ERUNMQVJFKEphdmFTY3JpcHRDb3JlKQogV0VCS0lU
X0lOQ0xVREVfQ09ORklHX0ZJTEVTX0lGX0VYSVNUUygpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNDaGVja1NwZWNpYWwuY3BwCmluZGV4IGJlYjg3OTI4NTg4ZmQ1YjZkNzMxMGY3ZjM0
ODViYzE3NWJhM2RiZmYuLjdjNTM3MmFjNWUyNzExNDE5OTNmNzhiZTE2ODNlMDkzMTg1M2M4OTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcApAQCAtMzYs
MTEgKzM2LDEzIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi11c2luZyBu
YW1lc3BhY2UgQWlyOwordXNpbmcgSW5zdCA9IEFpcjo6SW5zdDsKK3VzaW5nIEFyZyA9IEFpcjo6
QXJnOwordXNpbmcgR2VuZXJhdGlvbkNvbnRleHQgPSBBaXI6OkdlbmVyYXRpb25Db250ZXh0Owog
CiBuYW1lc3BhY2UgewogCi11bnNpZ25lZCBudW1CM0FyZ3MoQjM6OktpbmQga2luZCkKK3Vuc2ln
bmVkIG51bUIzQXJncyhLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7
CiAgICAgY2FzZSBDaGVja0FkZDoKQEAgLTEwOCw2ICsxMTAsNyBAQCBJbnN0IENoZWNrU3BlY2lh
bDo6aGlkZGVuQnJhbmNoKGNvbnN0IEluc3QmIGluc3QpIGNvbnN0CiAKIHZvaWQgQ2hlY2tTcGVj
aWFsOjpmb3JFYWNoQXJnKEluc3QmIGluc3QsIGNvbnN0IFNjb3BlZExhbWJkYTxJbnN0OjpFYWNo
QXJnQ2FsbGJhY2s+JiBjYWxsYmFjaykKIHsKKyAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAg
IHN0ZDo6b3B0aW9uYWw8V2lkdGg+IG9wdGlvbmFsRGVmQXJnV2lkdGg7CiAgICAgSW5zdCBoaWRk
ZW4gPSBoaWRkZW5CcmFuY2goaW5zdCk7CiAgICAgaGlkZGVuLmZvckVhY2hBcmcoCkBAIC0xNTYs
NiArMTU5LDcgQEAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gQ2hlY2tTcGVjaWFsOjpzaG91bGRU
cnlBbGlhc2luZ0RlZihJbnN0JiBpbnN0KQogCiBDQ2FsbEhlbHBlcnM6Okp1bXAgQ2hlY2tTcGVj
aWFsOjpnZW5lcmF0ZShJbnN0JiBpbnN0LCBDQ2FsbEhlbHBlcnMmIGppdCwgR2VuZXJhdGlvbkNv
bnRleHQmIGNvbnRleHQpCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICBDQ2FsbEhl
bHBlcnM6Okp1bXAgZmFpbCA9IGhpZGRlbkJyYW5jaChpbnN0KS5nZW5lcmF0ZShqaXQsIGNvbnRl
eHQpOwogICAgIEFTU0VSVChmYWlsLmlzU2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNEdXBsaWNhdGVUYWlscy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNEdXBsaWNhdGVUYWlscy5jcHAKaW5kZXggZmQ2NTc5MGU5OWMyZmVhZDRmNWZiYjll
YWY2MGMxYTc1YzkzMjI1NS4uY2ZmNDRhNGMxZTAwOTFlYmE0YTc4M2IzOGYzNWEzYmRjZWQxYmNm
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRHVwbGljYXRlVGFpbHMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0R1cGxpY2F0ZVRhaWxzLmNwcApA
QCAtNDQsNyArNDQsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogbmFtZXNw
YWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgQjNEdXBsaWNh
dGVUYWlsc0ludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30K
IAogY2xhc3MgRHVwbGljYXRlVGFpbHMgewogcHVibGljOgpAQCAtOTQsNyArOTYsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZGVtb3RlVmFsdWVzKG1fcHJv
YywgdmFsdWVzVG9EZW1vdGUpOwotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAo
QjNEdXBsaWNhdGVUYWlsc0ludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9n
KCJQcm9jZWR1cmUgYWZ0ZXIgdmFsdWUgZGVtb3Rpb246XG4iKTsKICAgICAgICAgICAgIGRhdGFM
b2cobV9wcm9jKTsKICAgICAgICAgfQpAQCAtMTE2LDcgKzExOCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIC8vIHBvaW50LgogICAgICAgICAgICAgY2FuZGlkYXRlcy5yZW1vdmUoYmxvY2spOwog
Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0R1cGxpY2F0ZVRh
aWxzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiRHVwbGljYXRp
bmcgIiwgKnRhaWwsICIgaW50byAiLCAqYmxvY2ssICJcbiIpOwogCiAgICAgICAgICAgICBibG9j
ay0+cmVtb3ZlTGFzdChtX3Byb2MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCmluZGV4IDFhZTQz
NTU2MTUxN2U5MWMwOWU2NjhjNjllYWZjMTU0YTc0OGJkZTYuLjlhMmU5OGFhNDM4NTYyODAwOWYx
MmE0NDUyNGE0ZDFhZmY1NWY5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAKQEAgLTUzLDcg
KzUzLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5hbWVzcGFjZSB7CiAK
LWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEIzRWxpbWluYXRlQ29tbW9u
U3ViZXhwcmVzc2lvbnNJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFs
c2U7Cit9CiAKIC8vIEZJWE1FOiBXZSBjb3VsZCB0cmVhdCBQYXRjaHBvaW50cyB3aXRoIGEgbm9u
LWVtcHR5IHNldCBvZiByZWFkcyBhcyBhICJtZW1vcnkgdmFsdWUiIGFuZCBzb21laG93CiAvLyBl
bGltaW5hdGUgcmVkdW5kYW50IG9uZXMuIFdlIHdvdWxkIG5lZWQgc29tZSB3YXkgb2YgZGV0ZXJt
aW5pbmcgaWYgdHdvIHBhdGNocG9pbnRzIGFyZSByZXBsYWNhYmxlLgpAQCAtMTYwLDcgKzE2Miw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQjMgYmVmb3JlIENTRTpcbiIsIG1fcHJvYyk7
CiAgICAgICAgIAogICAgICAgICBtX3Byb2MucmVzZXRWYWx1ZU93bmVycygpOwpAQCAtMTg4LDcg
KzE5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZW1vcnlWYWx1ZXNB
dFRhaWwuYWRkKG1lbW9yeSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJCbG9jayAiLCAqYmxvY2ss
ICI6ICIsIGRhdGEsICJcbiIpOwogICAgICAgICB9CiAKQEAgLTE5Niw3ICsxOTgsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gcG9zdE9yZGVyID0gbV9wcm9jLmJsb2Nr
c0luUG9zdE9yZGVyKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHBvc3RPcmRlci5zaXpl
KCk7IGktLTspIHsKICAgICAgICAgICAgIG1fYmxvY2sgPSBwb3N0T3JkZXJbaV07Ci0gICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1vblN1YmV4
cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiTG9v
a2luZyBhdCAiLCAqbV9ibG9jaywgIjpcbiIpOwogCiAgICAgICAgICAgICBtX2RhdGEgPSBJbXB1
cmVCbG9ja0RhdGEoKTsKQEAgLTIyMiw3ICsyMjQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBt
X2luc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQjMgYWZ0ZXIgQ1NFOlxuIiwgbV9w
cm9jKTsKIAogICAgICAgICByZXR1cm4gbV9jaGFuZ2VkOwpAQCAtNDg3LDcgKzQ4OSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIC8vIGV4cGVuc2l2ZSwgYnV0IGluIHRoZSBvdmVyd2hlbG1pbmcgbWFq
b3JpdHkgb2YgY2FzZXMgaXQgd2lsbCBhbG1vc3QgaW1tZWRpYXRlbHkgaGl0IGFuIAogICAgICAg
ICAvLyBvcGVyYXRpb24gdGhhdCBpbnRlcmZlcmVzLgogCi0gICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICAgICAgZGF0YUxvZygqbV92YWx1ZSwgIjogbG9va2luZyBmb3J3YXJkIGZv
ciBzdG9yZXMgdG8gIiwgKnB0ciwgIi4uLlxuIik7CiAKICAgICAgICAgLy8gRmlyc3Qgc2VhcmNo
IGZvcndhcmQgaW4gdGhpcyBiYXNpYyBibG9jay4KQEAgLTU1Nyw3ICs1NTksNyBAQCBwcml2YXRl
OgogICAgICAgICBpZiAobWF0Y2hlcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1v
blN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJF
bGltaW5hdGluZyAiLCAqbV92YWx1ZSwgIiBkdWUgdG8gIiwgcG9pbnRlckxpc3REdW1wKG1hdGNo
ZXMpLCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CkBAIC01NjYs
NyArNTY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBkb21pbmF0aW5n
TWF0Y2ggPSBtYXRjaGVzWzBdOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9kb21pbmF0
b3JzLmRvbWluYXRlcyhkb21pbmF0aW5nTWF0Y2gtPm93bmVyLCBtX2Jsb2NrKSk7CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzRWxpbWlu
YXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCIgICAgRWxpbWluYXRpbmcgdXNpbmcgIiwgKmRvbWluYXRpbmdNYXRjaCwgIlxu
Iik7CiAgICAgICAgICAgICBWZWN0b3I8VmFsdWUqPiBleHRyYVZhbHVlczsKICAgICAgICAgICAg
IGlmIChWYWx1ZSogdmFsdWUgPSByZXBsYWNlKGRvbWluYXRpbmdNYXRjaCwgZXh0cmFWYWx1ZXMp
KSB7CkBAIC01OTAsNyArNTkyLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBWYXJpYWJsZVZhbHVl
KiBnZXQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFyaWFibGVWYWx1ZT4oCiAgICAgICAgICAg
ICBtX2luZGV4LCBHZXQsIG1fdmFsdWUtPm9yaWdpbigpLCB2YXJpYWJsZSk7Ci0gICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0lu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEluc2VydGluZyBnZXQg
b2YgdmFsdWU6ICIsICpnZXQsICJcbiIpOwogICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElk
ZW50aXR5KGdldCk7CiAgICAgICAgICAgICAKQEAgLTYxNSwyMyArNjE3LDIzIEBAIHByaXZhdGU6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyPgogICAgIE1lbW9yeU1hdGNoZXMgZmluZE1l
bW9yeVZhbHVlKFZhbHVlKiBwdHIsIEhlYXBSYW5nZSByYW5nZSwgY29uc3QgRmlsdGVyJiBmaWx0
ZXIpCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEIzRWxpbWluYXRl
Q29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFM
b2coKm1fdmFsdWUsICI6IGxvb2tpbmcgYmFja3dhcmQgZm9yICIsICpwdHIsICIuLi5cbiIpOwog
ICAgICAgICAKICAgICAgICAgaWYgKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5j
ZSgpKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0VsaW1p
bmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiICAgIEdpdmluZyB1cCBiZWNhdXNlIGZlbmNlcy5cbiIpOwogICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKE1lbW9yeVZh
bHVlKiBtYXRjaCA9IG1fZGF0YS5tZW1vcnlWYWx1ZXNBdFRhaWwuZmluZChwdHIsIGZpbHRlcikp
IHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRl
Q29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgRm91bmQgIiwgKm1hdGNoLCAiIGxvY2FsbHkuXG4iKTsKICAgICAgICAgICAg
IHJldHVybiB7IG1hdGNoIH07CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9kYXRhLndyaXRl
cy5vdmVybGFwcyhyYW5nZSkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAg
ICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1c2Ugb2Ygd3JpdGVz
LlxuIik7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CkBAIC02NDIsMjcgKzY0
NCwyNyBAQCBwcml2YXRlOgogICAgICAgICBNZW1vcnlNYXRjaGVzIG1hdGNoZXM7CiAKICAgICAg
ICAgd2hpbGUgKEJhc2ljQmxvY2sqIGJsb2NrID0gd29ya2xpc3QucG9wKCkpIHsKLSAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhw
cmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
TG9va2luZyBhdCAiLCAqYmxvY2ssICJcbiIpOwogCiAgICAgICAgICAgICBJbXB1cmVCbG9ja0Rh
dGEmIGRhdGEgPSBtX2ltcHVyZUJsb2NrRGF0YVtibG9ja107CiAKICAgICAgICAgICAgIE1lbW9y
eVZhbHVlKiBtYXRjaCA9IGRhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmZpbmQocHRyLCBmaWx0ZXIp
OwogICAgICAgICAgICAgaWYgKG1hdGNoICYmIG1hdGNoICE9IG1fdmFsdWUpIHsKLSAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21t
b25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgRm91bmQgbWF0Y2g6ICIsICptYXRjaCwgIlxuIik7CiAgICAgICAgICAgICAg
ICAgbWF0Y2hlcy5hcHBlbmQobWF0Y2gpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoZGF0YS53cml0ZXMub3ZlcmxhcHMocmFuZ2Up
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEIz
RWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiICAgIEdpdmluZyB1cCBiZWNhdXNlIG9mIHdyaXRlcy5cbiIp
OwogICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmICghYmxvY2stPm51bVByZWRlY2Vzc29ycygpKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVz
c2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAg
IEdpdmluZyB1cCBiZWNhdXNlIGl0J3MgbGl2ZSBhdCByb290LlxuIik7CiAgICAgICAgICAgICAg
ICAgLy8gVGhpcyBlc3NlbnRpYWxseSBwcm92ZXMgdGhhdCB0aGlzIGlzIGxpdmUgYXQgdGhlIHBy
b2xvZ3VlLiBUaGF0IG1lYW5zIHRoYXQgd2UKICAgICAgICAgICAgICAgICAvLyBjYW5ub3QgcmVs
aWFibHkgb3B0aW1pemUgdGhpcyBjYXNlLgpAQCAtNjcyLDcgKzY3NCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICB3b3JrbGlzdC5wdXNoQWxsKGJsb2NrLT5wcmVkZWNlc3NvcnMoKSk7CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29t
bW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2co
IiAgICBHb3QgbWF0Y2hlczogIiwgcG9pbnRlckxpc3REdW1wKG1hdGNoZXMpLCAiXG4iKTsKICAg
ICAgICAgcmV0dXJuIG1hdGNoZXM7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzRml4U1NBLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZpeFNT
QS5jcHAKaW5kZXggZDIwMzgxZDIwMjJmYTA0ZjI2M2E4N2VmYjFiM2NkOTIwMmU2NzU4YS4uYjI4
ZjIxZjExMDdjODI2ZmFmNjJiM2Y4MzcwNjI1ODM2ODdlMzdmNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzRml4U1NBLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNGaXhTU0EuY3BwCkBAIC00OCw3ICs0OCw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgQjMgewogCiBuYW1lc3BhY2UgewogCi1jb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsK
K25hbWVzcGFjZSBCM0ZpeFNTQUludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2Ug
PSBmYWxzZTsKK30KIAogdm9pZCBraWxsRGVhZFZhcmlhYmxlcyhQcm9jZWR1cmUmIHByb2MpCiB7
CkBAIC0xNTcsNyArMTU5LDcgQEAgdm9pZCBmaXhTU0FHbG9iYWxseShQcm9jZWR1cmUmIHByb2Mp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIFZhbHVlKiBwaGkgPSBwcm9jLmFkZDxWYWx1ZT4oUGhpLCB2YXJpYWJs
ZS0+dHlwZSgpLCBibG9jay0+YXQoMCktPm9yaWdpbigpKTsKLSAgICAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkgeworICAgICAgICAgICAgICAgIGlmIChCM0ZpeFNTQUludGVybmFsOjp2ZXJib3Nl
KSB7CiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICAg
ICAiQWRkaW5nIFBoaSBmb3IgIiwgcG9pbnRlckR1bXAodmFyaWFibGUpLCAiIGF0ICIsICpibG9j
aywgIjogIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGRlZXBEdW1wKHByb2MsIHBoaSksICJc
biIpOwpAQCAtMjMxLDcgKzIzMyw3IEBAIHZvaWQgZml4U1NBR2xvYmFsbHkoUHJvY2VkdXJlJiBw
cm9jKQogICAgICAgICAgICAgICAgIFZhcmlhYmxlKiB2YXJpYWJsZSA9IGNhbGNWYXJUb1Zhcmlh
YmxlW2NhbGNWYXItPmluZGV4KCldOwogCiAgICAgICAgICAgICAgICAgVmFsdWUqIG1hcHBlZFZh
bHVlID0gZW5zdXJlTWFwcGluZyh2YXJpYWJsZSwgdXBzaWxvbkluc2VydGlvblBvaW50LCB1cHNp
bG9uT3JpZ2luKTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAg
ICAgIGlmIChCM0ZpeFNTQUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAiTWFwcGVkIHZhbHVlIGZvciAiLCAq
dmFyaWFibGUsICIgd2l0aCBzdWNjZXNzb3IgUGhpICIsICpwaGksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAiIGF0IGVuZCBvZiAiLCAqYmxvY2ssICI6ICIsIHBvaW50ZXJEdW1wKG1hcHBlZFZh
bHVlKSwgIlxuIik7CkBAIC0yNDUsNyArMjQ3LDcgQEAgdm9pZCBmaXhTU0FHbG9iYWxseShQcm9j
ZWR1cmUmIHByb2MpCiAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKICAgICB9
CiAKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChCM0ZpeFNTQUludGVybmFsOjp2ZXJib3Nl
KSB7CiAgICAgICAgIGRhdGFMb2coIkIzIGFmdGVyIFNTQSBjb252ZXJzaW9uOlxuIik7CiAgICAg
ICAgIGRhdGFMb2cocHJvYyk7CiAgICAgfQpAQCAtMjY2LDcgKzI2OCw3IEBAIHZvaWQgZGVtb3Rl
VmFsdWVzKFByb2NlZHVyZSYgcHJvYywgY29uc3QgSW5kZXhTZXQ8VmFsdWUqPiYgdmFsdWVzKQog
ICAgICAgICAgICAgcGhpTWFwLmFkZCh2YWx1ZSwgcHJvYy5hZGRWYXJpYWJsZSh2YWx1ZS0+dHlw
ZSgpKSk7CiAgICAgfQogCi0gICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoQjNGaXhTU0FJbnRl
cm5hbDo6dmVyYm9zZSkgewogICAgICAgICBkYXRhTG9nKCJEZW1vdGluZyB2YWx1ZXMgYXMgZm9s
bG93czpcbiIpOwogICAgICAgICBkYXRhTG9nKCIgICBtYXAgPSAiKTsKICAgICAgICAgQ29tbWFQ
cmludGVyIGNvbW1hOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRm9s
ZFBhdGhDb25zdGFudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRm9sZFBhdGhD
b25zdGFudHMuY3BwCmluZGV4IGI5YmRjOGQ0ZjI4OGI4MmM2MzMxZWYzMTBkMzMzZTNhNTY0N2Uw
NGQuLjIyMjUwY2JjN2YzNWM0Y2ZjZjk5MTZhNWFiMmVlNzI2YWZjNGFkNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZvbGRQYXRoQ29uc3RhbnRzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGb2xkUGF0aENvbnN0YW50cy5jcHAKQEAgLTQxLDcg
KzQxLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5hbWVzcGFjZSB7CiAK
LWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEIzRm9sZFBhdGhDb25zdGFu
dHNJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNs
YXNzIEZvbGRQYXRoQ29uc3RhbnRzIHsKIHB1YmxpYzoKQEAgLTU1LDcgKzU3LDcgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAKLSAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgIGlmIChCM0ZvbGRQYXRoQ29uc3RhbnRzSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICBkYXRhTG9nKCJCMyBiZWZvcmUgZm9sZGluZyBwYXRoIGNvbnN0YW50czog
XG4iLCBtX3Byb2MsICJcbiIpOwogICAgICAgICAKICAgICAgICAgLy8gRmluZCBhbGwgb2YgdGhl
IHZhbHVlcyB0aGF0IGFyZSB0aGUgc3ViamVjdCBvZiBhIGJyYW5jaCBvciBzd2l0Y2guIEZvciBh
bnkgc3VjY2Vzc29yCkBAIC04MCw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUX1VOVVNFRChvdGhlck92ZXJyaWRlLCBvdGhlck92ZXJyaWRlLmJsb2NrICE9IG92
ZXJyaWRlLmJsb2NrKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICBpZiAoQjNGb2xkUGF0aENvbnN0YW50c0ludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgICAgIGRhdGFMb2coIk92ZXJyaWRpbmcgIiwgKnZhbHVlLCAiIGZyb20gIiwg
KmZyb20sICI6ICIsIG92ZXJyaWRlLCAiXG4iKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
Zm9yVmFsdWUuYXBwZW5kKG92ZXJyaWRlKTsKQEAgLTE0OSw3ICsxNTEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG92ZXJyaWRlOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0ZvbGRQYXRoQ29uc3Rh
bnRzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiSW4gYmxvY2sg
IiwgKmJsb2NrLCAiIGdldHRpbmcgb3ZlcnJpZGUgZm9yICIsICp2YWx1ZSwgIjogIiwgcmVzdWx0
LCAiXG4iKTsKIAogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luZmVyU3dpdGNoZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzSW5mZXJTd2l0Y2hlcy5jcHAKaW5kZXggZjI5ZjRmMDk1NGIyYWU3MjAwNWEx
MzAyZWZmY2NkNGUzNGRmYjg3OC4uZWU2MTJmZWYyOGM2YTc3YWFjMTVjOThhOTdhYzkzOTJiMTNj
NWFkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5mZXJTd2l0Y2hl
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5mZXJTd2l0Y2hlcy5jcHAK
QEAgLTQyLDcgKzQyLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5hbWVz
cGFjZSB7CiAKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEIzSW5mZXJT
d2l0Y2hlc0ludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30K
IAogY2xhc3MgSW5mZXJTd2l0Y2hlcyB7CiBwdWJsaWM6CkBAIC01NSw3ICs1Nyw3IEBAIHB1Ymxp
YzoKICAgICAKICAgICBib29sIHJ1bigpCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ZGF0YUxvZygiQjMgYmVmb3JlIGluZmVyU3dpdGNoZXM6XG4iLCBtX3Byb2MpOwogICAgICAgICAK
ICAgICAgICAgYm9vbCBjaGFuZ2VkID0gdHJ1ZTsKQEAgLTYzLDcgKzY1LDcgQEAgcHVibGljOgog
ICAgICAgICB3aGlsZSAoY2hhbmdlZCkgewogICAgICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChC
M0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9n
KCJQZXJmb3JtaW5nIGZpeHBvaW50IGl0ZXJhdGlvbjpcbiIpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jKQpAQCAtNzgsNyArODAsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fcHJvYy5kZWxldGVPcnBoYW5z
KCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAg
aWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRh
dGFMb2coIkIzIGFmdGVyIGluZmVyU3dpdGNoZXM6XG4iLCBtX3Byb2MpOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTk2LDEwICs5OCwxMCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKICAgICAgICAgU3dpdGNoRGVzY3JpcHRp
b24gZGVzY3JpcHRpb24gPSBkZXNjcmliZShibG9jayk7Ci0gICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICBpZiAoQjNJbmZlclN3aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICBkYXRhTG9nKCJEZXNjcmlwdGlvbiBvZiBwcmltYXJ5IGJsb2NrICIsICpibG9jaywgIjogIiwg
ZGVzY3JpcHRpb24sICJcbiIpOwogICAgICAgICBpZiAoIWRlc2NyaXB0aW9uKSB7Ci0gICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGluZyBiZWNhdXNl
IG5vdCBzd2l0Y2gtbGlrZS5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CkBAIC0xMTUsMTcgKzExNywxNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgaWYgKHZhbHVlID09IGRlc2NyaXB0aW9uLmJyYW5jaCkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAg
ICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBCYWlsaW5nIGJlY2F1c2Ugb2YgIiwgZGVlcER1bXAobV9wcm9jLCB2YWx1
ZSksICJcbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGJsb2NrLT5wcmVkZWNlc3Nvcigw
KTsKICAgICAgICAgU3dpdGNoRGVzY3JpcHRpb24gcHJlZGVjZXNzb3JEZXNjcmlwdGlvbiA9IGRl
c2NyaWJlKHByZWRlY2Vzc29yKTsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChC
M0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICBEZXNjcmlwdGlvbiBvZiBwcmVkZWNlc3NvciBibG9jayAiLCAqcHJlZGVjZXNzb3IsICI6ICIs
IHByZWRlY2Vzc29yRGVzY3JpcHRpb24sICJcbiIpOwogICAgICAgICBpZiAoIXByZWRlY2Vzc29y
RGVzY3JpcHRpb24pIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYg
KEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFM
b2coIiAgICBCYWlsaW5nIGJlY2F1c2Ugbm90IHN3aXRjaC1saWtlLlxuIik7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTEzMyw3ICsxMzUsNyBAQCBwcml2YXRlOgog
ICAgICAgICAvLyBCb3RoIHVzIGFuZCB0aGUgcHJlZGVjZXNzb3IgYXJlIHN3aXRjaC1saWtlLCBi
dXQgdGhhdCBkb2Vzbid0IG1lYW4gdGhhdCB3ZSdyZSBjb21wYXRpYmxlLgogICAgICAgICAvLyBX
ZSBtYXkgYmUgc3dpdGNoaW5nIG9uIGRpZmZlcmVudCB2YWx1ZXMhCiAgICAgICAgIGlmIChkZXNj
cmlwdGlvbi5zb3VyY2UgIT0gcHJlZGVjZXNzb3JEZXNjcmlwdGlvbi5zb3VyY2UpIHsKLSAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBCYWlsaW5nIGJlY2F1
c2Ugc291cmNlcyBkb24ndCBtYXRjaC5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CkBAIC0xNDMsNyArMTQ1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8ganVzdCB0
b3RhbGx5IHJlZHVuZGFudCBhbmQgd2Ugc2hvdWxkIGJlIGdldHRpbmcgcmlkIG9mIGl0LiBCdXQg
d2UgZG9uJ3QgaGFuZGxlIHRoYXQgaGVyZSwKICAgICAgICAgLy8geWV0LgogICAgICAgICBpZiAo
cHJlZGVjZXNzb3JEZXNjcmlwdGlvbi5mYWxsVGhyb3VnaC5ibG9jaygpICE9IGJsb2NrKSB7Ci0g
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGluZyBi
ZWNhdXNlIGZhbGwtdGhyb3VnaCBvZiBwcmVkZWNlc3NvciBpcyBub3QgdGhlIHByaW1hcnkgYmxv
Y2suXG4iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMTUxLDE0
ICsxNTMsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlcmUgYWlu
J3Qgbm8gbG9vcHMuCiAgICAgICAgIGlmIChkZXNjcmlwdGlvbi5mYWxsVGhyb3VnaC5ibG9jaygp
ID09IGJsb2NrCiAgICAgICAgICAgICB8fCBkZXNjcmlwdGlvbi5mYWxsVGhyb3VnaC5ibG9jaygp
ID09IHByZWRlY2Vzc29yKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAg
IGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgQmFpbGluZyBiZWNhdXNlIG9mIGZhbGwtdGhyb3VnaCBsb29wLlxuIik7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgZm9yIChTd2l0Y2hD
YXNlIHN3aXRjaENhc2UgOiBkZXNjcmlwdGlvbi5jYXNlcykgewogICAgICAgICAgICAgaWYgKHN3
aXRjaENhc2UudGFyZ2V0QmxvY2soKSA9PSBibG9jawogICAgICAgICAgICAgICAgIHx8IHN3aXRj
aENhc2UudGFyZ2V0QmxvY2soKSA9PSBwcmVkZWNlc3NvcikgewotICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEJhaWxpbmcgYmVjYXVz
ZSBvZiBsb29wIGluIHByaW1hcnkgY2FzZXMuXG4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICB9CkBAIC0xNjYsMTMgKzE2OCwxMyBAQCBwcml2YXRlOgogICAg
ICAgICBmb3IgKFN3aXRjaENhc2Ugc3dpdGNoQ2FzZSA6IHByZWRlY2Vzc29yRGVzY3JpcHRpb24u
Y2FzZXMpIHsKICAgICAgICAgICAgIGlmIChzd2l0Y2hDYXNlLnRhcmdldEJsb2NrKCkgPT0gYmxv
Y2sKICAgICAgICAgICAgICAgICB8fCBzd2l0Y2hDYXNlLnRhcmdldEJsb2NrKCkgPT0gcHJlZGVj
ZXNzb3IpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBp
ZiAoQjNJbmZlclN3aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBCYWlsaW5nIGJlY2F1c2Ugb2YgbG9vcCBpbiBwcmVkZWNlc3NvciBjYXNl
cy5cbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCM0lu
ZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBE
b2luZyBpdCFcbiIpOwogICAgICAgICAvLyBXZSdyZSBjb21taXR0ZWQgdG8gZG9pbmcgdGhlIHRo
aW5nLgogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAppbmRleCA5NjNjMTBlZGM1ZTQ5
MzlmNWZiZTJlZDQyNTY0ZGQzZDdlMDc2M2RkLi4xNDU2N2ZjYzViZGFjOWUwZjhlNzE4MTY4ZDZm
ZjI3NzBjNjQ4ZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
ck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQWlyQXJnLmgiCiAjaW5jbHVkZSAi
QjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tJbnNlcnRpb25TZXQuaCIK
ICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKQEAgLTM5LDExICs0MCwxNSBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAordXNpbmcgQXJnID0gQWlyOjpBcmc7Cit1c2luZyBD
b2RlID0gQWlyOjpDb2RlOwordXNpbmcgVG1wID0gQWlyOjpUbXA7CisKIG5hbWVzcGFjZSB7CiAK
LWNsYXNzIExvd2VyTWFjcm9zIHsKK2NsYXNzIExvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25z
IHsKIHB1YmxpYzoKLSAgICBMb3dlck1hY3JvcyhQcm9jZWR1cmUmIHByb2MpCisgICAgTG93ZXJN
YWNyb3NBZnRlck9wdGltaXphdGlvbnMoUHJvY2VkdXJlJiBwcm9jKQogICAgICAgICA6IG1fcHJv
Yyhwcm9jKQogICAgICAgICAsIG1fYmxvY2tJbnNlcnRpb25TZXQocHJvYykKICAgICAgICAgLCBt
X2luc2VydGlvblNldChwcm9jKQpAQCAtMTgzLDcgKzE4OCw3IEBAIHByaXZhdGU6CiAKIGJvb2wg
bG93ZXJNYWNyb3NJbXBsKFByb2NlZHVyZSYgcHJvYykKIHsKLSAgICBMb3dlck1hY3JvcyBsb3dl
ck1hY3Jvcyhwcm9jKTsKKyAgICBMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucyBsb3dlck1h
Y3Jvcyhwcm9jKTsKICAgICByZXR1cm4gbG93ZXJNYWNyb3MucnVuKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggMTQ4OWMzMTFjNjNlZTAwMmZh
OTFhNzYxYjFkNjA2MGNhZjRlMjkzMS4uNzY0ZGI0Y2JkODY4ZGQ4NTBiZDhhM2FiZDE0ODJhZmE0
MjM4NDJkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fp
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAg
LTY5LDIxICs2OSwyNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAotdXNp
bmcgbmFtZXNwYWNlIEFpcjsKLQogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7CituYW1lc3BhY2UgQjNMb3dlclRvQWlySW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJv
b2wgdmVyYm9zZSA9IGZhbHNlOworfQorCit1c2luZyBBcmcgPSBBaXI6OkFyZzsKK3VzaW5nIElu
c3QgPSBBaXI6Okluc3Q7Cit1c2luZyBDb2RlID0gQWlyOjpDb2RlOwordXNpbmcgVG1wID0gQWly
OjpUbXA7CiAKIC8vIEZJWE1FOiBXZSB3b3VsZG4ndCBuZWVkIHRoaXMgaWYgQWlyIHN1cHBvcnRl
ZCBXaWR0aCBtb2RpZmllcnMgaW4gQWlyOjpLaW5kLgogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2OTI0NwogI2RlZmluZSBPUENPREVfRk9SX1dJRFRIKG9wY29k
ZSwgd2lkdGgpICggXAotICAgICh3aWR0aCkgPT0gV2lkdGg4ID8gb3Bjb2RlICMjIDggOiBcCi0g
ICAgKHdpZHRoKSA9PSBXaWR0aDE2ID8gb3Bjb2RlICMjIDE2IDogXAotICAgICh3aWR0aCkgPT0g
V2lkdGgzMiA/IG9wY29kZSAjIyAzMiA6IFwKLSAgICBvcGNvZGUgIyMgNjQpCisgICAgKHdpZHRo
KSA9PSBXaWR0aDggPyBBaXI6Om9wY29kZSAjIyA4IDogXAorICAgICh3aWR0aCkgPT0gV2lkdGgx
NiA/IEFpcjo6b3Bjb2RlICMjIDE2IDogICAgXAorICAgICh3aWR0aCkgPT0gV2lkdGgzMiA/IEFp
cjo6b3Bjb2RlICMjIDMyIDogICAgXAorICAgIEFpcjo6b3Bjb2RlICMjIDY0KQogI2RlZmluZSBP
UENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChvcGNvZGUsIHdpZHRoKSAoIFwKLSAgICAod2lkdGgp
ID09IFdpZHRoNjQgPyBvcGNvZGUgIyMgNjQgOiBvcGNvZGUgIyMgMzIpCisgICAgKHdpZHRoKSA9
PSBXaWR0aDY0ID8gQWlyOjpvcGNvZGUgIyMgNjQgOiBBaXI6Om9wY29kZSAjIyAzMikKIAogY2xh
c3MgTG93ZXJUb0FpciB7CiBwdWJsaWM6CkBAIC0xMDcsNiArMTEyLDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBydW4oKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAg
ICAgZm9yIChCMzo6QmFzaWNCbG9jayogYmxvY2sgOiBtX3Byb2NlZHVyZSkKICAgICAgICAgICAg
IG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXSA9IG1fY29kZS5hZGRCbG9jayhibG9jay0+ZnJlcXVlbmN5
KCkpOwogICAgICAgICAKQEAgLTExNCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBz
d2l0Y2ggKHZhbHVlLT5vcGNvZGUoKSkgewogICAgICAgICAgICAgY2FzZSBQaGk6IHsKICAgICAg
ICAgICAgICAgICBtX3BoaVRvVG1wW3ZhbHVlXSA9IG1fY29kZS5uZXdUbXAodmFsdWUtPnJlc3Vs
dEJhbmsoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAg
aWYgKEIzTG93ZXJUb0FpckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nKCJQaGkgdG1wIGZvciAiLCAqdmFsdWUsICI6ICIsIG1fcGhpVG9UbXBbdmFsdWVdLCAi
XG4iKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTE0Niw3ICsx
NTIsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgICAgIG1faXNSYXJlID0gIW1fZmFzdFdvcmtsaXN0
LnNhdyhibG9jayk7CiAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYg
KEIzTG93ZXJUb0FpckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2co
Ikxvd2VyaW5nIEJsb2NrICIsICpibG9jaywgIjpcbiIpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3Rs
eS4KQEAgLTE2MywxMCArMTY5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBpZiAobV9s
b2NrZWQuY29udGFpbnMobV92YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgICAgIG1faW5zdHMuYXBwZW5kKFZlY3RvcjxJbnN0PigpKTsKLSAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQjNMb3dlclRvQWlySW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvd2VyaW5nICIs
IGRlZXBEdW1wKG1fcHJvY2VkdXJlLCBtX3ZhbHVlKSwgIjpcbiIpOwogICAgICAgICAgICAgICAg
IGxvd2VyKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoQjNMb3dlclRvQWlySW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICAg
ICAgZm9yIChJbnN0JiBpbnN0IDogbV9pbnN0cy5sYXN0KCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgIiwgaW5zdCwgIlxuIik7CiAgICAgICAgICAgICAgICAgfQpAQCAt
Mzc5LDcgKzM4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmVhbFRtcCA9IG1fY29k
ZS5uZXdUbXAodmFsdWUtPnJlc3VsdEJhbmsoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fcHJv
Y2VkdXJlLmlzRmFzdENvbnN0YW50KHZhbHVlLT5rZXkoKSkpCiAgICAgICAgICAgICAgICAgICAg
IG1fY29kZS5hZGRGYXN0VG1wKHJlYWxUbXApOwotICAgICAgICAgICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICAgICAgICAgIGlmIChCM0xvd2VyVG9BaXJJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygiVG1wIGZvciAiLCAqdmFsdWUsICI6ICIsIHJlYWxU
bXAsICJcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdG1wID0gcmVhbFRtcDsKQEAg
LTkwNiw2ICs5MTIsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPEFpcjo6T3Bjb2RlIG9wY29k
ZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2ND4KICAgICB2b2lkIGFwcGVuZFNoaWZ0KFZhbHVlKiB2
YWx1ZSwgVmFsdWUqIGFtb3VudCkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7
CiAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUob3Bjb2RlMzIsIG9w
Y29kZTY0LCB2YWx1ZS0+dHlwZSgpKTsKICAgICAgICAgCiAgICAgICAgIGlmIChpbW0oYW1vdW50
KSkgewpAQCAtMTAxOSw2ICsxMDI2LDcgQEAgcHJpdmF0ZToKIAogICAgIEluc3QgY3JlYXRlU3Rv
cmUoQWlyOjpLaW5kIG1vdmUsIFZhbHVlKiB2YWx1ZSwgY29uc3QgQXJnJiBkZXN0KQogICAgIHsK
KyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAgaWYgKGF1dG8gaW1tX3ZhbHVl
ID0gaW1tKHZhbHVlKSkgewogICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSAmJiBpbW1fdmFsdWUu
dmFsdWUoKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChtb3ZlLm9wY29kZSkgewpA
QCAtMTA0Myw2ICsxMDUxLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBBaXI6Ok9wY29kZSBzdG9y
ZU9wY29kZShXaWR0aCB3aWR0aCwgQmFuayBiYW5rKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFt
ZXNwYWNlIEFpcjsKICAgICAgICAgc3dpdGNoICh3aWR0aCkgewogICAgICAgICBjYXNlIFdpZHRo
ODoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0gR1ApOwpAQCAtMTA3Myw2ICsx
MDgyLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGFwcGVuZFN0b3JlKFZhbHVlKiB2YWx1
ZSwgY29uc3QgQXJnJiBkZXN0KQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsK
ICAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IHZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQobWVtb3J5LT5pc1N0b3JlKCkpOwogCkBAIC0xMTAwLDYg
KzExMTAsNyBAQCBwcml2YXRlOgogCiAgICAgQWlyOjpPcGNvZGUgbW92ZUZvclR5cGUoVHlwZSB0
eXBlKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAgc3dpdGNo
ICh0eXBlKSB7CiAgICAgICAgIGNhc2UgSW50MzI6CiAgICAgICAgICAgICByZXR1cm4gTW92ZTMy
OwpAQCAtMTExOSw2ICsxMTMwLDcgQEAgcHJpdmF0ZToKIAogICAgIEFpcjo6T3Bjb2RlIHJlbGF4
ZWRNb3ZlRm9yVHlwZShUeXBlIHR5cGUpCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2Ug
QWlyOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBJbnQzMjoKICAgICAg
ICAgY2FzZSBJbnQ2NDoKQEAgLTExNjIsOCArMTE3NCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBw
cmludChWYWx1ZSogb3JpZ2luLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewogICAg
ICAgICBhdXRvIHByaW50TGlzdCA9IFByaW50ZXI6Om1ha2VQcmludFJlY29yZExpc3QoYXJndW1l
bnRzLi4uKTsKLSAgICAgICAgYXV0byBwcmludFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxQcmludFNw
ZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPFByaW50U3BlY2lhbD4o
cHJpbnRMaXN0KSkpOwotICAgICAgICBJbnN0IGluc3QoUGF0Y2gsIG9yaWdpbiwgQXJnOjpzcGVj
aWFsKHByaW50U3BlY2lhbCkpOworICAgICAgICBhdXRvIHByaW50U3BlY2lhbCA9IHN0YXRpY19j
YXN0PEFpcjo6UHJpbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1
ZTxBaXI6OlByaW50U3BlY2lhbD4ocHJpbnRMaXN0KSkpOworICAgICAgICBJbnN0IGluc3QoQWly
OjpQYXRjaCwgb3JpZ2luLCBBcmc6OnNwZWNpYWwocHJpbnRTcGVjaWFsKSk7CiAgICAgICAgIFBy
aW50ZXI6OmFwcGVuZEFpckFyZ3MoaW5zdCwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1l
bnRzKS4uLik7CiAgICAgICAgIGFwcGVuZChXVEZNb3ZlKGluc3QpKTsKICAgICB9CkBAIC0xNzYy
LDYgKzE3NzQsNyBAQCBwcml2YXRlOgogCiAgICAgSW5zdCBjcmVhdGVCcmFuY2goVmFsdWUqIHZh
bHVlLCBib29sIGludmVydGVkID0gZmFsc2UpCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3Bh
Y2UgQWlyOwogICAgICAgICByZXR1cm4gY3JlYXRlR2VuZXJpY0NvbXBhcmUoCiAgICAgICAgICAg
ICB2YWx1ZSwKICAgICAgICAgICAgIFt0aGlzXSAoCkBAIC0xODQ1LDYgKzE4NTgsNyBAQCBwcml2
YXRlOgogCiAgICAgSW5zdCBjcmVhdGVDb21wYXJlKFZhbHVlKiB2YWx1ZSwgYm9vbCBpbnZlcnRl
ZCA9IGZhbHNlKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAg
cmV0dXJuIGNyZWF0ZUdlbmVyaWNDb21wYXJlKAogICAgICAgICAgICAgdmFsdWUsCiAgICAgICAg
ICAgICBbdGhpc10gKApAQCAtMTkyNCw2ICsxOTM4LDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAg
IEluc3QgY3JlYXRlU2VsZWN0KGNvbnN0IE1vdmVDb25kaXRpb25hbGx5Q29uZmlnJiBjb25maWcp
CiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICBhdXRvIGNyZWF0
ZVNlbGVjdEluc3RydWN0aW9uID0gWyZdIChBaXI6Ok9wY29kZSBvcGNvZGUsIGNvbnN0IEFyZyYg
Y29uZGl0aW9uLCBBcmdQcm9taXNlJiBsZWZ0LCBBcmdQcm9taXNlJiByaWdodCkgLT4gSW5zdCB7
CiAgICAgICAgICAgICBpZiAoaXNWYWxpZEZvcm0ob3Bjb2RlLCBjb25kaXRpb24ua2luZCgpLCBs
ZWZ0LmtpbmQoKSwgcmlnaHQua2luZCgpLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkg
ewogICAgICAgICAgICAgICAgIFRtcCByZXN1bHQgPSB0bXAobV92YWx1ZSk7CkBAIC0xOTg3LDYg
KzIwMDIsNyBAQCBwcml2YXRlOgogICAgIAogICAgIGJvb2wgdHJ5QXBwZW5kTGVhKCkKICAgICB7
CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAgIEFpcjo6T3Bjb2RlIGxlYU9w
Y29kZSA9IHRyeU9wY29kZUZvclR5cGUoTGVhMzIsIExlYTY0LCBtX3ZhbHVlLT50eXBlKCkpOwog
ICAgICAgICBpZiAoIWlzVmFsaWRGb3JtKGxlYU9wY29kZSwgQXJnOjpJbmRleCwgQXJnOjpUbXAp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjExNiw2ICsyMTMyLDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgYXBwZW5kWDg2RGl2KEIzOjpPcGNvZGUgb3ApCiAgICAgeworICAgICAg
ICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICBBaXI6Ok9wY29kZSBjb252ZXJ0VG9Eb3Vi
bGVXb3JkOwogICAgICAgICBBaXI6Ok9wY29kZSBkaXY7CiAgICAgICAgIHN3aXRjaCAobV92YWx1
ZS0+dHlwZSgpKSB7CkBAIC0yMTQzLDYgKzIxNjAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBh
cHBlbmRYODZVRGl2KEIzOjpPcGNvZGUgb3ApCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3Bh
Y2UgQWlyOwogICAgICAgICBBaXI6Ok9wY29kZSBkaXYgPSBtX3ZhbHVlLT50eXBlKCkgPT0gSW50
MzIgPyBYODZVRGl2MzIgOiBYODZVRGl2NjQ7CiAKICAgICAgICAgQVNTRVJUKG9wID09IFVEaXYg
fHwgb3AgPT0gVU1vZCk7CkBAIC0yMTc4LDYgKzIxOTYsNyBAQCBwcml2YXRlOgogICAgIC8vIGdl
bmVyYXRlZC4gSXQgYXNzdW1lcyB0aGF0IHlvdSd2ZSBjb25zdW1lZCBldmVyeXRoaW5nIHRoYXQg
bmVlZHMgdG8gYmUgY29uc3VtZWQuCiAgICAgdm9pZCBhcHBlbmRDQVMoVmFsdWUqIGF0b21pY1Zh
bHVlLCBib29sIGludmVydCkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAg
ICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBhdG9taWNWYWx1ZS0+YXM8QXRvbWljVmFsdWU+
KCk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGF0b21pYyk7CiAgICAgICAgIApAQCAtMjM0MCw2
ICsyMzU5LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGFwcGVuZEdlbmVyYWxBdG9taWMo
QWlyOjpPcGNvZGUgb3Bjb2RlLCBDb21tdXRhdGl2aXR5IGNvbW11dGF0aXZpdHkgPSBOb3RDb21t
dXRhdGl2ZSkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAgIEF0
b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKICAgICAgICAg
CiAgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihtX3ZhbHVlKTsKQEAgLTI0MjQsNiArMjQ0NCw3
IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBsb3dlcigpCiAgICAgeworICAgICAgICB1c2lu
ZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPm9wY29kZSgpKSB7CiAg
ICAgICAgIGNhc2UgQjM6Ok5vcDogewogICAgICAgICAgICAgLy8gWWVzLCB3ZSB3aWxsIHRvdGFs
bHkgc2VlIE5vcCdzIGJlY2F1c2Ugc29tZSBwaGFzZXMgd2lsbCByZXBsYWNlV2l0aE5vcCgpIGlu
c3RlYWQgb2YKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9p
bnRTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRTcGVj
aWFsLmNwcAppbmRleCA0N2YwYWJkMmZmZjNiNTA1NzA4MmQ3MDNhNTE0MjNjOGNiMzhiMGIwLi5i
Mzc1Y2RkMGUwZmIwYmYwODYyMDRkMTI3NjNhYTBkNTJiMTgxMmEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwCkBAIC0zNCw3ICszNCw4
IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi11c2luZyBuYW1lc3BhY2Ug
QWlyOwordXNpbmcgQXJnID0gQWlyOjpBcmc7Cit1c2luZyBJbnN0ID0gQWlyOjpJbnN0OwogCiBQ
YXRjaHBvaW50U3BlY2lhbDo6UGF0Y2hwb2ludFNwZWNpYWwoKQogewpAQCAtMTM1LDggKzEzNiw3
IEBAIGJvb2wgUGF0Y2hwb2ludFNwZWNpYWw6OmFkbWl0c0V4dGVuZGVkT2Zmc2V0QWRkcihJbnN0
JiBpbnN0LCB1bnNpZ25lZCBhcmdJbmRleCkKICAgICByZXR1cm4gYWRtaXRzU3RhY2soaW5zdCwg
YXJnSW5kZXgpOwogfQogCi1DQ2FsbEhlbHBlcnM6Okp1bXAgUGF0Y2hwb2ludFNwZWNpYWw6Omdl
bmVyYXRlKAotICAgIEluc3QmIGluc3QsIENDYWxsSGVscGVycyYgaml0LCBHZW5lcmF0aW9uQ29u
dGV4dCYgY29udGV4dCkKK0NDYWxsSGVscGVyczo6SnVtcCBQYXRjaHBvaW50U3BlY2lhbDo6Z2Vu
ZXJhdGUoSW5zdCYgaW5zdCwgQ0NhbGxIZWxwZXJzJiBqaXQsIEFpcjo6R2VuZXJhdGlvbkNvbnRl
eHQmIGNvbnRleHQpCiB7CiAgICAgUGF0Y2hwb2ludFZhbHVlKiB2YWx1ZSA9IGluc3Qub3JpZ2lu
LT5hczxQYXRjaHBvaW50VmFsdWU+KCk7CiAgICAgQVNTRVJUKHZhbHVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAKaW5kZXggMWM3
YjBkMDAyYTFiOTE5ZTIzMGZlNjQ2YjAzMmU0YTRlOTljZDE2MS4uNmQzMWY3Y2JjMDQ2N2NiZGQ2
ZjZlM2M1OGM2MGNjM2U5MTdjY2ViYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAKQEAgLTM5LDcgKzM5LDkgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZh
bHNlOworbmFtZXNwYWNlIEIzUmVkdWNlRG91YmxlVG9GbG9hdEludGVybmFsIHsKK3N0YXRpYyBj
b25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIGJvb2wgcHJpbnRSZW1haW5pbmdDb252ZXJz
aW9ucyA9IGZhbHNlOwogCiBjbGFzcyBEb3VibGVUb0Zsb2F0UmVkdWN0aW9uIHsKQEAgLTEyOCw3
ICsxMzAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICB9IHdoaWxlIChjaGFu
Z2VkUGhpU3RhdGUpOwogCi0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChCM1Jl
ZHVjZURvdWJsZVRvRmxvYXRJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxv
ZygiQ29udmVyc2lvbiBjYW5kaWRhdGVzOlxuIik7CiAgICAgICAgICAgICBmb3IgKEJhc2ljQmxv
Y2sqIGJsb2NrIDogbV9wcm9jZWR1cmUpIHsKICAgICAgICAgICAgICAgICBmb3IgKFZhbHVlKiB2
YWx1ZSA6ICpibG9jaykgewpAQCAtMTkyLDcgKzE5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gd2hpbGUgKGNoYW5nZWRQaGlTdGF0ZSk7CiAKLSAgICAgICAgaWYgKHZl
cmJvc2UpIHsKKyAgICAgICAgaWYgKEIzUmVkdWNlRG91YmxlVG9GbG9hdEludGVybmFsOjp2ZXJi
b3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJQaGlzIGNvbnRhaW5pbmcgZmxvYXQgdmFsdWVz
OlxuIik7CiAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jZWR1cmUp
IHsKICAgICAgICAgICAgICAgICBmb3IgKFZhbHVlKiB2YWx1ZSA6ICpibG9jaykgewpAQCAtNDg5
LDEzICs0OTEsMTMgQEAgdm9pZCByZWR1Y2VEb3VibGVUb0Zsb2F0KFByb2NlZHVyZSYgcHJvY2Vk
dXJlKQogewogICAgIFBoYXNlU2NvcGUgcGhhc2VTY29wZShwcm9jZWR1cmUsICJyZWR1Y2VEb3Vi
bGVUb0Zsb2F0Iik7CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQjNSZWR1Y2VEb3VibGVU
b0Zsb2F0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkJlZm9yZSBEb3VibGVU
b0Zsb2F0UmVkdWN0aW9uOlxuIiwgcHJvY2VkdXJlLCAiXG4iKTsKIAogICAgIERvdWJsZVRvRmxv
YXRSZWR1Y3Rpb24gZG91YmxlVG9GbG9hdFJlZHVjdGlvbihwcm9jZWR1cmUpOwogICAgIGRvdWJs
ZVRvRmxvYXRSZWR1Y3Rpb24ucnVuKCk7CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQjNS
ZWR1Y2VEb3VibGVUb0Zsb2F0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkFm
dGVyIERvdWJsZVRvRmxvYXRSZWR1Y3Rpb246XG4iLCBwcm9jZWR1cmUsICJcbiIpOwogCiAgICAg
cHJpbnRHcmFwaElmQ29udmVydGluZyhwcm9jZWR1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCmluZGV4IGMyMmU5YjQ1M2QwOTUyOTY3ZjIyYTZm
ZmJhNjQ5MWZmZDAwZjljNmMuLjU1MDJkNWU0N2U1ODcwNjEwNjJiMTY4NmQ5YmIzYzI2OTM1OGI5
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3Ro
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAK
QEAgLTg4LDcgKzg4LDkgQEAgbmFtZXNwYWNlIHsKIC8vIGNvbnN0YW50cyB0aGVuIHRoZSBjYW5v
bmljYWwgZm9ybSBpbnZvbHZlcyB0aGUgbG93ZXItaW5kZXhlZCB2YWx1ZSBmaXJzdC4gR2l2ZW4g
QWRkKHgsIHkpLCBpdCdzCiAvLyBjYW5vbmljYWwgaWYgeC0+aW5kZXgoKSA8PSB5LT5pbmRleCgp
LgogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBCM1JlZHVjZVN0cmVuZ3RoSW50
ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiAvLyBGSVhN
RTogVGhpcyBJbnRSYW5nZSBzdHVmZiBzaG91bGQgYmUgcmVmYWN0b3JlZCBpbnRvIGEgZ2VuZXJh
bCBjb25zdGFudCBwcm9wYWdhdG9yLiBJdCdzIHdlaXJkCiAvLyB0aGF0IGl0J3MganVzdCBzaXR0
aW5nIGhlcmUgaW4gdGhpcyBmaWxlLgpAQCAtNDE0LDcgKzQxNiw3IEBAIHB1YmxpYzoKIAogICAg
ICAgICAgICAgaWYgKGZpcnN0KQogICAgICAgICAgICAgICAgIGZpcnN0ID0gZmFsc2U7Ci0gICAg
ICAgICAgICBlbHNlIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICBlbHNlIGlmIChCM1JlZHVj
ZVN0cmVuZ3RoSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJC
MyBhZnRlciBpdGVyYXRpb24gIyIsIGluZGV4IC0gMSwgIiBvZiByZWR1Y2VTdHJlbmd0aDpcbiIp
OwogICAgICAgICAgICAgICAgIGRhdGFMb2cobV9wcm9jKTsKICAgICAgICAgICAgIH0KQEAgLTQ1
Miw3ICs0NTQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbV9ibG9jayA9IGJsb2NrOwog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZvciAobV9pbmRleCA9IDA7IG1faW5k
ZXggPCBibG9jay0+c2l6ZSgpOyArK21faW5kZXgpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEIzUmVkdWNlU3RyZW5ndGhJbnRl
cm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiTG9va2luZyBhdCAiLCAqYmxvY2ssICIgIyIsIG1faW5k
ZXgsICI6ICIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVlcER1bXAobV9wcm9jLCBi
bG9jay0+YXQobV9pbmRleCkpLCAiXG4iKTsKQEAgLTIwMzUsNyArMjAzNyw3IEBAIHByaXZhdGU6
CiAgICAgLy8gZWFybHkuCiAgICAgdm9pZCBzcGVjaWFsaXplU2VsZWN0KFZhbHVlKiBzb3VyY2Up
CiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEIzUmVkdWNlU3RyZW5n
dGhJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIlNwZWNpYWxpemluZyBz
ZWxlY3Q6ICIsIGRlZXBEdW1wKG1fcHJvYywgc291cmNlKSwgIlxuIik7CiAKICAgICAgICAgLy8g
VGhpcyBtdXRhdGVzIHN0YXJ0SW5kZXggdG8gYWNjb3VudCBmb3IgdGhlIGZhY3QgdGhhdCBtX2Js
b2NrIGdvdCB0aGUgZnJvbnQgb2YgaXQKQEAgLTIyNzYsNyArMjI3OCw3IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIHNpbXBsaWZ5Q0ZHKCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKSB7Cisg
ICAgICAgIGlmIChCM1JlZHVjZVN0cmVuZ3RoSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAg
ICAgIGRhdGFMb2coIkJlZm9yZSBzaW1wbGlmeUNGRzpcbiIpOwogICAgICAgICAgICAgZGF0YUxv
ZyhtX3Byb2MpOwogICAgICAgICB9CkBAIC0yMzAxLDcgKzIzMDMsNyBAQCBwcml2YXRlOgogICAg
ICAgICAvLyBpdGVyYXRpb25zIG5lZWRlZCB0byBraWxsIGEgbG90IG9mIGNvZGUuCiAKICAgICAg
ICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fcHJvYykgewotICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICBpZiAoQjNSZWR1Y2VTdHJlbmd0aEludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIGJsb2NrICIsICpibG9jaywg
IjpcbiIpOwogCiAgICAgICAgICAgICBjaGVja1ByZWRlY2Vzc29yVmFsaWRpdHkoKTsKQEAgLTIz
MTcsNyArMjMxOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICYmIHN1Y2Nlc3Nv
ci0+bGFzdCgpLT5vcGNvZGUoKSA9PSBKdW1wKSB7CiAgICAgICAgICAgICAgICAgICAgIEJhc2lj
QmxvY2sqIG5ld1N1Y2Nlc3NvciA9IHN1Y2Nlc3Nvci0+c3VjY2Vzc29yQmxvY2soMCk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChuZXdTdWNjZXNzb3IgIT0gc3VjY2Vzc29yKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKEIzUmVkdWNlU3RyZW5ndGhJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJS
ZXBsYWNpbmcgIiwgcG9pbnRlckR1bXAoYmxvY2spLCAiLT4iLCBwb2ludGVyRHVtcChzdWNjZXNz
b3IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHdpdGggIiwgcG9pbnRlckR1
bXAoYmxvY2spLCAiLT4iLCBwb2ludGVyRHVtcChuZXdTdWNjZXNzb3IpLApAQCAtMjM0OCw3ICsy
MzUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAoYWxsU2FtZSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChCM1JlZHVjZVN0cmVuZ3RoSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hh
bmdpbmcgIiwgcG9pbnRlckR1bXAoYmxvY2spLCAiJ3MgdGVybWluYWwgdG8gYSBKdW1wLlxuIik7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0yMzg3LDcgKzIzODksNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIG5ld1N1Y2Nlc3NvciA6IGJs
b2NrLT5zdWNjZXNzb3JCbG9ja3MoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1N1Y2Nl
c3Nvci0+cmVwbGFjZVByZWRlY2Vzc29yKHN1Y2Nlc3NvciwgYmxvY2spOwogCi0gICAgICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChCM1JlZHVj
ZVN0cmVuZ3RoSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1lcmdlZCAiLCBwb2ludGVyRHVt
cChibG9jayksICItPiIsIHBvaW50ZXJEdW1wKHN1Y2Nlc3NvciksICJcbiIpOwogICAgICAgICAg
ICAgICAgICAgICB9CkBAIC0yMzk3LDcgKzIzOTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
fQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1fY2hhbmdlZENGRyAmJiB2ZXJib3NlKSB7Cisg
ICAgICAgIGlmIChtX2NoYW5nZWRDRkcgJiYgQjNSZWR1Y2VTdHJlbmd0aEludGVybmFsOjp2ZXJi
b3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJCMyBhZnRlciBzaW1wbGlmeUNGRzpcbiIpOwog
ICAgICAgICAgICAgZGF0YUxvZyhtX3Byb2MpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmNwcAppbmRl
eCBiYmE4NGNhZjhiNGJlMDljMjg4NjNjNDI5MDIwODUyZTcwNTExNjIyLi4zODllZjhiOWNhMmQ2
MTBlZmRhNTdiOWQ4MGVhOTNlYmI1ODJlMTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5jcHAKQEAgLTM0LDggKzM0
LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKLXVzaW5nIG5hbWVzcGFj
ZSBBaXI7Ci0KIGNvbnN0IFJlZ2lzdGVyU2V0JiBTdGFja21hcEdlbmVyYXRpb25QYXJhbXM6OnVz
ZWRSZWdpc3RlcnMoKSBjb25zdAogewogICAgIEFTU0VSVChtX2NvbnRleHQuY29kZS0+bmVlZHNV
c2VkUmVnaXN0ZXJzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
U3RhY2ttYXBTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFw
U3BlY2lhbC5jcHAKaW5kZXggNjAzNzBjNTc4ZGRmYzMyOTE4ZWZmYjVhMWJkZTg1NzhlOTNmMmY3
MC4uNWViNWI5YjBlNjdkMzczYzM5YmM3ZDk2ZDkzZWQ5ZjZhYzVkMTg0NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwCkBAIC0zNCw3ICszNCw5
IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi11c2luZyBuYW1lc3BhY2Ug
QWlyOwordXNpbmcgQXJnID0gQWlyOjpBcmc7Cit1c2luZyBJbnN0ID0gQWlyOjpJbnN0OwordXNp
bmcgVG1wID0gQWlyOjpUbXA7CiAKIFN0YWNrbWFwU3BlY2lhbDo6U3RhY2ttYXBTcGVjaWFsKCkK
IHsKQEAgLTIxMCw4ICsyMTIsNyBAQCBib29sIFN0YWNrbWFwU3BlY2lhbDo6YWRtaXRzU3RhY2tJ
bXBsKAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotVmVjdG9yPFZhbHVlUmVwPiBTdGFja21hcFNw
ZWNpYWw6OnJlcHNJbXBsKAotICAgIEdlbmVyYXRpb25Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25l
ZCBudW1JZ25vcmVkQjNBcmdzLCB1bnNpZ25lZCBudW1JZ25vcmVkQWlyQXJncywgSW5zdCYgaW5z
dCkKK1ZlY3RvcjxWYWx1ZVJlcD4gU3RhY2ttYXBTcGVjaWFsOjpyZXBzSW1wbChBaXI6OkdlbmVy
YXRpb25Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCBudW1JZ25vcmVkQjNBcmdzLCB1bnNpZ25l
ZCBudW1JZ25vcmVkQWlyQXJncywgSW5zdCYgaW5zdCkKIHsKICAgICBWZWN0b3I8VmFsdWVSZXA+
IHJlc3VsdDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5zdC5vcmlnaW4tPm51bUNo
aWxkcmVuKCkgLSBudW1JZ25vcmVkQjNBcmdzOyArK2kpCkBAIC0yNjcsNyArMjY4LDcgQEAgYm9v
bCBTdGFja21hcFNwZWNpYWw6OmlzQXJnVmFsaWRGb3JSZXAoQWlyOjpDb2RlJiBjb2RlLCBjb25z
dCBBaXI6OkFyZyYgYXJnLCBjb24KICAgICB9CiB9CiAKLVZhbHVlUmVwIFN0YWNrbWFwU3BlY2lh
bDo6cmVwRm9yQXJnKENvZGUmIGNvZGUsIGNvbnN0IEFyZyYgYXJnKQorVmFsdWVSZXAgU3RhY2tt
YXBTcGVjaWFsOjpyZXBGb3JBcmcoQWlyOjpDb2RlJiBjb2RlLCBjb25zdCBBcmcmIGFyZykKIHsK
ICAgICBzd2l0Y2ggKGFyZy5raW5kKCkpIHsKICAgICBjYXNlIEFyZzo6VG1wOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENv
bG9yaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVTdGFj
a0J5R3JhcGhDb2xvcmluZy5jcHAKaW5kZXggZTg2MGQ5Y2NjNWNiMGFlMWQ4N2MzYWZlZmRhYmY4
ODY2ZjMxN2QxYS4uZWQ2N2QxYzdjZDg5ZGIwOGMwZjk4Y2YxZjY2M2ExZjVhYmM1MmUzZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVN0YWNrQnlH
cmFwaENvbG9yaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFs
bG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcuY3BwCkBAIC00Miw3ICs0Miw5IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKIAogbmFtZXNwYWNlIHsKIAot
Y29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgQWlyQWxsb2NhdGVTdGFja0J5
R3JhcGhDb2xvcmluZ0ludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxz
ZTsKK30KIAogc3RydWN0IENvYWxlc2NhYmxlTW92ZSB7CiAgICAgQ29hbGVzY2FibGVNb3ZlKCkK
QEAgLTE1Myw3ICsxNTUsNyBAQCB2b2lkIGFsbG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcoQ29k
ZSYgY29kZSkKICAgICAgICAgU3RhY2tTbG90TGl2ZW5lc3M6OkxvY2FsQ2FsYyBsb2NhbENhbGMo
bGl2ZW5lc3MsIGJsb2NrKTsKIAogICAgICAgICBhdXRvIGludGVyZmVyZSA9IFsmXSAodW5zaWdu
ZWQgaW5zdEluZGV4KSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlm
IChBaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiSW50ZXJmZXJpbmc6ICIsIFdURjo6cG9pbnRlckxpc3REdW1w
KGxvY2FsQ2FsYy5saXZlKCkpLCAiXG4iKTsKIAogICAgICAgICAgICAgSW5zdCogcHJldkluc3Qg
PSBibG9jay0+Z2V0KGluc3RJbmRleCk7CkBAIC0xODUsNyArMTg3LDcgQEAgdm9pZCBhbGxvY2F0
ZVN0YWNrQnlHcmFwaENvbG9yaW5nKENvZGUmIGNvZGUpCiAgICAgICAgIH07CiAKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbnN0SW5kZXggPSBibG9jay0+c2l6ZSgpOyBpbnN0SW5kZXgtLTspIHsK
LSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEFpckFsbG9jYXRlU3Rh
Y2tCeUdyYXBoQ29sb3JpbmdJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRh
TG9nKCJBbmFseXppbmc6ICIsIGJsb2NrLT5hdChpbnN0SW5kZXgpLCAiXG4iKTsKIAogICAgICAg
ICAgICAgLy8gS2lsbCBkZWFkIHN0b3Jlcy4gRm9yIHNpbXBsaWNpdHkgd2Ugc2F5IHRoYXQgYSBz
dG9yZSBpcyBraWxsYWJsZSBpZiBpdCBoYXMgb25seSBsYXRlCkBAIC0yMzIsNyArMjM0LDcgQEAg
dm9pZCBhbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nKENvZGUmIGNvZGUpCiAgICAgICAgICAg
ICB9KTsKICAgICB9CiAKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChBaXJBbGxvY2F0ZVN0
YWNrQnlHcmFwaENvbG9yaW5nSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZm9yIChTdGFj
a1Nsb3QqIHNsb3QgOiBjb2RlLnN0YWNrU2xvdHMoKSkKICAgICAgICAgICAgIGRhdGFMb2coIklu
dGVyZmVyZW5jZSBvZiAiLCBwb2ludGVyRHVtcChzbG90KSwgIjogIiwgcG9pbnRlckxpc3REdW1w
KGludGVyZmVyZW5jZVtzbG90XSksICJcbiIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZmbGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJFbWl0U2h1ZmZsZS5jcHAKaW5kZXggNzNkNzEwZmY2OWU3MThlYjRi
ZTMwNjljMWMxZDgwYWZiOWM2NDk2Ny4uNzE2NmVkODY5NGVhM2YxODQyNGZkMjNlODAyMTA5ODA1
ZjYxMmJmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbWl0
U2h1ZmZsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbWl0U2h1
ZmZsZS5jcHAKQEAgLTM3LDcgKzM3LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7
IG5hbWVzcGFjZSBBaXIgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsK
K25hbWVzcGFjZSBBaXJFbWl0U2h1ZmZsZUludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZl
cmJvc2UgPSBmYWxzZTsKK30KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KIFRtcCBmaW5k
UG9zc2libGVTY3JhdGNoKENvZGUmIGNvZGUsIEJhbmsgYmFuaywgY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikgewpAQCAtMTI1LDcgKzEyNyw3IEBAIFZlY3RvcjxJbnN0PiBlbWl0U2h1ZmZsZSgKICAg
ICBDb2RlJiBjb2RlLCBWZWN0b3I8U2h1ZmZsZVBhaXI+IHBhaXJzLCBzdGQ6OmFycmF5PEFyZywg
Mj4gc2NyYXRjaGVzLCBCYW5rIGJhbmssCiAgICAgVmFsdWUqIG9yaWdpbikKIHsKLSAgICBpZiAo
dmVyYm9zZSkgeworICAgIGlmIChBaXJFbWl0U2h1ZmZsZUludGVybmFsOjp2ZXJib3NlKSB7CiAg
ICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAiRGVhbGluZyB3aXRoIHBhaXJzOiAiLCBsaXN0
RHVtcChwYWlycyksICIgYW5kIHNjcmF0Y2hlcyAiLCBzY3JhdGNoZXNbMF0sICIsICIsCiAgICAg
ICAgICAgICBzY3JhdGNoZXNbMV0sICJcbiIpOwpAQCAtMTg1LDcgKzE4Nyw3IEBAIFZlY3RvcjxJ
bnN0PiBlbWl0U2h1ZmZsZSgKICAgICAgICAgICAgIEFTU0VSVChjdXJyZW50UGFpcnMuaXNFbXB0
eSgpKTsKICAgICAgICAgICAgIEFyZyBvcmlnaW5hbFNyYyA9IG1hcHBpbmcuYmVnaW4oKS0+a2V5
OwogICAgICAgICAgICAgQVNTRVJUKCFzaGlmdHMuY29udGFpbnMob3JpZ2luYWxTcmMpKTsKLSAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEFpckVtaXRTaHVmZmxlSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiUHJvY2Vzc2luZyBmcm9t
ICIsIG9yaWdpbmFsU3JjLCAiXG4iKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgR3JhcGhO
b2RlV29ya2xpc3Q8QXJnPiB3b3JrbGlzdDsKQEAgLTE5NSw3ICsxOTcsNyBAQCBWZWN0b3I8SW5z
dD4gZW1pdFNodWZmbGUoCiAgICAgICAgICAgICAgICAgaWYgKGl0ZXIgPT0gbWFwcGluZy5lbmQo
KSkgewogICAgICAgICAgICAgICAgICAgICAvLyBXaXRoIGEgc2hpZnQgaXQncyBwb3NzaWJsZSB0
aGF0IHdlIHByZXZpb3VzbHkgYnVpbHQgdGhlIHRhaWwgb2YgdGhpcyBzaGlmdC4KICAgICAgICAg
ICAgICAgICAgICAgLy8gU2VlIGlmIHRoYXQncyB0aGUgY2FzZSBub3cuCi0gICAgICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoQWlyRW1pdFNodWZm
bGVJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIlRy
eWluZyB0byBhcHBlbmQgc2hpZnQgYXQgIiwgc3JjLCAiXG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgY3VycmVudFBhaXJzLmFwcGVuZFZlY3RvcihzaGlmdHMudGFrZShzcmMpKTsKICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CkBAIC0yMTMsNyArMjE1LDcgQEAgVmVjdG9yPEluc3Q+IGVt
aXRTaHVmZmxlKAogICAgICAgICAgICAgQVNTRVJUKGN1cnJlbnRQYWlycy5zaXplKCkpOwogICAg
ICAgICAgICAgQVNTRVJUKGN1cnJlbnRQYWlyc1swXS5zcmMoKSA9PSBvcmlnaW5hbFNyYyk7CiAK
LSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEFpckVtaXRTaHVmZmxl
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiY3VycmVudFBhaXJz
ID0gIiwgbGlzdER1bXAoY3VycmVudFBhaXJzKSwgIlxuIik7CiAKICAgICAgICAgICAgIGJvb2wg
aXNSb3RhdGUgPSBmYWxzZTsKQEAgLTIyNSw3ICsyMjcsNyBAQCBWZWN0b3I8SW5zdD4gZW1pdFNo
dWZmbGUoCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChpc1JvdGF0ZSkgewotICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChBaXJFbWl0U2h1
ZmZsZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJJdCdz
IGEgcm90YXRlLlxuIik7CiAgICAgICAgICAgICAgICAgUm90YXRlIHJvdGF0ZTsKIApAQCAtMjc3
LDE0ICsyNzksMTQgQEAgVmVjdG9yPEluc3Q+IGVtaXRTaHVmZmxlKAogICAgICAgICAgICAgICAg
IHJvdGF0ZXMuYXBwZW5kKFdURk1vdmUocm90YXRlKSk7CiAgICAgICAgICAgICAgICAgY3VycmVu
dFBhaXJzLnNocmluaygwKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEFpckVtaXRTaHVmZmxlSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkl0J3MgYSBzaGlmdC5cbiIp
OwogICAgICAgICAgICAgICAgIHNoaWZ0cy5hZGQob3JpZ2luYWxTcmMsIFdURk1vdmUoY3VycmVu
dFBhaXJzKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAodmVy
Ym9zZSkgeworICAgIGlmIChBaXJFbWl0U2h1ZmZsZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAg
ICAgIGRhdGFMb2coIlNoaWZ0czpcbiIpOwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogc2hp
ZnRzKQogICAgICAgICAgICAgZGF0YUxvZygiICAgICIsIGVudHJ5LmtleSwgIjogIiwgbGlzdER1
bXAoZW50cnkudmFsdWUpLCAiXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCmluZGV4IDljYjExMDFhMTFmMjM1MTdjMjk5
MzNiZmFiYTlhM2M5MjFhODY2YWUuLjYwYThjYzAzNWZmMTI5MDU5MTA1ZWQ2NWVjZjI1MzMyNmM4
ZTUzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2
aW91c1NwaWxscy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhP
YnZpb3VzU3BpbGxzLmNwcApAQCAtMzksNyArMzksOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9
IGZhbHNlOworbmFtZXNwYWNlIEFpckZpeE9idmlvdXNTcGlsbHNJbnRlcm5hbCB7CitzdGF0aWMg
Y29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIEZpeE9idmlvdXNTcGlsbHMg
ewogcHVibGljOgpAQCAtNTEsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJ1bigpCiAg
ICAgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEFpckZpeE9idmlvdXNTcGls
bHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkNvZGUgYmVmb3JlIGZp
eE9idmlvdXNTcGlsbHM6XG4iLCBtX2NvZGUpOwogICAgICAgICAKICAgICAgICAgY29tcHV0ZUFs
aWFzZXMoKTsKQEAgLTczLDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAo
IW1fc3RhdGUud2FzVmlzaXRlZCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQWlyRml4T2J2
aW91c1NwaWxsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KCJFeGVjdXRpbmcgYmxvY2sgIiwgKm1fYmxvY2ssICI6ICIsIG1fc3RhdGUsICJcbiIpOwogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZvciAobV9pbnN0SW5kZXggPSAwOyBtX2lu
c3RJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbV9pbnN0SW5kZXgpCkBAIC0xNjksMTMgKzE3MSwx
MyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgSW5zdCYgaW5zdCA9IG1fYmxvY2stPmF0KG1f
aW5zdEluZGV4KTsKIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEFpckZpeE9i
dmlvdXNTcGlsbHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBF
eGVjdXRpbmcgIiwgaW5zdCwgIjogIiwgbV9zdGF0ZSwgIlxuIik7CiAKICAgICAgICAgSW5zdDo6
Zm9yRWFjaERlZldpdGhFeHRyYUNsb2JiZXJlZFJlZ3M8QXJnPigKICAgICAgICAgICAgICZpbnN0
LCAmaW5zdCwKICAgICAgICAgICAgIFsmXSAoY29uc3QgQXJnJiBhcmcsIEFyZzo6Um9sZSwgQmFu
aywgV2lkdGgpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAg
ICBpZiAoQWlyRml4T2J2aW91c1NwaWxsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgICAgIENsb2JiZXJpbmcgIiwgYXJnLCAiXG4iKTsKICAgICAg
ICAgICAgICAgICBtX3N0YXRlLmNsb2JiZXIoYXJnKTsKICAgICAgICAgICAgIH0pOwpAQCAtMTkw
LDcgKzE5Miw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBJbnN0JiBpbnN0ID0gbV9ibG9j
ay0+YXQobV9pbnN0SW5kZXgpOwogCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAo
QWlyRml4T2J2aW91c1NwaWxsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxv
ZygiRml4aW5nIGluc3QgIiwgaW5zdCwgIjogIiwgbV9zdGF0ZSwgIlxuIik7CiAgICAgICAgIAog
ICAgICAgICAvLyBDaGVjayBpZiBhbGlhcyBhbmFseXNpcyBzYXlzIHRoYXQgdGhpcyBpcyB1bm5l
Y2Vzc2FyeS4KQEAgLTI2NywxMyArMjY5LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
Y2FzZSBXaWR0aDY0OgogICAgICAgICAgICAgICAgICAgICBpZiAoYWxpYXMtPm1vZGUgIT0gUmVn
U2xvdDo6QWxsQml0cykKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChBaXJGaXhP
YnZpb3VzU3BpbGxzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgUmVwbGFjaW5nICIsIGFyZywgIiB3aXRoICIsIGFsaWFzLT5yZWcsICJcbiIp
OwogICAgICAgICAgICAgICAgICAgICBhcmcgPSBUbXAoYWxpYXMtPnJlZyk7CiAgICAgICAgICAg
ICAgICAgICAgIGRpZFRoaW5ncyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgICAgICBjYXNlIFdpZHRoMzI6Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoQWlyRml4T2J2aW91c1NwaWxsc0ludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIFJlcGxh
Y2luZyAiLCBhcmcsICIgd2l0aCAiLCBhbGlhcy0+cmVnLCAiIChzdWJ3aWR0aCBjYXNlKVxuIik7
CiAgICAgICAgICAgICAgICAgICAgIGFyZyA9IFRtcChhbGlhcy0+cmVnKTsKICAgICAgICAgICAg
ICAgICAgICAgZGlkVGhpbmdzID0gdHJ1ZTsKQEAgLTI4NSw3ICsyODcsNyBAQCBwcml2YXRlOgog
CiAgICAgICAgICAgICAvLyBSZXZlcnQgdG8gaW1tZWRpYXRlIGlmIHRoYXQgZGlkbid0IHdvcmsu
CiAgICAgICAgICAgICBpZiAoY29uc3QgU2xvdENvbnN0KiBhbGlhcyA9IG1fc3RhdGUuZ2V0U2xv
dENvbnN0KGFyZy5zdGFja1Nsb3QoKSkpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgICAgICBpZiAoQWlyRml4T2J2aW91c1NwaWxsc0ludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgUmVwbGFjaW5nICIsIGFyZywgIiB3
aXRoIGNvbnN0YW50ICIsIGFsaWFzLT5jb25zdGFudCwgIlxuIik7CiAgICAgICAgICAgICAgICAg
aWYgKEFyZzo6aXNWYWxpZEltbUZvcm0oYWxpYXMtPmNvbnN0YW50KSkKICAgICAgICAgICAgICAg
ICAgICAgYXJnID0gQXJnOjppbW0oYWxpYXMtPmNvbnN0YW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcAppbmRleCAx
ZmEwNTNkYjljYTdmYzRjMzg2ZmIxOTM3MTUyMjU1YmVlZDcxMzliLi5iZmVmM2IzZjRmMTFhNTlh
MjFkMmI4MWNjZTE5MjViY2Q4MWU1NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpckxvd2VyQWZ0ZXJSZWdBbGxvYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwCkBAIC00Niw3ICs0Niw5IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKIAogbmFtZXNw
YWNlIHsKIAotYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgQWlyTG93ZXJBZnRlclJl
Z0FsbG9jSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQog
ICAgIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKQEAgLTU0LDcgKzU2LDcgQEAgdm9pZCBs
b3dlckFmdGVyUmVnQWxsb2MoQ29kZSYgY29kZSkKIHsKICAgICBQaGFzZVNjb3BlIHBoYXNlU2Nv
cGUoY29kZSwgImxvd2VyQWZ0ZXJSZWdBbGxvYyIpOwogCi0gICAgaWYgKHZlcmJvc2UpCisgICAg
aWYgKEFpckxvd2VyQWZ0ZXJSZWdBbGxvY0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRh
TG9nKCJDb2RlIGJlZm9yZSBsb3dlckFmdGVyUmVnQWxsb2M6XG4iLCBjb2RlKTsKICAgICAKICAg
ICBhdXRvIGlzUmVsZXZhbnQgPSBbXSAoSW5zdCYgaW5zdCkgLT4gYm9vbCB7CkBAIC0yMjEsNyAr
MjIzLDcgQEAgdm9pZCBsb3dlckFmdGVyUmVnQWxsb2MoQ29kZSYgY29kZSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YWNrU2xvdHMuYXBwZW5kKHN0YWNrU2xvdCk7CiAgICAgICAgICAgICAg
ICAgICAgIH0pOwogCi0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAg
ICAgaWYgKEFpckxvd2VyQWZ0ZXJSZWdBbGxvY0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJQcmUtY2FsbCBwYWlycyBmb3IgIiwgaW5zdCwgIjogIiwgbGlz
dER1bXAocGFpcnMpLCAiXG4iKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBp
bnNlcnRpb25TZXQuaW5zZXJ0SW5zdHMoCkBAIC0yNzMsNyArMjc1LDcgQEAgdm9pZCBsb3dlckFm
dGVyUmVnQWxsb2MoQ29kZSYgY29kZSkKICAgICAgICAgICAgIH0pOwogICAgIH0KIAotICAgIGlm
ICh2ZXJib3NlKQorICAgIGlmIChBaXJMb3dlckFmdGVyUmVnQWxsb2NJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgZGF0YUxvZygiQ29kZSBhZnRlciBsb3dlckFmdGVyUmVnQWxsb2M6XG4iLCBj
b2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJT
dGFja0FsbG9jYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTdGFj
a0FsbG9jYXRpb24uY3BwCmluZGV4IDM5MjIyM2NhODg1ODA1YzVmOTZkMmZiYjg4MzlkMTIwMzlj
NjZjY2YuLjZiNmEyNmFlN2VmYmI3ZDlmM2YyZWExYmVhNjZiYWUzNGQ1OGI2ZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3RhY2tBbGxvY2F0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclN0YWNrQWxsb2NhdGlvbi5jcHAK
QEAgLTM4LDcgKzM4LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFj
ZSBBaXIgewogCiBuYW1lc3BhY2UgewogCi1jb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK25h
bWVzcGFjZSBBaXJTdGFja0FsbG9jYXRpb25JbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2
ZXJib3NlID0gZmFsc2U7Cit9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbGxlY3Rpb24+CiB2b2lk
IHVwZGF0ZUZyYW1lU2l6ZUJhc2VkT25TdGFja1Nsb3RzSW1wbChDb2RlJiBjb2RlLCBjb25zdCBD
b2xsZWN0aW9uJiBjb2xsZWN0aW9uKQpAQCAtNTQsNyArNTYsNyBAQCB2b2lkIHVwZGF0ZUZyYW1l
U2l6ZUJhc2VkT25TdGFja1Nsb3RzSW1wbChDb2RlJiBjb2RlLCBjb25zdCBDb2xsZWN0aW9uJiBj
b2xsZWN0aQogYm9vbCBhdHRlbXB0QXNzaWdubWVudCgKICAgICBTdGFja1Nsb3QqIHNsb3QsIGlu
dHB0cl90IG9mZnNldEZyb21GUCwgY29uc3QgVmVjdG9yPFN0YWNrU2xvdCo+JiBvdGhlclNsb3Rz
KQogewotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChBaXJTdGFja0FsbG9jYXRpb25JbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQXR0ZW1wdGluZyB0byBhc3NpZ24gIiwgcG9p
bnRlckR1bXAoc2xvdCksICIgdG8gIiwgb2Zmc2V0RnJvbUZQLCAiIHdpdGggaW50ZXJmZXJlbmNl
ICIsIHBvaW50ZXJMaXN0RHVtcChvdGhlclNsb3RzKSwgIlxuIik7CiAKICAgICAvLyBOZWVkIHRv
IGFsaWduIGl0IHRvIHRoZSBzbG90J3MgZGVzaXJlZCBhbGlnbm1lbnQuCkBAIC03Miw3ICs3NCw3
IEBAIGJvb2wgYXR0ZW1wdEFzc2lnbm1lbnQoCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEFpclN0YWNrQWxsb2NhdGlvbkludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJBc3NpZ25lZCAiLCBwb2ludGVyRHVtcChz
bG90KSwgIiB0byAiLCBvZmZzZXRGcm9tRlAsICJcbiIpOwogICAgIHNsb3QtPnNldE9mZnNldEZy
b21GUChvZmZzZXRGcm9tRlApOwogICAgIHJldHVybiB0cnVlOwpAQCAtODAsNyArODIsNyBAQCBi
b29sIGF0dGVtcHRBc3NpZ25tZW50KAogCiB2b2lkIGFzc2lnbihTdGFja1Nsb3QqIHNsb3QsIGNv
bnN0IFZlY3RvcjxTdGFja1Nsb3QqPiYgb3RoZXJTbG90cykKIHsKLSAgICBpZiAodmVyYm9zZSkK
KyAgICBpZiAoQWlyU3RhY2tBbGxvY2F0aW9uSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRh
dGFMb2coIkF0dGVtcHRpbmcgdG8gYXNzaWduICIsIHBvaW50ZXJEdW1wKHNsb3QpLCAiIHdpdGgg
aW50ZXJmZXJlbmNlICIsIHBvaW50ZXJMaXN0RHVtcChvdGhlclNsb3RzKSwgIlxuIik7CiAgICAg
CiAgICAgaWYgKGF0dGVtcHRBc3NpZ25tZW50KHNsb3QsIC1zdGF0aWNfY2FzdDxpbnRwdHJfdD4o
c2xvdC0+Ynl0ZVNpemUoKSksIG90aGVyU2xvdHMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IDM1ZmZiZjFhYmFiODJlZDdmNDQ2YjU2YjRl
ZGMxNTVhNDlmZWQ4ZDAuLjQxOTg2NTUwNDc0NDM4NzdlY2E2MTMwY2NmZmE3YTVhYTIzZjg0YTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAg
LTUxLDcgKzUxLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK25hbWVzcGFjZSBBY2Nlc3NDYXNl
SW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBBY2Nl
c3NDYXNlOjpBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBl
LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0KQogICAgIDogbV90eXBlKHR5cGUp
CkBAIC00MDgsNyArNDEwLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZShBY2Nlc3NHZW5l
cmF0aW9uU3RhdGUmIHN0YXRlKQogdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNz
R2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNh
bXBsZXJTY29wZShmYWxzZSk7Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEFjY2Vzc0Nhc2VJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiXG5cbkdlbmVyYXRpbmcgY29kZSBm
b3I6ICIsICp0aGlzLCAiXG4iKTsKIAogICAgIEFTU0VSVChtX3N0YXRlID09IEdlbmVyYXRlZCk7
IC8vIFdlIHJlbHkgb24gdGhlIGNhbGxlcnMgc2V0dGluZyB0aGlzIGZvciB1cy4KQEAgLTc5MCwx
MSArNzkyLDExIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRp
b25TdGF0ZSYgc3RhdGUpCiAKICAgICBjYXNlIFJlcGxhY2U6IHsKICAgICAgICAgaWYgKEluZmVy
cmVkVHlwZSogdHlwZSA9IHN0cnVjdHVyZSgpLT5pbmZlcnJlZFR5cGVGb3IoaWRlbnQuaW1wbCgp
KSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQWNjZXNzQ2Fz
ZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkhhdmUgdHlwZTog
IiwgdHlwZS0+ZGVzY3JpcHRvcigpLCAiXG4iKTsKICAgICAgICAgICAgIHN0YXRlLmZhaWxBbmRS
ZXBhdGNoLmFwcGVuZCgKICAgICAgICAgICAgICAgICBqaXQuYnJhbmNoSWZOb3RUeXBlKHZhbHVl
UmVncywgc2NyYXRjaEdQUiwgdHlwZS0+ZGVzY3JpcHRvcigpKSk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAodmVyYm9zZSkKKyAgICAgICAgfSBlbHNlIGlmIChBY2Nlc3NDYXNlSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJEb24ndCBoYXZlIHR5cGUuXG4iKTsKIAogICAgICAg
ICBpZiAoaXNJbmxpbmVPZmZzZXQobV9vZmZzZXQpKSB7CkBAIC04MjAsMTEgKzgyMiwxMSBAQCB2
b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRl
KQogICAgICAgICBSRUxFQVNFX0FTU0VSVChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA+PSA2
IHx8ICFzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCBzdHJ1Y3R1cmUoKS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSA9PSBuZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7
CiAKICAgICAgICAgaWYgKEluZmVycmVkVHlwZSogdHlwZSA9IG5ld1N0cnVjdHVyZSgpLT5pbmZl
cnJlZFR5cGVGb3IoaWRlbnQuaW1wbCgpKSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgICAgICBpZiAoQWNjZXNzQ2FzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkhhdmUgdHlwZTogIiwgdHlwZS0+ZGVzY3JpcHRvcigpLCAiXG4iKTsKICAg
ICAgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZCgKICAgICAgICAgICAgICAgICBq
aXQuYnJhbmNoSWZOb3RUeXBlKHZhbHVlUmVncywgc2NyYXRjaEdQUiwgdHlwZS0+ZGVzY3JpcHRv
cigpKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAodmVyYm9zZSkKKyAgICAgICAgfSBlbHNlIGlmIChB
Y2Nlc3NDYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJEb24ndCBo
YXZlIHR5cGUuXG4iKTsKIAogICAgICAgICAvLyBOT1RFOiBUaGlzIGxvZ2ljIGlzIGR1cGxpY2F0
ZWQgaW4gQWNjZXNzQ2FzZTo6ZG9lc0NhbGxzKCkuIEl0J3MgaW1wb3J0YW50IHRoYXQgZG9lc0Nh
bGxzKCkga25vd3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua1N0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtTdGF0dXMuY3BwCmluZGV4IGYzNGMyNzQyMDUzY2IyOTNkYWE1YzE2Mzg2NmJmYWM0YTAyMjU2
OTguLjUzYjg0ZDljMDM3ZTE3ZjZhZTkzZGM4NTUxOTI3ODhiNjNlNjdhZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcApAQCAtMzgs
NyArMzgsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFtZXNwYWNlIENhbGxMaW5rU3RhdHVz
SW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBDYWxs
TGlua1N0YXR1czo6Q2FsbExpbmtTdGF0dXMoSlNWYWx1ZSB2YWx1ZSkKICAgICA6IG1fY291bGRU
YWtlU2xvd1BhdGgoZmFsc2UpCkBAIC0yODksNyArMjkxLDcgQEAgdm9pZCBDYWxsTGlua1N0YXR1
czo6Y29tcHV0ZURGR1N0YXR1c2VzKAogICAgIFVOVVNFRF9QQVJBTShkZmdDb2RlQmxvY2spOwog
I2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQogICAgIAotICAgIGlmICh2ZXJib3NlKSB7CisgICAg
aWYgKENhbGxMaW5rU3RhdHVzSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZGF0YUxvZygi
Q29udGV4dCBtYXA6XG4iKTsKICAgICAgICAgQ29udGV4dE1hcDo6aXRlcmF0b3IgaXRlciA9IG1h
cC5iZWdpbigpOwogICAgICAgICBDb250ZXh0TWFwOjppdGVyYXRvciBlbmQgPSBtYXAuZW5kKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0
dGVyQWNjZXNzQ2FzZS5jcHAKaW5kZXggYzRkYTgwZWNjMTljMjE0N2UyZmE3YjVkOTk2ODRjZGZl
YjJlNDc4MC4uNjA2NjkxYjNiMjAzYWVlMWFjYmEyNzRmNDU1YzRiNGVlYzc3ZjdlYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlLmNwcApAQCAtMzgsNyArMzgsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFt
ZXNwYWNlIEdldHRlclNldHRlckFjY2Vzc0Nhc2VJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9v
bCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OkdldHRlclNl
dHRlckFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5
cGUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIGJvb2wgdmlhUHJveHksIFdh
dGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSkKICAg
ICA6IEJhc2Uodm0sIG93bmVyLCBhY2Nlc3NUeXBlLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0
aW9uU2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCkKQEAgLTE4NSw3ICsxODcsNyBAQCB2b2lk
IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlv
blN0YXRlJiBzdGF0ZSwgY29ucwogICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2Vy
dmVkU3RhdGUgcHJlc2VydmVkU3RhdGUgPQogICAgIGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJl
Z2lzdGVyc0J5UHVzaGluZyhqaXQsIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6RXh0cmFTdGFj
a1NwYWNlOjpTcGFjZUZvckNDYWxsKTsKIAotICAgIGlmICh2ZXJib3NlKSB7CisgICAgaWYgKEdl
dHRlclNldHRlckFjY2Vzc0Nhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICBkYXRhTG9n
KCJiYXNlR1BSID0gIiwgYmFzZUdQUiwgIlxuIik7CiAgICAgICAgIGRhdGFMb2coInZhbHVlUmVn
cyA9ICIsIHZhbHVlUmVncywgIlxuIik7CiAgICAgICAgIGRhdGFMb2coInNjcmF0Y2hHUFIgPSAi
LCBzY3JhdGNoR1BSLCAiXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCmluZGV4IDYxOWVh
NWQ5Y2I0N2IxZjE5NWIwZThiNDdkNTk5NmNhODU5YzM0ZWYuLjk2Nzk1MjM3Nzg4Y2MxOTY1MDc0
MWJkY2Y2OWFlNDdjZDI4ZGE0YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcApAQCAtMTgy
LDEzICsxODIsMTUgQEAgYm9vbCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aXNWYWxpZEFu
ZFdhdGNoYWJsZSgpIGNvbnN0CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNl
OworbmFtZXNwYWNlIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWwgeworc3RhdGlj
IGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
biBnZW5lcmF0ZUNvbmRpdGlvbigKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0
KiBvYmplY3QsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIFByb3BlcnR5Q29uZGl0aW9uOjpLaW5k
IGNvbmRpdGlvbktpbmQpCiB7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvYmplY3QtPnN0
cnVjdHVyZSgpOwotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJDcmVhdGluZyBjb25k
aXRpb24gIiwgY29uZGl0aW9uS2luZCwgIiBmb3IgIiwgcG9pbnRlckR1bXAoc3RydWN0dXJlKSwg
IlxuIik7CiAKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiByZXN1bHQ7CkBAIC0yMjYsMTIg
KzIyOCwxMiBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBnZW5lcmF0ZUNvbmRpdGlvbigKICAg
ICB9CiAKICAgICBpZiAoIXJlc3VsdC5pc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5
V2F0Y2hwb2ludCgpKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoT2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFM
b2coIkZhaWxlZCB0byBjcmVhdGUgY29uZGl0aW9uOiAiLCByZXN1bHQsICJcbiIpOwogICAgICAg
ICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRpb24oKTsKICAgICB9CiAKLSAgICBpZiAodmVy
Ym9zZSkKKyAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgZGF0YUxvZygiTmV3IGNvbmRpdGlvbjogIiwgcmVzdWx0LCAiXG4iKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjQ4LDExICsyNTAsMTEgQEAgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQgZ2VuZXJhdGVDb25kaXRpb25zKAogICAgIFZlY3RvcjxPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvbj4gY29uZGl0aW9uczsKICAgICAKICAgICBmb3IgKDs7KSB7Ci0gICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIHN0cnVjdHVyZTog
IiwgcG9pbnRlckR1bXAoc3RydWN0dXJlKSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICBpZiAo
c3RydWN0dXJlLT5pc1Byb3h5KCkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiSXQncyBhIHByb3h5LCBzbyBpbnZhbGlkLlxuIik7CiAg
ICAgICAgICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmludmFsaWQoKTsK
ICAgICAgICAgfQpAQCAtMjYxLDExICsyNjMsMTEgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQgZ2VuZXJhdGVDb25kaXRpb25zKAogICAgICAgICAKICAgICAgICAgaWYgKHZhbHVlLmlzTnVs
bCgpKSB7CiAgICAgICAgICAgICBpZiAoIXByb3RvdHlwZSkgewotICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJSZWFjaGVk
IGVuZCBvZiBwcm90b3R5cGUgY2hhaW4gYXMgZXhwZWN0ZWQsIGRvbmUuXG4iKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiVW5leHBlY3RlZGx5IHJlYWNoZWQgZW5kIG9m
IHByb3RvdHlwZSBjaGFpbiwgc28gaW52YWxpZC5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjppbnZhbGlkKCk7CiAgICAgICAgIH0KQEAgLTI3Niwz
NSArMjc4LDM1IEBAIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRlQ29uZGl0aW9u
cygKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgICAg
IGlmIChjb25jdXJyZW5jeSA9PSBNYWluVGhyZWFkKSB7CiAgICAgICAgICAgICAgICAgaWYgKHN0
cnVjdHVyZS0+aGFzQmVlbkZsYXR0ZW5lZEJlZm9yZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIkRpY3Rpb25hcnkgaGFzIGJlZW4gZmxhdHRlbmVkIGJlZm9yZSwgc28gaW52YWxpZC5cbiIp
OwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6
OmludmFsaWQoKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiRmxhdHRlbmluZyAi
LCBwb2ludGVyRHVtcChzdHJ1Y3R1cmUpKTsKICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmZs
YXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKHZtLCBvYmplY3QpOwogICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiQ2Fubm90IGZsYXR0ZW4gZGljdGlvbmFyeSB3aGVuIG5vdCBvbiBtYWlu
IHRocmVhZCwgc28gaW52YWxpZC5cbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldDo6aW52YWxpZCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCFmdW5jdG9yKGNvbmRpdGlvbnMsIG9iamVjdCkpIHsKLSAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiRnVuY3RvciBm
YWlsZWQsIGludmFsaWQuXG4iKTsKICAgICAgICAgICAgIHJldHVybiBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldDo6aW52YWxpZCgpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAo
b2JqZWN0ID09IHByb3RvdHlwZSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCJSZWFjaGVkIGRlc2lyZWQgcHJvdG90eXBlLCBkb25lLlxu
Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICh2ZXJi
b3NlKQorICAgIGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmcgY29uZGl0aW9uczogIiwgbGlzdER1bXAoY29u
ZGl0aW9ucyksICJcbiIpOwogICAgIHJldHVybiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6
Y3JlYXRlKGNvbmRpdGlvbnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggZmIwYjZhOWQ4YzJkZGM4ZmMzZjlj
OTE5MWRiZjIyYjliZDQwMjk4OC4uNDIyODBjNWFlNmY3NmRiNjcwM2E2MDE2ZDU4M2MxYjBhMDFk
YzM1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3Jw
aGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1v
cnBoaWNBY2Nlc3MuY3BwCkBAIC00NCw3ICs0NCw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitu
YW1lc3BhY2UgUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2
ZXJib3NlID0gZmFsc2U7Cit9CiAKIHZvaWQgQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAogewpAQCAtMjQ3LDcgKzI0OSw3IEBAIEFjY2Vzc0dlbmVy
YXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKAogICAgICAgICBjYXNlc1Rv
QWRkLmFwcGVuZChXVEZNb3ZlKG15Q2FzZSkpOwogICAgIH0KIAotICAgIGlmICh2ZXJib3NlKQor
ICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRh
TG9nKCJjYXNlc1RvQWRkOiAiLCBsaXN0RHVtcChjYXNlc1RvQWRkKSwgIlxuIik7CiAKICAgICAv
LyBJZiB0aGVyZSBhcmVuJ3QgYW55IGNhc2VzIHRvIGFkZCwgdGhlbiBmYWlsIG9uIHRoZSBncm91
bmRzIHRoYXQgdGhlcmUncyBubyBwb2ludCB0byBnZW5lcmF0aW5nIGEKQEAgLTI2Myw3ICsyNjUs
NyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcygK
ICAgICAgICAgbV9saXN0LmFwcGVuZChXVEZNb3ZlKGNhc2VUb0FkZCkpOwogICAgIH0KICAgICAK
LSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgZGF0YUxvZygiQWZ0ZXIgYWRkQ2FzZXM6IG1fbGlzdDogIiwgbGlzdER1
bXAobV9saXN0KSwgIlxuIik7CiAKICAgICByZXR1cm4gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6
QnVmZmVyZWQ7CkBAIC0zMzQsNyArMzM2LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5
bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSgKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBl
clNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKFBv
bHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIlJlZ2Vu
ZXJhdGUgd2l0aCBtX2xpc3Q6ICIsIGxpc3REdW1wKG1fbGlzdCksICJcbiIpOwogICAgIAogICAg
IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSBzdGF0ZSh2bSk7CkBAIC00MDIsNyArNDA0LDcgQEAgQWNj
ZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSgKICAgICB9
CiAgICAgbV9saXN0LnJlc2l6ZShkc3RJbmRleCk7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisg
ICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFM
b2coIk9wdGltaXplZCBjYXNlczogIiwgbGlzdER1bXAoY2FzZXMpLCAiXG4iKTsKICAgICAKICAg
ICAvLyBBdCB0aGlzIHBvaW50IHdlJ3JlIGNvbnZpbmNlZCB0aGF0ICdjYXNlcycgY29udGFpbnMg
dGhlIGNhc2VzIHRoYXQgd2Ugd2FudCB0byBKSVQgbm93IGFuZCB3ZQpAQCAtNTE3LDcgKzUxOSw3
IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUo
CiAKICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0
aW9uQ2FuRmFpbCk7CiAgICAgaWYgKGxpbmtCdWZmZXIuZGlkRmFpbFRvQWxsb2NhdGUoKSkgewot
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJEaWQgZmFpbCB0byBhbGxvY2F0ZS5c
biIpOwogICAgICAgICByZXR1cm4gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6R2F2ZVVwOwogICAg
IH0KQEAgLTUyOCw3ICs1MzAsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGlj
QWNjZXNzOjpyZWdlbmVyYXRlKAogCiAgICAgbGlua0J1ZmZlci5saW5rKGZhaWx1cmUsIHN0dWJJ
bmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbigpKTsKICAgICAKLSAgICBpZiAodmVyYm9zZSkKKyAg
ICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxv
ZyhGdWxsQ29kZU9yaWdpbihjb2RlQmxvY2ssIHN0dWJJbmZvLmNvZGVPcmlnaW4pLCAiOiBHZW5l
cmF0aW5nIHBvbHltb3JwaGljIGFjY2VzcyBzdHViIGZvciAiLCBsaXN0RHVtcChjYXNlcyksICJc
biIpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGUgPSBGSU5BTElaRV9DT0RFX0ZP
UigKQEAgLTU0NCw3ICs1NDYsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGlj
QWNjZXNzOjpyZWdlbmVyYXRlKAogICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0YXRlLndh
dGNocG9pbnRzKTsKICAgICBpZiAoIXN0YXRlLndlYWtSZWZlcmVuY2VzLmlzRW1wdHkoKSkKICAg
ICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFdyaXRlQmFy
cmllcjxKU0NlbGw+Pj4oV1RGTW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOwotICAgIGlmICh2
ZXJib3NlKQorICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6ICIsIGNvZGUuY29kZSgpLCAiXG4iKTsKICAgICAKICAg
ICBtX2xpc3QgPSBXVEZNb3ZlKGNhc2VzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uY3BwCmluZGV4IDQyM2JjMjEwZWQ0ODNjYTEx
OTdlMzk5YjU5NTU0NjY2Y2RmMzk1YzkuLjA3NjQ0YTMwN2Y5Y2Y0ZTljNWYzMmE3MWMxODFjMmJm
ODM5OTU1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9w
ZXJ0eUNvbmRpdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1By
b3BlcnR5Q29uZGl0aW9uLmNwcApAQCAtMzIsNyArMzIsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAorbmFtZXNwYWNlIFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWwgewogc3RhdGljIGJvb2wgdmVy
Ym9zZSA9IGZhbHNlOworfQogCiB2b2lkIFByb3BlcnR5Q29uZGl0aW9uOjpkdW1wSW5Db250ZXh0
KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogewpAQCAtNjUs
MjAgKzY3LDIwIEBAIHZvaWQgUHJvcGVydHlDb25kaXRpb246OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKIGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1w
dXJlUHJvcGVydHlXYXRjaHBvaW50KAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVj
dCogYmFzZSkgY29uc3QKIHsKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChQcm9wZXJ0eUNv
bmRpdGlvbkludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAg
ICAiRGV0ZXJtaW5pbmcgdmFsaWRpdHkgb2YgIiwgKnRoaXMsICIgd2l0aCBzdHJ1Y3R1cmUgIiwg
cG9pbnRlckR1bXAoc3RydWN0dXJlKSwgIiBhbmQgYmFzZSAiLAogICAgICAgICAgICAgSlNWYWx1
ZShiYXNlKSwgIiBhc3N1bWluZyBpbXB1cmUgcHJvcGVydHkgd2F0Y2hwb2ludHMgYXJlIHNldC5c
biIpOwogICAgIH0KICAgICAKICAgICBpZiAoISp0aGlzKSB7Ci0gICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgIGRhdGFMb2coIkludmFsaWQgYmVjYXVzZSB1bnNldC5cbiIpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIGlmICghc3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vz
c2VzQXJlQ2FjaGVhYmxlKCkpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChQ
cm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygi
SW52YWxpZCBiZWNhdXNlIGFjY2Vzc2VzIGFyZSBub3QgY2FjaGVhYmxlLlxuIik7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CkBAIC04OCw3ICs5MCw3IEBAIGJvb2wgUHJvcGVydHlDb25k
aXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KAogICAg
ICAgICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKICAgICAgICAgUHJvcGVydHlPZmZzZXQg
Y3VycmVudE9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCgpLCBjdXJyZW50
QXR0cmlidXRlcyk7CiAgICAgICAgIGlmIChjdXJyZW50T2Zmc2V0ICE9IG9mZnNldCgpIHx8IGN1
cnJlbnRBdHRyaWJ1dGVzICE9IGF0dHJpYnV0ZXMoKSkgewotICAgICAgICAgICAgaWYgKHZlcmJv
c2UpIHsKKyAgICAgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3Nl
KSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgIkludmFs
aWQgYmVjYXVzZSB3ZSBuZWVkIG9mZnNldCwgYXR0cmlidXRlcyB0byBiZSAiLCBvZmZzZXQoKSwg
IiwgIiwgYXR0cmlidXRlcygpLAogICAgICAgICAgICAgICAgICAgICAiIGJ1dCB0aGV5IGFyZSAi
LCBjdXJyZW50T2Zmc2V0LCAiLCAiLCBjdXJyZW50QXR0cmlidXRlcywgIlxuIik7CkBAIC0xMDAs
MjAgKzEwMiwyMCBAQCBib29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1bWlu
Z0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgKICAgICAgICAgCiAgICAgY2FzZSBBYnNlbmNlOiB7
CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7Ci0gICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkludmFsaWQgYmVjYXVzZSBpdCdzIGEg
ZGljdGlvbmFyeS5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAK
ICAgICAgICAgUHJvcGVydHlPZmZzZXQgY3VycmVudE9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29u
Y3VycmVudGx5KHVpZCgpKTsKICAgICAgICAgaWYgKGN1cnJlbnRPZmZzZXQgIT0gaW52YWxpZE9m
ZnNldCkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoUHJvcGVy
dHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJJ
bnZhbGlkIGJlY2F1c2UgdGhlIHByb3BlcnR5IGV4aXN0cyBhdCBvZmZzZXQ6ICIsIGN1cnJlbnRP
ZmZzZXQsICJcbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBpZiAoc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSAhPSBw
cm90b3R5cGUoKSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGlm
IChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAg
ZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgYmVjYXVzZSB0aGUgcHJvdG90
eXBlIGlzICIsIHN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCksICIgZXZlbiB0aG91Z2ggIgog
ICAgICAgICAgICAgICAgICAgICAiaXQgc2hvdWxkIGhhdmUgYmVlbiAiLCBKU1ZhbHVlKHByb3Rv
dHlwZSgpKSwgIlxuIik7CkBAIC0xMjYsNyArMTI4LDcgQEAgYm9vbCBQcm9wZXJ0eUNvbmRpdGlv
bjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoCiAgICAgCiAg
ICAgY2FzZSBBYnNlbmNlT2ZTZXRFZmZlY3Q6IHsKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNE
aWN0aW9uYXJ5KCkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYg
KFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0
YUxvZygiSW52YWxpZCBiZWNhdXNlIGl0J3MgYSBkaWN0aW9uYXJ5LlxuIik7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTEzNSw3ICsxMzcsNyBAQCBib29sIFByb3Bl
cnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2lu
dCgKICAgICAgICAgUHJvcGVydHlPZmZzZXQgY3VycmVudE9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0
Q29uY3VycmVudGx5KHVpZCgpLCBjdXJyZW50QXR0cmlidXRlcyk7CiAgICAgICAgIGlmIChjdXJy
ZW50T2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChjdXJyZW50QXR0
cmlidXRlcyAmIChSZWFkT25seSB8IEFjY2Vzc29yIHwgQ3VzdG9tQWNjZXNzb3IpKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHJvcGVydHlD
b25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KAogICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgYmVjYXVzZSB3ZSBleHBlY3RlZCBu
b3QgdG8gaGF2ZSBhIHNldHRlciwgYnV0IHdlIGhhdmUgb25lIGF0IG9mZnNldCAiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgY3VycmVudE9mZnNldCwgIiB3aXRoIGF0dHJpYnV0ZXMgIiwgY3Vy
cmVudEF0dHJpYnV0ZXMsICJcbiIpOwpAQCAtMTQ1LDcgKzE0Nyw3IEBAIGJvb2wgUHJvcGVydHlD
b25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KAog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5
cGVPYmplY3QoKSAhPSBwcm90b3R5cGUoKSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsK
KyAgICAgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKSB7CiAg
ICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgYmVj
YXVzZSB0aGUgcHJvdG90eXBlIGlzICIsIHN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCksICIg
ZXZlbiB0aG91Z2ggIgogICAgICAgICAgICAgICAgICAgICAiaXQgc2hvdWxkIGhhdmUgYmVlbiAi
LCBKU1ZhbHVlKHByb3RvdHlwZSgpKSwgIlxuIik7CkBAIC0xNjAsNyArMTYyLDcgQEAgYm9vbCBQ
cm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNo
cG9pbnQoCiAgICAgICAgIGlmICghYmFzZSB8fCBiYXNlLT5zdHJ1Y3R1cmUoKSAhPSBzdHJ1Y3R1
cmUpIHsKICAgICAgICAgICAgIC8vIENvbnNlcnZhdGl2ZWx5IHJldHVybiBmYWxzZSwgc2luY2Ug
d2UgY2Fubm90IHZlcmlmeSB0aGlzIG9uZSB3aXRob3V0IGhhdmluZyB0aGUKICAgICAgICAgICAg
IC8vIG9iamVjdC4KLSAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICBpZiAo
UHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgIGRh
dGFMb2coCiAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2
ZSBhIGJhc2Ugb3IgdGhlIGJhc2UgaGFzIHRoZSB3cm9uZyBzdHJ1Y3R1cmU6ICIsCiAgICAgICAg
ICAgICAgICAgICAgIFJhd1BvaW50ZXIoYmFzZSksICJcbiIpOwpAQCAtMTczLDcgKzE3NSw3IEBA
IGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVy
dHlXYXRjaHBvaW50KAogICAgICAgICAKICAgICAgICAgUHJvcGVydHlPZmZzZXQgY3VycmVudE9m
ZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCgpKTsKICAgICAgICAgaWYgKGN1
cnJlbnRPZmZzZXQgPT0gaW52YWxpZE9mZnNldCkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2Up
IHsKKyAgICAgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKSB7
CiAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQg
YmVjYXVzZSB0aGUgYmFzZSBubyBsb25nIGFwcGVhcnMgdG8gaGF2ZSAiLCB1aWQoKSwgIiBvbiBp
dHMgc3RydWN0dXJlOiAiLAogICAgICAgICAgICAgICAgICAgICAgICAgUmF3UG9pbnRlcihiYXNl
KSwgIlxuIik7CkBAIC0xODMsNyArMTg1LDcgQEAgYm9vbCBQcm9wZXJ0eUNvbmRpdGlvbjo6aXNT
dGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoCiAKICAgICAgICAgSlNW
YWx1ZSBjdXJyZW50VmFsdWUgPSBiYXNlLT5nZXREaXJlY3QoY3VycmVudE9mZnNldCk7CiAgICAg
ICAgIGlmIChjdXJyZW50VmFsdWUgIT0gcmVxdWlyZWRWYWx1ZSgpKSB7Ci0gICAgICAgICAgICBp
ZiAodmVyYm9zZSkgeworICAgICAgICAgICAgaWYgKFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWw6
OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAg
ICAiSW52YWxpZCBiZWNhdXNlIHRoZSB2YWx1ZSBpcyAiLCBjdXJyZW50VmFsdWUsICIgYnV0IHdl
IHJlcXVpcmUgIiwgcmVxdWlyZWRWYWx1ZSgpLAogICAgICAgICAgICAgICAgICAgICAiXG4iKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
SW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uY3BwCmluZGV4IDIxODc3NTE3NmYyNzdlMzY2OGRjMTJkZWI2NjY1ZGExNGU0N2QxYjcuLjNl
M2JmMjQzYWE5NWEyOTNlYjI2YWRjMjg1YWE5OTYwNjBlODlkNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtMzUs
NyArMzUsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCiAKK25hbWVzcGFj
ZSBTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2Ug
PSBmYWxzZTsKK30KIAogU3RydWN0dXJlU3R1YkluZm86OlN0cnVjdHVyZVN0dWJJbmZvKEFjY2Vz
c1R5cGUgYWNjZXNzVHlwZSkKICAgICA6IGNhbGxTaXRlSW5kZXgoVUlOVF9NQVgpCkBAIC0xMTUs
NyArMTE3LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRk
QWNjZXNzQ2FzZSgKIHsKICAgICBWTSYgdm0gPSAqY29kZUJsb2NrLT52bSgpOwogICAgIAotICAg
IGlmICh2ZXJib3NlKQorICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICBkYXRhTG9nKCJBZGRpbmcgYWNjZXNzIGNhc2U6ICIsIGFjY2Vzc0Nhc2UsICJc
biIpOwogICAgIAogICAgIGlmICghYWNjZXNzQ2FzZSkKQEAgLTEyNiw3ICsxMjgsNyBAQCBBY2Nl
c3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAogICAg
IGlmIChjYWNoZVR5cGUgPT0gQ2FjaGVUeXBlOjpTdHViKSB7CiAgICAgICAgIHJlc3VsdCA9IHUu
c3R1Yi0+YWRkQ2FzZShsb2NrZXIsIHZtLCBjb2RlQmxvY2ssICp0aGlzLCBpZGVudCwgV1RGTW92
ZShhY2Nlc3NDYXNlKSk7CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
aWYgKFN0cnVjdHVyZVN0dWJJbmZvSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRh
TG9nKCJIYWQgc3R1YiwgcmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOwogCiAgICAgICAgIGlmICgh
cmVzdWx0LmJ1ZmZlcmVkKCkpIHsKQEAgLTE0Nyw3ICsxNDksNyBAQCBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAogICAgICAgICAKICAgICAg
ICAgcmVzdWx0ID0gYWNjZXNzLT5hZGRDYXNlcyhsb2NrZXIsIHZtLCBjb2RlQmxvY2ssICp0aGlz
LCBpZGVudCwgV1RGTW92ZShhY2Nlc3NDYXNlcykpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgZGF0YUxvZygiQ3JlYXRlZCBzdHViLCByZXN1bHQ6ICIsIHJlc3VsdCwgIlxu
Iik7CiAKICAgICAgICAgaWYgKCFyZXN1bHQuYnVmZmVyZWQoKSkgewpAQCAtMTY0LDcgKzE2Niw3
IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nh
c2UoCiAgICAgLy8gSWYgd2UgZGlkbid0IGJ1ZmZlciBhbnkgY2FzZXMgdGhlbiBiYWlsLiBJZiB0
aGlzIG1hZGUgbm8gY2hhbmdlcyB0aGVuIHdlJ2xsIGp1c3QgdHJ5IGFnYWluCiAgICAgLy8gc3Vi
amVjdCB0byBjb29sLWRvd24uCiAgICAgaWYgKCFyZXN1bHQuYnVmZmVyZWQoKSkgewotICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJEaWRuJ3QgYnVmZmVyIGFueXRoaW5nLCBiYWls
aW5nLlxuIik7CiAgICAgICAgIGJ1ZmZlcmVkU3RydWN0dXJlcy5jbGVhcigpOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwpAQCAtMTcyLDcgKzE3NCw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
U3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAgICAgCiAgICAgLy8gVGhlIGJ1ZmZl
cmluZyBjb3VudGRvd24gdGVsbHMgdXMgaWYgd2Ugc2hvdWxkIGJlIHJlcGF0Y2hpbmcgbm93Lgog
ICAgIGlmIChidWZmZXJpbmdDb3VudGRvd24pIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ZGF0YUxvZygiQ291bnRkb3duIGlzIHRvbyBoaWdoOiAiLCBidWZmZXJpbmdDb3VudGRvd24sICIu
XG4iKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0xODMsNyArMTg1LDcgQEAg
QWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgK
ICAgICAKICAgICByZXN1bHQgPSB1LnN0dWItPnJlZ2VuZXJhdGUobG9ja2VyLCB2bSwgY29kZUJs
b2NrLCAqdGhpcywgaWRlbnQpOwogICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTdHJ1
Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJSZWdlbmVy
YXRpb24gcmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOwogICAgIAogICAgIFJFTEVBU0VfQVNTRVJU
KCFyZXN1bHQuYnVmZmVyZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SGVhcC5jcHAKaW5kZXggY2Q2OTRiYmViYWM4MDdkNTE4ZjY2YzQ3Y2FhYWI2ZTc4ZTkx
ZDIzYy4uYjgzZmVlMGQzYzA5ZDE0OTdhYTdlYTFkZTNlMDQ5MDYyZjIyNmMxNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmNwcApAQCAtNjIsNyArNjIs
NyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQWJzdHJhY3RIZWFwS2lu
ZCBraW5kKQogewogICAgIHN3aXRjaCAoa2luZCkgewogI2RlZmluZSBBQlNUUkFDVF9IRUFQX0RV
TVAobmFtZSkgICAgICAgICAgICBcCi0gICAgY2FzZSBuYW1lOiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBjYXNlIEFic3RyYWN0SGVhcEtpbmQ6Om5hbWU6ICAgICAgICAgICAg
XAogICAgICAgICBvdXQucHJpbnQoI25hbWUpOyAgICAgICAgICAgICAgICAgICBcCiAgICAgICAg
IHJldHVybjsKICAgICBGT1JfRUFDSF9BQlNUUkFDVF9IRUFQX0tJTkQoQUJTVFJBQ1RfSEVBUF9E
VU1QKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNF
bGltaW5hdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1l
bnRzRWxpbWluYXRpb25QaGFzZS5jcHAKaW5kZXggNTE2NTBmNTg1ZDRlOGVhNmEzMzllN2Y2MzAy
OGVhMDhlZDU4ZWE0Zi4uYTQ1N2Y4ZjU3ZDQ5Y2MzZTI3MzM5NzZiODBiMmZkOTg2M2E0NjBhZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5h
dGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50
c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC01MCw3ICs1MCw5IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAotYm9vbCB2ZXJib3NlID0gZmFsc2U7Citu
YW1lc3BhY2UgREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZUludGVybmFsIHsKK3N0YXRpYyBj
b25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogY2xhc3MgQXJndW1lbnRzRWxpbWluYXRp
b25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJsaWM6CkBAIC02NSw3ICs2Nyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgLy8gdmVyc2lvbiBvdmVyIExvYWRTdG9yZS4KICAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwogICAgICAgICAKLSAg
ICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0aW9u
UGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVm
b3JlIGFyZ3VtZW50cyBlbGltaW5hdGlvbjpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1w
KCk7CiAgICAgICAgIH0KQEAgLTE1Nyw3ICsxNTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYg
KERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgIGRhdGFMb2coIkNhbmRpZGF0ZXM6ICIsIGxpc3REdW1wKG1fY2FuZGlkYXRlcyksICJcbiIp
OwogICAgIH0KIApAQCAtMjEwLDcgKzIxMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cmFuc2l0
aXZlbHlSZW1vdmVDYW5kaWRhdGUoTm9kZSogbm9kZSwgTm9kZSogc291cmNlID0gbnVsbHB0cikK
ICAgICB7CiAgICAgICAgIGJvb2wgcmVtb3ZlZCA9IG1fY2FuZGlkYXRlcy5yZW1vdmUobm9kZSk7
Ci0gICAgICAgIGlmIChyZW1vdmVkICYmIHZlcmJvc2UgJiYgc291cmNlKQorICAgICAgICBpZiAo
cmVtb3ZlZCAmJiBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2Ug
JiYgc291cmNlKQogICAgICAgICAgICAgZGF0YUxvZygiZWxpbWluYXRpbmcgY2FuZGlkYXRlOiAi
LCBub2RlLCAiIGJlY2F1c2UgaXQgZXNjYXBlcyBmcm9tOiAiLCBzb3VyY2UsICJcbiIpOwogCiAg
ICAgICAgIGlmIChyZW1vdmVkKQpAQCAtNDE4LDcgKzQyMCw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERG
R0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
IGRhdGFMb2coIkFmdGVyIGVzY2FwZSBhbmFseXNpczogIiwgbGlzdER1bXAobV9jYW5kaWRhdGVz
KSwgIlxuIik7CiAgICAgfQogCkBAIC01MTksNyArNTIxLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgLy8gZm9yIHRoaXMgYXJndW1lbnRzIGFsbG9jYXRpb24sIGFuZCB3ZSdkIGhh
dmUgdG8gZXhhbWluZSBldmVyeSBub2RlIGluIHRoZSBibG9jaywKICAgICAgICAgICAgICAgICAg
ICAgLy8gdGhlbiB3ZSBjYW4ganVzdCBlbGltaW5hdGUgdGhlIGNhbmRpZGF0ZS4KICAgICAgICAg
ICAgICAgICAgICAgaWYgKG5vZGVJbmRleCA9PSBibG9jay0+c2l6ZSgpICYmIGNhbmRpZGF0ZS0+
b3duZXIgIT0gYmxvY2spIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJl
bGltaW5hdGluZyBjYW5kaWRhdGU6ICIsIGNhbmRpZGF0ZSwgIiBiZWNhdXNlIGl0IGlzIGNsb2Ji
ZXJlZCBieTogIiwgYmxvY2stPmF0KG5vZGVJbmRleCksICJcbiIpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgdHJhbnNpdGl2ZWx5UmVtb3ZlQ2FuZGlkYXRlKGNhbmRpZGF0ZSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01NDYsNyArNTQ4LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOb09wQ2xvYmJlcml6ZSgpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiZWxpbWluYXRpbmcg
Y2FuZGlkYXRlOiAiLCBjYW5kaWRhdGUsICIgYmVjYXVzZSBpdCBpcyBjbG9iYmVyZWQgYnkgIiwg
YmxvY2stPmF0KG5vZGVJbmRleCksICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRyYW5zaXRpdmVseVJlbW92ZUNhbmRpZGF0ZShjYW5kaWRhdGUpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTU2OCw3ICs1NzAsNyBAQCBwcml2YXRlOgogICAgICAg
ICAvLyBzaW5jZSB0aG9zZSBhdmFpbGFiaWxpdGllcyBzcGVhayBvZiB0aGUgc3RhY2sgYmVmb3Jl
IHRoZSBvcHRpbWl6aW5nIGNvbXBpbGVyIHN0YWNrIGZyYW1lIGlzCiAgICAgICAgIC8vIHRvcm4g
ZG93bi4KIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0FyZ3VtZW50c0Vs
aW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkFm
dGVyIGludGVyZmVyZW5jZSBhbmFseXNpczogIiwgbGlzdER1bXAobV9jYW5kaWRhdGVzKSwgIlxu
Iik7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAppbmRleCBiNDlmMmU5Y2NhY2NjZjhkYjUyNmUyNWMzNDY4ZjQyM2IwNmE1
NzA2Li5jOGUwOTZlZDRlNjAzOGI1MTQzNTIzZWJlMGNkZGM3ZDhkZGRkYmUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNzAsMjIg
KzcwLDE4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsK
IAotTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBORVZFUl9JTkxJTkUgdm9pZCBjcmFzaCgpCi17Ci0g
ICAgQ1JBU0goKTsKLX0KLQotI3VuZGVmIFJFTEVBU0VfQVNTRVJUCi0jZGVmaW5lIFJFTEVBU0Vf
QVNTRVJUKGFzc2VydGlvbikgZG8geyBcCisjZGVmaW5lIFBBUlNFUl9BU1NFUlQoYXNzZXJ0aW9u
LCAuLi4pIGRvIHsgICAgICAgICAgXAogICAgIGlmIChVTkxJS0VMWSghKGFzc2VydGlvbikpKSB7
IFwKICAgICAgICAgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShfX0ZJTEVfXywgX19MSU5FX18s
IFdURl9QUkVUVFlfRlVOQ1RJT04sICNhc3NlcnRpb24pOyBcCi0gICAgICAgIGNyYXNoKCk7IFwK
KyAgICAgICAgQ1JBU0hfV0lUSF9JTkZPKF9fVkFfQVJHU19fKTsgXAogICAgIH0gXAogfSB3aGls
ZSAoMCkKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKK25hbWVzcGFjZSBERkdCeXRlQ29k
ZVBhcnNlckludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30K
IAogY2xhc3MgQ29uc3RhbnRCdWZmZXJLZXkgewogcHVibGljOgpAQCAtMTIwNyw3ICsxMjAzLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICAgICAgICAgICwg
bV9zZXRNb2RlKHNldE1vZGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG9wZXJhbmQuaXNWYWxpZCgpKTsKKyAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQob3BlcmFuZC5p
c1ZhbGlkKCkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBOb2RlKiBleGVjdXRlKEJ5
dGVDb2RlUGFyc2VyKiBwYXJzZXIpCkBAIC0xNDMwLDE4ICsxNDI2LDE4IEBAIHVuc2lnbmVkIEJ5
dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQsIElubGlu
ZUNhbGxGcmFtZTo6CiB7CiAgICAgQ2FsbE1vZGUgY2FsbE1vZGUgPSBJbmxpbmVDYWxsRnJhbWU6
OmNhbGxNb2RlRm9yKGtpbmQpOwogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6
YXRpb25LaW5kID0gc3BlY2lhbGl6YXRpb25LaW5kRm9yKGNhbGxNb2RlKTsKLSAgICBpZiAodmVy
Ym9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgZGF0YUxvZygiQ29uc2lkZXJpbmcgaW5saW5pbmcgIiwgY2FsbGVlLCAiIGludG8gIiwgY3Vy
cmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgCiAgICAgaWYgKG1faGFzRGVidWdnZXJFbmFi
bGVkKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJz
ZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJl
Y2F1c2UgdGhlIGRlYnVnZ2VyIGlzIGluIHVzZS5cbiIpOwogICAgICAgICByZXR1cm4gVUlOVF9N
QVg7CiAgICAgfQogCiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVl
LmZ1bmN0aW9uRXhlY3V0YWJsZSgpOwogICAgIGlmICghZXhlY3V0YWJsZSkgewotICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZXJlIGlzIG5v
IGZ1bmN0aW9uIGV4ZWN1dGFibGUuXG4iKTsKICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAg
IH0KQEAgLTE0NTUsMTQgKzE0NTEsMTQgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGlu
aW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCwgSW5saW5lQ2FsbEZyYW1lOjoKICAgICAv
LyBpdCdzIGEgcmFyZSBjYXNlIGJlY2F1c2Ugd2UgZXhwZWN0IHRoYXQgYW55IGhvdCBjYWxsZWVz
IHdvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNvbXBpbGVkLgogICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5k
KTsKICAgICBpZiAoIWNvZGVCbG9jaykgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
aWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIG5vIGNvZGUgYmxvY2sgYXZhaWxhYmxlLlxuIik7CiAg
ICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAKICAgICBDYXBhYmlsaXR5TGV2ZWwgY2Fw
YWJpbGl0eUxldmVsID0gaW5saW5lRnVuY3Rpb25Gb3JDYXBhYmlsaXR5TGV2ZWwoCiAgICAgICAg
IGNvZGVCbG9jaywgc3BlY2lhbGl6YXRpb25LaW5kLCBjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKTsK
LSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2
ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2coIiAgICBDYWxsIG1vZGU6ICIsIGNhbGxNb2RlLCAi
XG4iKTsKICAgICAgICAgZGF0YUxvZygiICAgIElzIGNsb3N1cmUgY2FsbDogIiwgY2FsbGVlLmlz
Q2xvc3VyZUNhbGwoKSwgIlxuIik7CiAgICAgICAgIGRhdGFMb2coIiAgICBDYXBhYmlsaXR5IGxl
dmVsOiAiLCBjYXBhYmlsaXR5TGV2ZWwsICJcbiIpOwpAQCAtMTQ3Miw3ICsxNDY4LDcgQEAgdW5z
aWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGlu
dCwgSW5saW5lQ2FsbEZyYW1lOjoKICAgICAgICAgZGF0YUxvZygiICAgIElzIGlubGluaW5nIGNh
bmRpZGF0ZTogIiwgY29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+aXNJbmxpbmlu
Z0NhbmRpZGF0ZSgpLCAiXG4iKTsKICAgICB9CiAgICAgaWYgKCFjYW5JbmxpbmUoY2FwYWJpbGl0
eUxldmVsKSkgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVDb2Rl
UGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGlu
ZyBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyBub3QgaW5saW5lYWJsZS5cbiIpOwogICAgICAgICBy
ZXR1cm4gVUlOVF9NQVg7CiAgICAgfQpAQCAtMTQ4Miw3ICsxNDc4LDcgQEAgdW5zaWduZWQgQnl0
ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCwgSW5saW5l
Q2FsbEZyYW1lOjoKICAgICAvLyBwdXJwb3NlIG9mIHVuc2V0dGluZyBTQUJJLgogICAgIGlmICgh
aXNTbWFsbEVub3VnaFRvSW5saW5lQ29kZUludG8obV9jb2RlQmxvY2spKSB7CiAgICAgICAgIGNv
ZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKLSAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGUgY2FsbGVyIGlzIHRv
byBsYXJnZS5cbiIpOwogICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQpAQCAtMTUwNiw3
ICsxNTAyLDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFy
aWFudCBjYWxsZWUsIGludCwgSW5saW5lQ2FsbEZyYW1lOjoKICAgICBmb3IgKElubGluZVN0YWNr
RW50cnkqIGVudHJ5ID0gbV9pbmxpbmVTdGFja1RvcDsgZW50cnk7IGVudHJ5ID0gZW50cnktPm1f
Y2FsbGVyKSB7CiAgICAgICAgICsrZGVwdGg7CiAgICAgICAgIGlmIChkZXB0aCA+PSBPcHRpb25z
OjptYXhpbXVtSW5saW5pbmdEZXB0aCgpKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgZGVwdGggZXhjZWVkZWQuXG4i
KTsKICAgICAgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICAgICAgfQpAQCAtMTUxNCwxNCAr
MTUxMCwxNCBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KENhbGxWYXJp
YW50IGNhbGxlZSwgaW50LCBJbmxpbmVDYWxsRnJhbWU6OgogICAgICAgICBpZiAoZW50cnktPmV4
ZWN1dGFibGUoKSA9PSBleGVjdXRhYmxlKSB7CiAgICAgICAgICAgICArK3JlY3Vyc2lvbjsKICAg
ICAgICAgICAgIGlmIChyZWN1cnNpb24gPj0gT3B0aW9uczo6bWF4aW11bUlubGluaW5nUmVjdXJz
aW9uKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBp
ZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSByZWN1cnNpb24gZGV0ZWN0ZWQuXG4iKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0J5dGVDb2RlUGFy
c2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgICBJbmxpbmluZyBzaG91
bGQgYmUgcG9zc2libGUuXG4iKTsKICAgICAKICAgICAvLyBJdCBtaWdodCBiZSBwb3NzaWJsZSB0
byBpbmxpbmUuCkBAIC0xNjE4LDExICsxNjE0LDExIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6Omlu
bGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFy
CiAgICAgaW5saW5lVmFyaWFibGVEYXRhLmFyZ3VtZW50UG9zaXRpb25TdGFydCA9IGFyZ3VtZW50
UG9zaXRpb25TdGFydDsKICAgICBpbmxpbmVWYXJpYWJsZURhdGEuY2FsbGVlVmFyaWFibGUgPSAw
OwogICAgIAotICAgIFJFTEVBU0VfQVNTRVJUKAorICAgIFBBUlNFUl9BU1NFUlQoCiAgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsCiAgICAg
ICAgID09IGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpOwogICAgIGlmIChjYWxsZWUuaXNDbG9zdXJl
Q2FsbCgpKSB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxlZVZhcmlhYmxlKTsKKyAgICAg
ICAgUEFSU0VSX0FTU0VSVChjYWxsZWVWYXJpYWJsZSk7CiAgICAgICAgIGlubGluZVZhcmlhYmxl
RGF0YS5jYWxsZWVWYXJpYWJsZSA9IGNhbGxlZVZhcmlhYmxlOwogICAgIH0KICAgICAKQEAgLTE2
NjksNyArMTY2NSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2Fs
bFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyCiAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiICAgICAgICBSZXB1cnBvc2luZyBsYXN0IGJsb2NrIGZyb20gIiwgbGFzdEJsb2Nr
LT5ieXRlY29kZUJlZ2luLCAiIHRvICIsIG1fY3VycmVudEluZGV4LCAiXG4iKTsKICAgICAgICAg
ICAgIGxhc3RCbG9jay0+Ynl0ZWNvZGVCZWdpbiA9IG1fY3VycmVudEluZGV4OwogICAgICAgICAg
ICAgaWYgKGNhbGxlckxpbmthYmlsaXR5ID09IENhbGxlckRvZXNOb3JtYWxMaW5raW5nKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR0J5dGVD
b2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
IkFkZGluZyB1bmxpbmtlZCBibG9jayAiLCBSYXdQb2ludGVyKG1fZ3JhcGgubGFzdEJsb2NrKCkp
LCAiIChvbmUgcmV0dXJuKVxuIik7CiAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+
bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2sobV9ncmFwaC5s
YXN0QmxvY2soKSkpOwogICAgICAgICAgICAgfQpAQCAtMTY5OSwxNCArMTY5NSwxNCBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVz
dWx0T3BlcmFuZCwgQ2FsbFZhcgogICAgICAgICBBU1NFUlQoIW5vZGUtPnRhcmdldEJsb2NrKCkp
OwogICAgICAgICBub2RlLT50YXJnZXRCbG9jaygpID0gYmxvY2sucHRyKCk7CiAgICAgICAgIGlu
bGluZVN0YWNrRW50cnkubV91bmxpbmtlZEJsb2Nrc1tpXS5tX25lZWRzRWFybHlSZXR1cm5MaW5r
aW5nID0gZmFsc2U7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHQnl0ZUNv
ZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIk1hcmtpbmcg
IiwgUmF3UG9pbnRlcihibG9ja1RvTGluayksICIgYXMgbGlua2VkIChqdW1wcyB0byByZXR1cm4p
XG4iKTsKICAgICAgICAgYmxvY2tUb0xpbmstPmRpZExpbmsoKTsKICAgICB9CiAgICAgCiAgICAg
bV9jdXJyZW50QmxvY2sgPSBibG9jay5wdHIoKTsKICAgICBBU1NFUlQobV9pbmxpbmVTdGFja1Rv
cC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5pc0VtcHR5KCkgfHwgbV9pbmxpbmVT
dGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5sYXN0KCktPmJ5dGVjb2Rl
QmVnaW4gPCBuZXh0T2Zmc2V0KTsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0ZUNv
ZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQWRkaW5nIHVubGlu
a2VkIGJsb2NrICIsIFJhd1BvaW50ZXIoYmxvY2sucHRyKCkpLCAiIChtYW55IHJldHVybnMpXG4i
KTsKICAgICBpZiAoY2FsbGVyTGlua2FiaWxpdHkgPT0gQ2FsbGVyRG9lc05vcm1hbExpbmtpbmcp
IHsKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3Mu
YXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2sucHRyKCkpKTsKQEAgLTE3NDIsNyArMTczOCw3IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lubGluZUNhbGwoTm9kZSogY2FsbFRhcmdl
dE5vZGUsIGludCByZXN1bHRPcGVyYW5kCiAgICAgaWYgKCFpbmxpbmluZ0JhbGFuY2UpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0
ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiICAgIENvbnNp
ZGVyaW5nIGNhbGxlZSAiLCBjYWxsZWUsICJcbiIpOwogICAgIAogICAgIC8vIEludHJpbnNpY3Mg
YW5kIGludGVybmFsIGZ1bmN0aW9ucyBjYW4gb25seSBiZSBpbmxpbmVkIGlmIHdlJ3JlIG5vdCBk
b2luZyB2YXJhcmdzLiBUaGlzIGlzIGJlY2F1c2UKQEAgLTE3NjIsNDAgKzE3NTgsNDAgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9k
ZSwgaW50IHJlc3VsdE9wZXJhbmQKICAgICAKICAgICAgICAgaWYgKEludGVybmFsRnVuY3Rpb24q
IGZ1bmN0aW9uID0gY2FsbGVlLmludGVybmFsRnVuY3Rpb24oKSkgewogICAgICAgICAgICAgaWYg
KGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3Bl
cmFuZCwgZnVuY3Rpb24sIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgc3BlY2lhbGl6YXRpb25LaW5kLCBwcmVkaWN0aW9uLCBpbnNlcnRDaGVja3NXaXRoQWNjb3Vu
dGluZykpIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChkaWRJbnNlcnRDaGVja3Mp
OworICAgICAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKICAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXROb2RlKTsKICAgICAgICAg
ICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpOwogICAgICAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZS0tOwogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CisgICAgICAgICAgICBQQVJTRVJfQVNTRVJU
KCFkaWRJbnNlcnRDaGVja3MpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgCiAgICAgICAgIEludHJpbnNpYyBpbnRyaW5zaWMgPSBjYWxsZWUuaW50cmluc2ljRm9y
KHNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAgICAgIGlmIChpbnRyaW5zaWMgIT0gTm9JbnRyaW5z
aWMpIHsKICAgICAgICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWNDYWxsKGNhbGxUYXJnZXROb2Rl
LCByZXN1bHRPcGVyYW5kLCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7
Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKKyAgICAg
ICAgICAgICAgICBQQVJTRVJfQVNTRVJUKGRpZEluc2VydENoZWNrcyk7CiAgICAgICAgICAgICAg
ICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7CiAgICAgICAgICAgICAgICAg
ZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKTsKICAgICAgICAgICAgICAgICBpbmxpbmluZ0JhbGFuY2UtLTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoIWRpZEluc2VydENoZWNrcyk7CisgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKCFkaWRJ
bnNlcnRDaGVja3MpOwogICAgICAgICAgICAgLy8gV2UgbWlnaHQgc3RpbGwgdHJ5IHRvIGlubGlu
ZSB0aGUgSW50cmluc2ljIGJlY2F1c2UgaXQgbWlnaHQgYmUgYSBidWlsdGluIEpTIGZ1bmN0aW9u
LgogICAgICAgICB9CiAKICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZURPTUpJVCgpKSB7CiAgICAg
ICAgICAgICBpZiAoY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IGNhbGxlZS5z
aWduYXR1cmVGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKSkgewogICAgICAgICAgICAgICAgIGlmICho
YW5kbGVET01KSVRDYWxsKGNhbGxUYXJnZXROb2RlLCByZXN1bHRPcGVyYW5kLCBzaWduYXR1cmUs
IHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbiwg
aW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGRpZEluc2VydENoZWNrcyk7CisgICAgICAgICAgICAgICAgICAgIFBBUlNFUl9B
U1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQ
aGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRBcmd1bWVu
dFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CiAg
ICAgICAgICAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZS0tOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CisgICAgICAgICAgICAgICAgUEFSU0VSX0FTU0VS
VCghZGlkSW5zZXJ0Q2hlY2tzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAg
LTE4MTcsMjEgKzE4MTMsMjEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmco
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50c0FyZ3VtZW50LCB1bnNpZ25lZCBhcmd1bWVu
dHNPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywKICAgICB1bnNpZ25lZCBu
ZXh0T2Zmc2V0LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogewotICAgIGlmICh2ZXJib3NlKSB7CisgICAgaWYg
KERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZGF0YUxvZygi
SGFuZGxpbmcgaW5saW5pbmcuLi5cbiIpOwogICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3Vy
cmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgfQogICAgIENvZGVTcGVjaWFsaXphdGlvbktp
bmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktp
bmRGb3Ioa2luZCk7CiAgICAgCiAgICAgaWYgKCFjYWxsTGlua1N0YXR1cy5zaXplKCkpIHsKLSAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQmFpbGluZyBpbmxpbmluZy5cbiIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIGlmIChJbmxpbmVDYWxsRnJh
bWU6OmlzVmFyYXJncyhraW5kKQogICAgICAgICAmJiBjYWxsTGlua1N0YXR1cy5tYXhOdW1Bcmd1
bWVudHMoKSA+IE9wdGlvbnM6Om1heGltdW1WYXJhcmdzRm9ySW5saW5pbmcoKSkgewotICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJCYWlsaW5nIGlubGluaW5nIGJlY2F1c2Ugb2Yg
dmFyYXJncy5cbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTk1MCw3ICsx
OTQ2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9KTsKLSAgICAgICAg
aWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZl
cmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkRvbmUgaW5saW5pbmcgKHNpbXBsZSkuXG4i
KTsKICAgICAgICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAi
XG4iKTsKICAgICAgICAgICAgIGRhdGFMb2coIlJlc3VsdDogIiwgcmVzdWx0LCAiXG4iKTsKQEAg
LTE5NjYsNyArMTk2Miw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAog
ICAgIC8vIGFsc28uCiAgICAgaWYgKCFpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSB8fCAhT3B0
aW9uczo6dXNlUG9seW1vcnBoaWNDYWxsSW5saW5pbmcoKQogICAgICAgICB8fCBJbmxpbmVDYWxs
RnJhbWU6OmlzVmFyYXJncyhraW5kKSkgewotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAg
ICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAg
ZGF0YUxvZygiQmFpbGluZyBpbmxpbmluZyAoaGFyZCkuXG4iKTsKICAgICAgICAgICAgIGRhdGFM
b2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICAgICAgfQpAQCAt
MTk3OCw3ICsxOTc0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAg
ICAgLy8gaXQgaGFzIG5vIGlkZWEuCiAgICAgaWYgKCFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0Nh
bGxJbmxpbmluZ0Zvck5vblN0dWJTdGF0dXMoKQogICAgICAgICAmJiAhY2FsbExpbmtTdGF0dXMu
aXNCYXNlZE9uU3R1YigpKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChE
RkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9n
KCJCYWlsaW5nIGlubGluaW5nIChub24tc3R1YiBwb2x5bW9ycGhpc20pLlxuIik7CiAgICAgICAg
ICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAg
ICAgIH0KQEAgLTIwMDYsMTQgKzIwMDIsMTQgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW5saW5pbmcoCiAgICAgICAgIC8vIHdoZXJlIGl0IHdvdWxkIGJlIGJlbmVmaWNpYWwuIEl0IG1p
Z2h0IGJlIGJlc3QgdG8gaGFuZGxlIHRoZXNlIGNhc2VzIGFzIGlmIGFsbCBjYWxscyB3ZXJlCiAg
ICAgICAgIC8vIGNsb3N1cmUgY2FsbHMuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYwMjAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAg
ICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAg
IGRhdGFMb2coIkJhaWxpbmcgaW5saW5pbmcgKG1peCkuXG4iKTsKICAgICAgICAgICAgIGRhdGFM
b2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICAgICAgfQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAotICAgIGlmICh2ZXJib3NlKSB7CisgICAg
aWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZGF0YUxv
ZygiRG9pbmcgaGFyZCBpbmxpbmluZy4uLlxuIik7CiAgICAgICAgIGRhdGFMb2coIlN0YWNrOiAi
LCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICB9CkBAIC0yMDI0LDExICsyMDIwLDEx
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgIC8vIHN0b3JlIHRo
ZSBjYWxsZWUgc28gdGhhdCBpdCB3aWxsIGJlIGFjY2Vzc2libGUgdG8gYWxsIG9mIHRoZSBibG9j
a3Mgd2UncmUgYWJvdXQgdG8gY3JlYXRlLiBXZQogICAgIC8vIGdldCBhd2F5IHdpdGggZG9pbmcg
YW4gaW1tZWRpYXRlLXNldCBoZXJlIGJlY2F1c2Ugd2Ugd291bGRuJ3QgaGF2ZSBwZXJmb3JtZWQg
YW55IHNpZGUgZWZmZWN0cwogICAgIC8vIHlldC4KLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAo
REZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiUmVn
aXN0ZXIgb2Zmc2V0OiAiLCByZWdpc3Rlck9mZnNldCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGNh
bGxlZVJlZyhyZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7CiAgICAgY2Fs
bGVlUmVnID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKGNhbGxlZVJlZyk7Ci0gICAg
aWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgIGRhdGFMb2coIkNhbGxlZSBpcyBnb2luZyB0byBiZSAiLCBjYWxsZWVSZWcsICJc
biIpOwogICAgIHNldERpcmVjdChjYWxsZWVSZWcsIGNhbGxUYXJnZXROb2RlLCBJbW1lZGlhdGVT
ZXRXaXRoRmx1c2gpOwogCkBAIC0yMDQyLDcgKzIwMzgsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbmxpbmluZygKICAgICBhZGRUb0dyYXBoKFN3aXRjaCwgT3BJbmZvKCZkYXRhKSwg
dGhpbmdUb1N3aXRjaE9uKTsKICAgICAKICAgICBCYXNpY0Jsb2NrKiBvcmlnaW5CbG9jayA9IG1f
Y3VycmVudEJsb2NrOwotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNl
ckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50
ZXIob3JpZ2luQmxvY2spLCAiIGFzIGxpbmtlZCAob3JpZ2luIG9mIHBvbHkgaW5saW5lKVxuIik7
CiAgICAgb3JpZ2luQmxvY2stPmRpZExpbmsoKTsKICAgICBjYW5jZWxMaW5raW5nRm9yQmxvY2so
bV9pbmxpbmVTdGFja1RvcCwgb3JpZ2luQmxvY2spOwpAQCAtMjA1NCw3ICsyMDUwLDcgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgLy8gV2UgbWF5IGZvcmNlIHRo
aXMgdHJ1ZSBpZiB3ZSBnaXZlIHVwIG9uIGlubGluaW5nIGFueSBvZiB0aGUgZWRnZXMuCiAgICAg
Ym9vbCBjb3VsZFRha2VTbG93UGF0aCA9IGNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRo
KCk7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkFib3V0IHRvIGxvb3Agb3ZlciBmdW5j
dGlvbnMgYXQgIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIi5cbiIpOwogICAgIAogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsTGlua1N0YXR1cy5zaXplKCk7ICsraSkgewpAQCAtMjEw
MSwxMSArMjA5NywxMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCk7CiAgICAgICAgICAgICBsYW5kaW5nQmxvY2tzLmFw
cGVuZChtX2N1cnJlbnRCbG9jayk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgZGF0YUxvZygiTWFya2luZyAiLCBSYXdQb2ludGVyKG1fY3VycmVudEJsb2NrKSwgIiBhcyBs
aW5rZWQgKHRhaWwgb2YgcG9seSBpbmxpbmVlKVxuIik7CiAgICAgICAgIG1fY3VycmVudEJsb2Nr
LT5kaWRMaW5rKCk7CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdCeXRl
Q29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiRmluaXNo
ZWQgaW5saW5pbmcgIiwgY2FsbExpbmtTdGF0dXNbaV0sICIgYXQgIiwgY3VycmVudENvZGVPcmln
aW4oKSwgIi5cbiIpOwogICAgIH0KICAgICAKQEAgLTIxMTUsNyArMjExMSw3IEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgIG1fZXhpdE9LID0gdHJ1ZTsKICAgICBk
YXRhLmZhbGxUaHJvdWdoID0gQnJhbmNoVGFyZ2V0KHNsb3dQYXRoQmxvY2sucHRyKCkpOwogICAg
IG1fZ3JhcGguYXBwZW5kQmxvY2soc2xvd1BhdGhCbG9jay5jb3B5UmVmKCkpOwotICAgIGlmICh2
ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIoc2xvd1BhdGhCbG9jay5wdHIoKSks
ICIgYXMgbGlua2VkIChzbG93IHBhdGggYmxvY2spXG4iKTsKICAgICBzbG93UGF0aEJsb2NrLT5k
aWRMaW5rKCk7CiAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOwpAQCAtMjE0Niw3ICsyMTQyLDcg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgUmVmPEJhc2ljQmxv
Y2s+IGNvbnRpbnVhdGlvbkJsb2NrID0gYWRvcHRSZWYoCiAgICAgICAgICpuZXcgQmFzaWNCbG9j
ayhVSU5UX01BWCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCAxKSk7CiAgICAgbV9ncmFw
aC5hcHBlbmRCbG9jayhjb250aW51YXRpb25CbG9jay5jb3B5UmVmKCkpOwotICAgIGlmICh2ZXJi
b3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICBkYXRhTG9nKCJBZGRpbmcgdW5saW5rZWQgYmxvY2sgIiwgUmF3UG9pbnRlcihjb250aW51YXRp
b25CbG9jay5wdHIoKSksICIgKGNvbnRpbnVhdGlvbilcbiIpOwogICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soY29udGludWF0aW9uQmxv
Y2sucHRyKCkpKTsKICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CkBAIC0yMTU4LDcgKzIxNTQs
NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICBtX2N1cnJlbnRJ
bmRleCA9IG9sZE9mZnNldDsKICAgICBtX2V4aXRPSyA9IHRydWU7CiAgICAgCi0gICAgaWYgKHZl
cmJvc2UpIHsKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkgewog
ICAgICAgICBkYXRhTG9nKCJEb25lIGlubGluaW5nIChoYXJkKS5cbiIpOwogICAgICAgICBkYXRh
TG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgfQpAQCAtMzQ4
MywxNCArMzQ3OSwxNCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpuZWVkc0R5bmFtaWNMb29rdXAo
UmVzb2x2ZVR5cGUgdHlwZSwgT3Bjb2RlSUQgb3Bjb2RlKQogCiBHZXRCeU9mZnNldE1ldGhvZCBC
eXRlQ29kZVBhcnNlcjo6cGxhbkxvYWQoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGNv
bmRpdGlvbikKIHsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiUGxhbm5pbmcgYSBsb2FkOiAiLCBj
b25kaXRpb24sICJcbiIpOwogICAgIAogICAgIC8vIFdlIG1pZ2h0IHByb21vdGUgdGhpcyB0byBF
cXVpdmFsZW5jZSwgYW5kIGEgbGF0ZXIgREZHIHBhc3MgbWlnaHQgYWxzbyBkbyBzdWNoIHByb21v
dGlvbgogICAgIC8vIGV2ZW4gaWYgd2UgZmFpbCwgYnV0IGZvciBzaW1wbGljaXR5IHRoaXMgY2Fu
bm90IGJlIGFza2VkIHRvIGxvYWQgYW4gZXF1aXZhbGVuY2UgY29uZGl0aW9uLgogICAgIC8vIE5v
bmUgb2YgdGhlIGNsaWVudHMgb2YgdGhpcyBtZXRob2Qgd2lsbCByZXF1ZXN0IGEgbG9hZCBvZiBh
biBFcXVpdmFsZW5jZSBjb25kaXRpb24gYW55d2F5LAogICAgIC8vIGFuZCBzdXBwb3J0aW5nIGl0
IHdvdWxkIGNvbXBsaWNhdGUgdGhlIGhldXJpc3RpY3MgYmVsb3cuCi0gICAgUkVMRUFTRV9BU1NF
UlQoY29uZGl0aW9uLmtpbmQoKSA9PSBQcm9wZXJ0eUNvbmRpdGlvbjo6UHJlc2VuY2UpOworICAg
IFBBUlNFUl9BU1NFUlQoY29uZGl0aW9uLmtpbmQoKSA9PSBQcm9wZXJ0eUNvbmRpdGlvbjo6UHJl
c2VuY2UpOwogICAgIAogICAgIC8vIEhlcmUncyB0aGUgcmFua2luZyBvZiBob3cgdG8gaGFuZGxl
IHRoaXMsIGZyb20gbW9zdCBwcmVmZXJyZWQgdG8gbGVhc3QgcHJlZmVycmVkOgogICAgIC8vCkBA
IC0zNTkzLDE0ICszNTg5LDE0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmNoZWNrKGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQpCiAKIEdldEJ5T2Zmc2V0TWV0
aG9kIEJ5dGVDb2RlUGFyc2VyOjpwbGFuTG9hZChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCYgY29uZGl0aW9uU2V0KQogewotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChERkdCeXRl
Q29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJjb25kaXRpb25T
ZXQgPSAiLCBjb25kaXRpb25TZXQsICJcbiIpOwogICAgIAogICAgIEdldEJ5T2Zmc2V0TWV0aG9k
IHJlc3VsdDsKICAgICBmb3IgKGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBjb25kaXRp
b24gOiBjb25kaXRpb25TZXQpIHsKICAgICAgICAgc3dpdGNoIChjb25kaXRpb24ua2luZCgpKSB7
CiAgICAgICAgIGNhc2UgUHJvcGVydHlDb25kaXRpb246OlByZXNlbmNlOgotICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIXJlc3VsdCk7IC8vIFNob3VsZCBvbmx5IHNlZSBleGFjdGx5IG9uZSBv
ZiB0aGVzZS4KKyAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoIXJlc3VsdCk7IC8vIFNob3VsZCBv
bmx5IHNlZSBleGFjdGx5IG9uZSBvZiB0aGVzZS4KICAgICAgICAgICAgIHJlc3VsdCA9IHBsYW5M
b2FkKGNvbmRpdGlvbik7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgICAg
ICByZXR1cm4gR2V0QnlPZmZzZXRNZXRob2QoKTsKQEAgLTM3NzAsNyArMzc2Niw3IEBAIE5vZGUq
IEJ5dGVDb2RlUGFyc2VyOjpsb2FkKAogCiBOb2RlKiBCeXRlQ29kZVBhcnNlcjo6c3RvcmUoTm9k
ZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllciwgY29uc3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlh
bnQsIE5vZGUqIHZhbHVlKQogewotICAgIFJFTEVBU0VfQVNTRVJUKHZhcmlhbnQua2luZCgpID09
IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlKTsKKyAgICBQQVJTRVJfQVNTRVJUKHZhcmlhbnQua2lu
ZCgpID09IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlKTsKIAogICAgIGNoZWNrUHJlc2VuY2VMaWtl
KGJhc2UsIG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyXSwgdmFyaWFudC5vZmZzZXQo
KSwgdmFyaWFudC5zdHJ1Y3R1cmUoKSk7CiAgICAgcmV0dXJuIGhhbmRsZVB1dEJ5T2Zmc2V0KGJh
c2UsIGlkZW50aWZpZXIsIHZhcmlhbnQub2Zmc2V0KCksIHZhcmlhbnQucmVxdWlyZWRUeXBlKCks
IHZhbHVlKTsKQEAgLTQxNjksNyArNDE2NSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgLy8gb3Bwb3NlZCB0byB1c2luZyBhIHZhbHVlIHdl
IHNldCBleHBsaWNpdGx5LgogICAgIGlmIChtX2N1cnJlbnRCbG9jayA9PSBtX2dyYXBoLmJsb2Nr
KDApICYmICFpbmxpbmVDYWxsRnJhbWUoKSkgewogICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
Z3JhcGgubV9yb290VG9Bcmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBBcmd1bWVudHNWZWN0
b3IoKSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAg
ICAgICAgUEFSU0VSX0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgICAgIEFyZ3Vt
ZW50c1ZlY3RvciYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7CiAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsK
IApAQCAtNTI2Niw3ICs1MjYyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYXRjaCk7CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2N1cnJlbnRCbG9j
ay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoIW1fY3VycmVudEJsb2NrLT5z
aXplKCkpOwogCiAgICAgICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZm
ZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudElu
c3RydWN0aW9uWzNdLnUucG9pbnRlcik7CiAKQEAgLTUyOTEsOCArNTI4Nyw4IEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAg
ICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2Fs
UHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOwogICAgICAgICAgICAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wZXJhbmQuaXNBcmd1
bWVudCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRpY19j
YXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJndW1lbnQoKSkgPCBhcmd1bWVudFByZWRpY3Rpb25z
LnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKG9wZXJhbmQu
aXNBcmd1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KG9wZXJhbmQudG9Bcmd1bWVudCgpKSA8IGFyZ3VtZW50UHJlZGlj
dGlvbnMuc2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uRW5h
YmxlZCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZW5Bcmd1bWVudHMuYWRkKG9w
ZXJhbmQudG9Bcmd1bWVudCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50UHJl
ZGljdGlvbnNbb3BlcmFuZC50b0FyZ3VtZW50KCldID0gcHJlZGljdGlvbjsKQEAgLTUzMDEsNyAr
NTI5Nyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQp
CiAKICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgewogICAgICAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBtX251bUFy
Z3VtZW50czsgKythcmd1bWVudCkKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHNlZW5Bcmd1bWVudHMuY29udGFpbnMoYXJndW1lbnQpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFBBUlNFUl9BU1NFUlQoc2VlbkFyZ3VtZW50cy5jb250YWlucyhhcmd1bWVudCkpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApAQCAtNTM0Miw3ICs1MzM4LDcgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKIAogICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5tX3Jvb3RU
b0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIEFyZ3VtZW50c1ZlY3RvcigpKTsKLSAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgICAg
ICAgICAgICAgUEFSU0VSX0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgICAgICAg
ICAgICAgQXJndW1lbnRzVmVjdG9yJiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzLnJlc2l6
ZShtX251bUFyZ3VtZW50cyk7CiAKQEAgLTU0ODcsOCArNTQ4Myw4IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBjYXNlIEdsb2Jh
bExleGljYWxWYXI6CiAgICAgICAgICAgICBjYXNlIEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzOiB7CiAgICAgICAgICAgICAgICAgSlNTY29wZSogY29uc3RhbnRTY29wZSA9
IEpTU2NvcGU6OmNvbnN0YW50U2NvcGVGb3JDb2RlQmxvY2socmVzb2x2ZVR5cGUsIG1faW5saW5l
U3RhY2tUb3AtPm1fY29kZUJsb2NrKTsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChj
b25zdGFudFNjb3BlKTsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2Fz
dDxKU1Njb3BlKj4oY3VycmVudEluc3RydWN0aW9uWzZdLnUucG9pbnRlcikgPT0gY29uc3RhbnRT
Y29wZSk7CisgICAgICAgICAgICAgICAgUEFSU0VSX0FTU0VSVChjb25zdGFudFNjb3BlKTsKKyAg
ICAgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKHN0YXRpY19jYXN0PEpTU2NvcGUqPihjdXJyZW50
SW5zdHJ1Y3Rpb25bNl0udS5wb2ludGVyKSA9PSBjb25zdGFudFNjb3BlKTsKICAgICAgICAgICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRzdCksIHdlYWtKU0NvbnN0YW50KGNvbnN0YW50U2Nv
cGUpKTsKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdldChWaXJ0dWFsUmVn
aXN0ZXIoc2NvcGUpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01ODI5LDcgKzU4MjUs
NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAg
ICAgICAgICAgLy8gQmFzZWxpbmUtPkRGRyBPU1IganVtcHMgYmV0d2VlbiBsb29wIGhpbnRzLiBU
aGUgREZHIGFzc3VtZXMgdGhhdCBCYXNlbGluZS0+REZHCiAgICAgICAgICAgICAvLyBPU1IgY2Fu
IG9ubHkgaGFwcGVuIGF0IGJhc2ljIGJsb2NrIGJvdW5kYXJpZXMuIEFzc2VydCB0aGF0IHRoZXNl
IHR3byBzdGF0ZW1lbnRzCiAgICAgICAgICAgICAvLyBhcmUgY29tcGF0aWJsZS4KLSAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKG1fY3VycmVudEluZGV4ID09IGJsb2NrQmVnaW4pOworICAgICAg
ICAgICAgUEFSU0VSX0FTU0VSVChtX2N1cnJlbnRJbmRleCA9PSBibG9ja0JlZ2luKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgLy8gV2UgbmV2ZXIgZG8gT1NSIGludG8gYW4gaW5saW5lZCBj
b2RlIGJsb2NrLiBUaGF0IGNvdWxkIG5vdCBoYXBwZW4sIHNpbmNlIE9TUgogICAgICAgICAgICAg
Ly8gbG9va3MgdXAgdGhlIGNvZGUgYmxvY2sgdGhhdCBpcyB0aGUgcmVwbGFjZW1lbnQgZm9yIHRo
ZSBiYXNlbGluZSBKSVQgY29kZQpAQCAtNjE3OSw3ICs2MTc1LDcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6bGlua0Jsb2NrKEJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8QmFzaWNCbG9jayo+JiBw
b3NzaWJsZVQKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIGlmICh2ZXJib3NlKQor
ICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRh
TG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIoYmxvY2spLCAiIGFzIGxpbmtlZCAoYWN0dWFsbHkg
ZGlkIGxpbmtpbmcpXG4iKTsKICAgICBibG9jay0+ZGlkTGluaygpOwogfQpAQCAtNjE4NywxMCAr
NjE4MywxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2soQmFzaWNCbG9jayogYmxv
Y2ssIFZlY3RvcjxCYXNpY0Jsb2NrKj4mIHBvc3NpYmxlVAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6
bGlua0Jsb2NrcyhWZWN0b3I8VW5saW5rZWRCbG9jaz4mIHVubGlua2VkQmxvY2tzLCBWZWN0b3I8
QmFzaWNCbG9jayo+JiBwb3NzaWJsZVRhcmdldHMpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB1bmxpbmtlZEJsb2Nrcy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICBkYXRhTG9nKCJBdHRlbXB0aW5nIHRvIGxpbmsgIiwgUmF3UG9pbnRlcih1bmxpbmtlZEJs
b2Nrc1tpXS5tX2Jsb2NrKSwgIlxuIik7CiAgICAgICAgIGlmICh1bmxpbmtlZEJsb2Nrc1tpXS5t
X25lZWRzTm9ybWFsTGlua2luZykgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgRG9lcyBuZWVkIG5vcm1hbCBsaW5raW5nLlxuIik7CiAgICAgICAg
ICAgICBsaW5rQmxvY2sodW5saW5rZWRCbG9ja3NbaV0ubV9ibG9jaywgcG9zc2libGVUYXJnZXRz
KTsKICAgICAgICAgICAgIHVubGlua2VkQmxvY2tzW2ldLm1fbmVlZHNOb3JtYWxMaW5raW5nID0g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCmluZGV4IDU3
ZWM0YTgwZTRiMjlkMmNiZDQ5NmVlYWMzOGQxYjI5MzliODYxNzMuLmViZDFiOGVmZWY3YzI1MzBl
MjhmOTI3MTdjZjcwZGFjMjcwZWQzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ1NFUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q1NFUGhhc2UuY3BwCkBAIC00OCw3ICs0OCw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKIAogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1l
c3BhY2UgREZHQ1NFUGhhc2VJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7Cit9CiAKIGNsYXNzIEltcHVyZURhdGFTbG90IHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShJbXB1cmVEYXRhU2xvdCk7CkBAIC02MjcsNyArNjI5LDcgQEAgcHVibGljOgogICAgIAog
ICAgIGJvb2wgaXRlcmF0ZSgpCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
aWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJQ
ZXJmb3JtaW5nIGl0ZXJhdGlvbi5cbiIpOwogICAgICAgICAKICAgICAgICAgbV9jaGFuZ2VkID0g
ZmFsc2U7CkBAIC02MzgsMTMgKzY0MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2ltcHVy
ZURhdGEgPSAmbV9pbXB1cmVEYXRhTWFwW21fYmxvY2tdOwogICAgICAgICAgICAgbV93cml0ZXNT
b0Zhci5jbGVhcigpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgIGlmIChERkdDU0VQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2coIlByb2Nlc3NpbmcgYmxvY2sgIiwgKm1fYmxvY2ssICI6XG4iKTsKIAogICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXggPSAwOyBub2RlSW5kZXggPCBtX2Jsb2Nr
LT5zaXplKCk7ICsrbm9kZUluZGV4KSB7CiAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXggPSBu
b2RlSW5kZXg7CiAgICAgICAgICAgICAgICAgbV9ub2RlID0gbV9ibG9jay0+YXQobm9kZUluZGV4
KTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZH
Q1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
ICBMb29raW5nIGF0IG5vZGUgIiwgbV9ub2RlLCAiOlxuIik7CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5wZXJmb3JtU3Vic3RpdHV0aW9uKG1fbm9kZSk7CkBAIC03
MDcsNyArNzA5LDcgQEAgcHVibGljOgogICAgICAgICAvLyBhIGdsb2JhbCBzZWFyY2guCiAgICAg
ICAgIExhenlOb2RlIG1hdGNoID0gbV9pbXB1cmVEYXRhLT5hdmFpbGFibGVBdFRhaWwuZ2V0KGxv
Y2F0aW9uKTsKICAgICAgICAgaWYgKCEhbWF0Y2gpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiICAgICAgRm91bmQgbG9jYWwgbWF0Y2g6ICIsIG1hdGNoLCAiXG4i
KTsKICAgICAgICAgICAgIHJldHVybiBtYXRjaDsKICAgICAgICAgfQpAQCAtNzE1LDcgKzcxNyw3
IEBAIHB1YmxpYzoKICAgICAgICAgLy8gSWYgaXQncyBub3QgYXZhaWxhYmxlIGF0IHRoaXMgcG9p
bnQgaW4gdGhlIGJsb2NrLCBhbmQgYXQgc29tZSBwcmlvciBwb2ludCBpbiB0aGUgYmxvY2sKICAg
ICAgICAgLy8gd2UgaGF2ZSBjbG9iYmVyZWQgdGhpcyBoZWFwIGxvY2F0aW9uLCB0aGVuIHRoZXJl
IGlzIG5vIHBvaW50IGluIGRvaW5nIGEgZ2xvYmFsIHNlYXJjaC4KICAgICAgICAgaWYgKG1fd3Jp
dGVzU29GYXIub3ZlcmxhcHMobG9jYXRpb24uaGVhcCgpKSkgewotICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBOb3QgbG9va2luZyBnbG9iYWxseSBiZWNhdXNl
IG9mIGxvY2FsIGNsb2JiZXI6ICIsIG1fd3JpdGVzU29GYXIsICJcbiIpOwogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KQEAgLTc3Miw3ICs3NzQsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAg
ICAgICAgICBzZWVuTGlzdC5hcHBlbmQoYmxvY2spOwogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdDU0VQaGFzZUludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFNlYXJjaGluZyBpbiBibG9jayAi
LCAqYmxvY2ssICJcbiIpOwogICAgICAgICAgICAgSW1wdXJlQmxvY2tEYXRhJiBkYXRhID0gbV9p
bXB1cmVEYXRhTWFwW2Jsb2NrXTsKICAgICAgICAgICAgIApAQCAtNzgwLDEyICs3ODIsMTIgQEAg
cHVibGljOgogICAgICAgICAgICAgLy8gdGhleSBjYW1lICphZnRlciogb3VyIHBvc2l0aW9uIGlu
IHRoZSBibG9jay4gQ2xlYXJseSwgd2hpbGUgb3VyIGJsb2NrIGRvbWluYXRlcwogICAgICAgICAg
ICAgLy8gaXRzZWxmLCB0aGUgdGhpbmdzIGluIHRoZSBibG9jayBhZnRlciB1cyBkb24ndCBkb21p
bmF0ZSB1cy4KICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+c3RyaWN0
bHlEb21pbmF0ZXMoYmxvY2ssIG1fYmxvY2spKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgSXQgc3RyaWN0bHkgZG9taW5hdGVz
LlxuIik7CiAgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIGRhdGEu
ZGlkVmlzaXQpOwogICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCAh
bWF0Y2gpOwogICAgICAgICAgICAgICAgIG1hdGNoID0gZGF0YS5hdmFpbGFibGVBdFRhaWwuZ2V0
KGxvY2F0aW9uKTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAg
ICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiICAgICAgICBBdmFpbGFiaWxpdHk6ICIsIG1hdGNoLCAiXG4iKTsKICAgICAgICAg
ICAgICAgICBpZiAoISFtYXRjaCkgewogICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBleGFt
aW5lIHRoZSBwcmVkZWNlc3NvcnMgb2YgYSBtYXRjaC4gQXQgdGhpcyBwb2ludCB3ZSBqdXN0IHdh
bnQgdG8KQEAgLTc5NSwxMCArNzk3LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiICAgICAgICBEZWFsaW5nIHdpdGggd3JpdGUgc2V0ICIsIGRhdGEud3JpdGVz
LCAiXG4iKTsKICAgICAgICAgICAgIGlmIChkYXRhLndyaXRlcy5vdmVybGFwcyhsb2NhdGlvbi5o
ZWFwKCkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAg
aWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2coIiAgICAgICAgQ2xvYmJlcmVkLlxuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgICAgICB9CkBAIC04MzAsMTYgKzgzMiwxNiBAQCBwdWJsaWM6CiAgICAg
CiAgICAgdm9pZCBkZWYoSGVhcExvY2F0aW9uIGxvY2F0aW9uLCBMYXp5Tm9kZSB2YWx1ZSkKICAg
ICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBHb3QgaGVhcCBsb2NhdGlvbiBk
ZWY6ICIsIGxvY2F0aW9uLCAiIC0+ICIsIHZhbHVlLCAiXG4iKTsKICAgICAgICAgCiAgICAgICAg
IExhenlOb2RlIG1hdGNoID0gZmluZFJlcGxhY2VtZW50KGxvY2F0aW9uKTsKICAgICAgICAgCi0g
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIEdvdCBtYXRjaDogIiwgbWF0Y2gsICJc
biIpOwogICAgICAgICAKICAgICAgICAgaWYgKCFtYXRjaCkgewotICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBBZGRpbmcgYXQtdGFpbCBtYXBwaW5nOiAiLCBs
b2NhdGlvbiwgIiAtPiAiLCB2YWx1ZSwgIlxuIik7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IG1faW1wdXJlRGF0YS0+YXZhaWxhYmxlQXRUYWlsLmFkZChsb2NhdGlvbiwgdmFsdWUpOwogICAg
ICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsICFyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAppbmRleCBi
MGM1NWJlOTlhMjA1MzE4ODFlMTQ2MmJlODcxZGU4YTBkYjcxZjIwLi5iNDljYjRjZDk2MjM0YTky
NzFjY2FiODJjNGU2NzhiYTkzZDc4MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcApAQCAtMzcsNyArMzcsOSBAQAog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKK25hbWVzcGFjZSBERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZUludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxz
ZTsKK30KIAogSW5QbGFjZUFic3RyYWN0U3RhdGU6OkluUGxhY2VBYnN0cmFjdFN0YXRlKEdyYXBo
JiBncmFwaCkKICAgICA6IG1fZ3JhcGgoZ3JhcGgpCkBAIC0yNzYsNyArMjc4LDcgQEAgdm9pZCBJ
blBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VTdGF0ZUF0VGFpbChBYnN0cmFjdFZhbHVlJiBkZXN0
aW5hdGlvbiwgQWJzdHJhY3QKIAogYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UoQmFz
aWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pCiB7Ci0gICAgaWYgKHZlcmJvc2UpCisgICAg
aWYgKERGR0luUGxhY2VBYnN0cmFjdFN0YXRlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRh
dGFMb2coIiAgIE1lcmdpbmcgZnJvbSAiLCBwb2ludGVyRHVtcChmcm9tKSwgIiB0byAiLCBwb2lu
dGVyRHVtcCh0byksICJcbiIpOwogICAgIEFTU0VSVChmcm9tLT52YXJpYWJsZXNBdFRhaWwubnVt
YmVyT2ZBcmd1bWVudHMoKSA9PSB0by0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRz
KCkpOwogICAgIEFTU0VSVChmcm9tLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKSA9
PSB0by0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCkpOwpAQCAtMzA3LDcgKzMwOSw3
IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKEJhc2ljQmxvY2sqIGZyb20sIEJh
c2ljQmxvY2sqIHRvKQogCiAgICAgICAgIGZvciAoTm9kZUFic3RyYWN0VmFsdWVQYWlyJiBlbnRy
eSA6IHRvLT5zc2EtPnZhbHVlc0F0SGVhZCkgewogICAgICAgICAgICAgTm9kZUZsb3dQcm9qZWN0
aW9uIG5vZGUgPSBlbnRyeS5ub2RlOwotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICBpZiAoREZHSW5QbGFjZUFic3RyYWN0U3RhdGVJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgICBNZXJnaW5nIGZvciAiLCBub2RlLCAiOiBmcm9tICIs
IGZvck5vZGUobm9kZSksICIgdG8gIiwgZW50cnkudmFsdWUsICJcbiIpOwogI2lmbmRlZiBOREVC
VUcKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlQ291bnRJbkZyb21CbG9jayA9IDA7CkBAIC0z
MjIsNyArMzI0LDcgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbG9j
ayogZnJvbSwgQmFzaWNCbG9jayogdG8pCiAKICAgICAgICAgICAgIGNoYW5nZWQgfD0gZW50cnku
dmFsdWUubWVyZ2UoZm9yTm9kZShub2RlKSk7CiAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgaWYgKERGR0luUGxhY2VBYnN0cmFjdFN0YXRlSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICAgUmVzdWx0OiAiLCBlbnRyeS52YWx1
ZSwgIlxuIik7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC0zMzYsNyArMzM4LDcgQEAg
Ym9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNC
bG9jayogdG8pCiAgICAgaWYgKCF0by0+Y2ZhSGFzVmlzaXRlZCkKICAgICAgICAgY2hhbmdlZCA9
IHRydWU7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0luUGxhY2VBYnN0cmFj
dFN0YXRlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgICAgIFdpbGwgcmV2
aXNpdDogIiwgY2hhbmdlZCwgIlxuIik7CiAgICAgdG8tPmNmYVNob3VsZFJldmlzaXQgfD0gY2hh
bmdlZDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50
ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAKaW5kZXggNWQxY2JjNzZjNGVlMjUyYTMz
NzI5ZmJlMTg1ZDk5MmIyYWZlZWNkYi4uOThlMGY2ZmRmMjg4MTQ3YTgxZTljYjdmOWYxYjg5OTY1
NmZkOTFlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2Vy
Q2hlY2tDb21iaW5pbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAKQEAgLTQxLDcgKzQxLDkgQEAgbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3BhY2UgewogCituYW1lc3BhY2UgREZH
SW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2VJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2
ZXJib3NlID0gZmFsc2U7Cit9CiAKIGVudW0gUmFuZ2VLaW5kIHsKICAgICBJbnZhbGlkUmFuZ2VL
aW5kLApAQCAtMjAzLDEzICsyMDUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIGZv
ciAoYXV0byogbm9kZSA6ICpibG9jaykgewogICAgICAgICAgICAgUmFuZ2VLZXlBbmRBZGRlbmQg
ZGF0YSA9IHJhbmdlS2V5QW5kQWRkZW5kKG5vZGUpOwotICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICBpZiAoREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2VJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJGb3IgIiwgbm9kZSwgIjogIiwgZGF0
YSwgIlxuIik7CiAgICAgICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJhbmdlJiByYW5nZSA9IG1fbWFwW2RhdGEu
bV9rZXldOwotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHSW50
ZWdlckNoZWNrQ29tYmluaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCIgICAgUmFuZ2U6ICIsIHJhbmdlLCAiXG4iKTsKICAgICAgICAgICAgIGlmIChy
YW5nZS5tX2NvdW50KSB7CiAgICAgICAgICAgICAgICAgaWYgKGRhdGEubV9hZGRlbmQgPiByYW5n
ZS5tX21heEJvdW5kKSB7CkBAIC0yMjYsNyArMjI4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICByYW5nZS5tX21heE9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHJhbmdlLm1fY291bnQrKzsKLSAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgaWYgKERGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIE5ldyByYW5nZTogIiwg
cmFuZ2UsICJcbiIpOwogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNl
LmNwcAppbmRleCAwN2I2YWMzNDgyZmQwZTdmMzJlZjg0ZWY4MmIzMTE1MTI3N2JkMjEyLi40YTM4
MzFlYjE2MGRjNDk3NjRlODczOTBlODhhZjVhYTk1ZTg2ZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlv
blBoYXNlLmNwcApAQCAtNDIsNyArNDIsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAKIG5hbWVzcGFjZSB7CiAKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNw
YWNlIERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWwgeworc3RhdGljIGNv
bnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogY29uc3QgdW5zaWduZWQgZ2l2ZVVwVGhyZXNo
b2xkID0gNTA7CiAKIGludDY0X3QgY2xhbXBlZFN1bUltcGwoKSB7IHJldHVybiAwOyB9CkBAIC0x
MDE5LDcgKzEwMjEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2luc2VydGlvblNldC5leGVj
dXRlKG1fZ3JhcGguYmxvY2soMCkpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAo
dmVyYm9zZSkgeworICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJ
bnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIGlu
dGVnZXIgcmFuZ2Ugb3B0aW1pemF0aW9uOlxuIik7CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAo
KTsKICAgICAgICAgfQpAQCAtMTExMCw3ICsxMTEyLDcgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgIG1fcmVsYXRpb25zaGlwcyA9IG1fcmVsYXRpb25zaGlwc0F0SGVhZFtibG9ja107CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIG5vZGUgOiAqYmxvY2spIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChE
RkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQW5hbHlzaXM6IGF0ICIsIG5vZGUsICI6ICIsIGxp
c3REdW1wKHNvcnRlZFJlbGF0aW9uc2hpcHMoKSksICJcbiIpOwogICAgICAgICAgICAgICAgICAg
ICBleGVjdXRlTm9kZShub2RlKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xMTk1LDExICsxMTk3
LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aW9uc2hpcE1hcCBm
b3JUcnVlID0gbV9yZWxhdGlvbnNoaXBzOwogICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRp
b25zaGlwTWFwIGZvckZhbHNlID0gbV9yZWxhdGlvbnNoaXBzOwogICAgICAgICAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZUludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkRlYWxpbmcg
d2l0aCB0cnVlOlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZWxhdGlvbnNoaXAo
Zm9yVHJ1ZSwgcmVsYXRpb25zaGlwRm9yVHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoUmVsYXRpb25zaGlwIHJlbGF0aW9uc2hpcEZvckZhbHNlID0gcmVsYXRpb25zaGlwRm9yVHJ1
ZS5pbnZlcnNlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0
aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiRGVhbGluZyB3aXRoIGZhbHNlOlxuIik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0UmVsYXRpb25zaGlwKGZvckZhbHNlLCByZWxhdGlvbnNoaXBGb3JGYWxzZSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0xMjIzLDcgKzEyMjUsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBtX3JlbGF0aW9uc2hpcHMgPSBtX3JlbGF0aW9uc2hpcHNBdEhlYWRbYmxv
Y2tdOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXggPSAwOyBub2RlSW5kZXgg
PCBibG9jay0+c2l6ZSgpOyArK25vZGVJbmRleCkgewogICAgICAgICAgICAgICAgIE5vZGUqIG5v
ZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiVHJhbnNmb3JtYXRp
b246IGF0ICIsIG5vZGUsICI6ICIsIGxpc3REdW1wKHNvcnRlZFJlbGF0aW9uc2hpcHMoKSksICJc
biIpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIC8vIFRoaXMgZW5kcyB1cCBi
ZWluZyBwcmV0dHkgYXdrd2FyZCB0byB3cml0ZSBiZWNhdXNlIHdlIG5lZWQgdG8gZGVjaWRlIGlm
IHdlCkBAIC0xMjg3LDE0ICsxMjg5LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAg
ICAgIG1heFZhbHVlID0gc3RkOjptaW4obWF4VmFsdWUsIHJlbGF0aW9uc2hpcC5tYXhWYWx1ZU9m
TGVmdCgpKTsKICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1p
emF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2coIiAgICBtaW5WYWx1ZSA9ICIsIG1pblZhbHVlLCAiLCBtYXhWYWx1ZSA9ICIsIG1heFZh
bHVlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlm
IChzdW1PdmVyZmxvd3M8aW50PihtaW5WYWx1ZSwgbm9kZS0+Y2hpbGQyKCktPmFzSW50MzIoKSkg
fHwKICAgICAgICAgICAgICAgICAgICAgICAgIHN1bU92ZXJmbG93czxpbnQ+KG1heFZhbHVlLCBu
b2RlLT5jaGlsZDIoKS0+YXNJbnQzMigpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogCi0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAg
ICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBJdCdzIGluIGJvdW5kcy5cbiIp
OwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZU5vZGUo
YmxvY2stPmF0KG5vZGVJbmRleCkpOwpAQCAtMTU0OCw3ICsxNTUwLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgaWYgKCFyZWxhdGlvbnNoaXApCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAot
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXph
dGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgU2V0
dGluZzogIiwgcmVsYXRpb25zaGlwLCAiICh0dGwgPSAiLCB0aW1lVG9MaXZlLCAiKVxuIik7CiAK
ICAgICAgICAgYXV0byByZXN1bHQgPSByZWxhdGlvbnNoaXBNYXAuYWRkKApAQCAtMTYwMiw3ICsx
NjA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgaWYgKG90aGVyUmVsYXRpb25z
aGlwLnZhZ3VlbmVzcygpIDwgcmVsYXRpb25zaGlwLnZhZ3VlbmVzcygpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAmJiBvdGhlclJlbGF0aW9uc2hpcC5yaWdodCgpLT5pc0ludDMyQ29uc3RhbnQo
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpb25zaGlwIG5ld1JlbGF0aW9uc2hp
cCA9IHJlbGF0aW9uc2hpcC5maWx0ZXJDb25zdGFudChvdGhlclJlbGF0aW9uc2hpcCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSAmJiBuZXdSZWxhdGlvbnNoaXAgIT0gcmVs
YXRpb25zaGlwKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR0ludGVnZXJSYW5nZU9w
dGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UgJiYgbmV3UmVsYXRpb25zaGlwICE9IHJl
bGF0aW9uc2hpcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBS
ZWZpbmVkIHRvOiAiLCBuZXdSZWxhdGlvbnNoaXAsICIgYmFzZWQgb24gIiwgb3RoZXJSZWxhdGlv
bnNoaXAsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwID0gbmV3
UmVsYXRpb25zaGlwOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNjE2LDcgKzE2MTgsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXJSZWxhdGlvbnNoaXAudmFn
dWVuZXNzKCkgPiByZWxhdGlvbnNoaXAudmFndWVuZXNzKCkKICAgICAgICAgICAgICAgICAgICAg
ICAgICYmIG90aGVyUmVsYXRpb25zaGlwLnJpZ2h0KCktPmlzSW50MzJDb25zdGFudCgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGlvbnNoaXAgbmV3UmVsYXRpb25zaGlwID0gb3Ro
ZXJSZWxhdGlvbnNoaXAuZmlsdGVyQ29uc3RhbnQocmVsYXRpb25zaGlwKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlICYmIG5ld1JlbGF0aW9uc2hpcCAhPSBvdGhlclJlbGF0
aW9uc2hpcCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRp
bWl6YXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlICYmIG5ld1JlbGF0aW9uc2hpcCAhPSBvdGhl
clJlbGF0aW9uc2hpcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
ICBSZWZpbmVkICIsIG90aGVyUmVsYXRpb25zaGlwLCAiIHRvOiAiLCBuZXdSZWxhdGlvbnNoaXAs
ICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJSZWxhdGlvbnNoaXAgPSBuZXdS
ZWxhdGlvbnNoaXA7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTE2MzksNyArMTY0MSw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAvLyBAeCA9PSBAYyBhbmQgQHggIT0gQGQsIHdoZXJlIEBk
ID4gQGMsIHRoZW4gd2Ugd2FudCB0byB0dXJuIEB4ICE9IEBkIGludG8gQHggPCBAZC4KICAgICAg
ICAgICAgIAogICAgICAgICAgICAgaWYgKHRpbWVUb0xpdmUgJiYgb3RoZXJSZWxhdGlvbnNoaXAu
a2luZCgpID09IFJlbGF0aW9uc2hpcDo6RXF1YWwpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhh
c2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAg
Q29uc2lkZXJpbmc6ICIsIG90aGVyUmVsYXRpb25zaGlwLCAiXG4iKTsKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlOgpAQCAtMTY3NSw3ICsxNjc3LDcgQEAgcHJp
dmF0ZToKICAgICAKICAgICBib29sIG1lcmdlVG8oUmVsYXRpb25zaGlwTWFwJiByZWxhdGlvbnNo
aXBNYXAsIEJhc2ljQmxvY2sqIHRhcmdldCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKSB7
CisgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZUludGVybmFsOjp2
ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJNZXJnaW5nIHRvICIsIHBvaW50ZXJEdW1w
KHRhcmdldCksICI6XG4iKTsKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBJbmNvbWluZzogIiwg
bGlzdER1bXAoc29ydGVkUmVsYXRpb25zaGlwcyhyZWxhdGlvbnNoaXBNYXApKSwgIlxuIik7CiAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgQXQgaGVhZDogIiwgbGlzdER1bXAoc29ydGVkUmVsYXRp
b25zaGlwcyhtX3JlbGF0aW9uc2hpcHNBdEhlYWRbdGFyZ2V0XSkpLCAiXG4iKTsKQEAgLTE2OTcs
NyArMTY5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZm9yIChSZWxhdGlvbnNoaXAg
cmVsYXRpb25zaGlwIDogZW50cnkudmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KHJlbGF0aW9uc2hpcC5sZWZ0KCkgPT0gZW50cnkua2V5KTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKGlzTGl2ZShyZWxhdGlvbnNoaXAucmlnaHQoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR0ludGVnZXJS
YW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiICBQcm9wYWdhdGluZyAiLCByZWxhdGlvbnNoaXAsICJcbiIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChyZWxhdGlvbnNoaXApOwog
ICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNzM0LDEyICsxNzM2LDEyIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBWZWN0b3I8UmVsYXRpb25zaGlwPiBtZXJnZWRSZWxhdGlvbnNoaXBzOwogICAg
ICAgICAgICAgZm9yIChSZWxhdGlvbnNoaXAgdGFyZ2V0UmVsYXRpb25zaGlwIDogZW50cnkudmFs
dWUpIHsKICAgICAgICAgICAgICAgICBmb3IgKFJlbGF0aW9uc2hpcCBzb3VyY2VSZWxhdGlvbnNo
aXAgOiBpdGVyLT52YWx1ZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgIE1lcmdp
bmcgIiwgdGFyZ2V0UmVsYXRpb25zaGlwLCAiIGFuZCAiLCBzb3VyY2VSZWxhdGlvbnNoaXAsICI6
XG4iKTsKICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UmVsYXRpb25zaGlwLm1lcmdlKAogICAg
ICAgICAgICAgICAgICAgICAgICAgc291cmNlUmVsYXRpb25zaGlwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgWyZdIChSZWxhdGlvbnNoaXAgbmV3UmVsYXRpb25zaGlwKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBHb3QgIiwgbmV3
UmVsYXRpb25zaGlwLCAiXG4iKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChu
ZXdSZWxhdGlvbnNoaXAucmlnaHQoKS0+aXNJbnQzMkNvbnN0YW50KCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTW92SGludFJlbW92YWxQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01vdkhpbnRSZW1vdmFsUGhhc2UuY3BwCmluZGV4
IDlmMzQ0YjM3ZGNkODdmYzE0YzBhMTJkZTRmMTA3MDhiNmQ3NDhmODYuLjFhZWQyYzE4NTZlMmJm
NjJjZWY3YTNjNDZkYTI0MjE5MzJmNWY3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTW92SGludFJlbW92YWxQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdNb3ZIaW50UmVtb3ZhbFBoYXNlLmNwcApAQCAtNDIsNyArNDIsOSBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVy
Ym9zZSA9IGZhbHNlOworbmFtZXNwYWNlIERGR01vdkhpbnRSZW1vdmFsUGhhc2VJbnRlcm5hbCB7
CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIE1vdkhpbnRS
ZW1vdmFsUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogcHVibGljOgpAQCAtNTUsNyArNTcsNyBAQCBw
dWJsaWM6CiAgICAgCiAgICAgYm9vbCBydW4oKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2Up
IHsKKyAgICAgICAgaWYgKERGR01vdkhpbnRSZW1vdmFsUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkg
ewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIE1vdkhpbnQgcmVtb3ZhbDpcbiIp
OwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KQEAgLTY5LDcgKzcxLDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZUJsb2NrKEJhc2ljQmxvY2sqIGJs
b2NrKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdNb3ZIaW50
UmVtb3ZhbFBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJIYW5k
aW5nIGJsb2NrICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIlxuIik7CiAgICAgICAgIAogICAgICAg
ICAvLyBBIE1vdkhpbnQgaXMgdW5uZWNlc3NhcnkgaWYgdGhlIGxvY2FsIGRpZXMgYmVmb3JlIGl0
IGlzIHVzZWQuIFdlIGFuc3dlciB0aGlzIHF1ZXN0aW9uIGJ5CkBAIC04Nyw3ICs4OSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgbV9zdGF0ZS5vcGVyYW5kKHJlZykgPSBjdXJyZW50RXBv
Y2g7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICBpZiAoREZHTW92SGludFJlbW92YWxQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgZGF0YUxvZygiICAgIExvY2FsczogIiwgbV9zdGF0ZSwgIlxuIik7CiAgICAgICAgIAog
ICAgICAgICAvLyBBc3N1bWUgdGhhdCBibG9ja3MgYWZ0ZXIgdXMgZXhpdC4KQEAgLTk4LDcgKzEw
MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5vcCgp
ID09IE1vdkhpbnQpIHsKICAgICAgICAgICAgICAgICBFcG9jaCBsb2NhbEVwb2NoID0gbV9zdGF0
ZS5vcGVyYW5kKG5vZGUtPnVubGlua2VkTG9jYWwoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR01vdkhpbnRSZW1vdmFsUGhhc2VJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEF0ICIsIG5vZGUs
ICI6IGN1cnJlbnQgPSAiLCBjdXJyZW50RXBvY2gsICIsIGxvY2FsID0gIiwgbG9jYWxFcG9jaCwg
IlxuIik7CiAgICAgICAgICAgICAgICAgaWYgKCFsb2NhbEVwb2NoIHx8IGxvY2FsRXBvY2ggPT0g
Y3VycmVudEVwb2NoKSB7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVs
dEZsYWdzKFpvbWJpZUhpbnQpOwpAQCAtMTIwLDcgKzEyMiw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoISFtX3N0YXRlLm9wZXJhbmQocmVnKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKERGR01vdkhpbnRSZW1vdmFsUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgS2lsbGVkIG9wZXJhbmQgYXQgIiwgbm9kZSwg
IjogIiwgcmVnLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUub3BlcmFu
ZChyZWcpID0gY3VycmVudEVwb2NoOwogICAgICAgICAgICAgICAgICAgICB9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQ
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25T
aW5raW5nUGhhc2UuY3BwCmluZGV4IDdhOWM1MTU2N2IzNDdmZGQzYzhjM2NkOTFiZjA0Yjg5ZGY4
MjI1MjguLjNmZGE3ZDQwYjA4NmJkMTljM2MyOGIwYTYwZGFkMTU3NWVmNjBjMzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQ
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0
aW9uU2lua2luZ1BoYXNlLmNwcApAQCAtNDgsNyArNDgsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFt
ZXNwYWNlIERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2VJbnRlcm5hbCB7CitzdGF0aWMg
Y29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIC8vIEluIG9yZGVyIHRvIHNpbmsgb2Jq
ZWN0IGN5Y2xlcywgd2UgdXNlIGEgcG9pbnRzLXRvIGFuYWx5c2lzIGNvdXBsZWQKIC8vIHdpdGgg
YW4gZXNjYXBlIGFuYWx5c2lzLiBUaGlzIGFuYWx5c2lzIGlzIGFjdHVhbGx5IHNpbWlsYXIgdG8g
YW4KQEAgLTcxNyw3ICs3MTksNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghcGVyZm9ybVNpbmtp
bmcoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAodmVyYm9zZSkg
eworICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2
ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJHcmFwaCBhZnRlciBlbGltaW5hdGlvbjpc
biIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KQEAgLTc0Miw3ICs3
NDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgZ3JhcGhCZWZvcmVTaW5raW5nID0gb3V0LnRv
Q1N0cmluZygpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAg
aWYgKERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewog
ICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIGVsaW1pbmF0aW9uOlxuIik7CiAgICAg
ICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQpAQCAtNzUyLDcgKzc1NCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGlmICghZGV0ZXJtaW5lU2lua0NhbmRpZGF0ZXMoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAo
REZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAg
ICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxP
cmRlcigpKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygiSGVhcCBhdCBoZWFkIG9mICIsICpi
bG9jaywgIjogXG4iLCBtX2hlYXBBdEhlYWRbYmxvY2tdKTsKICAgICAgICAgICAgICAgICBkYXRh
TG9nKCJIZWFwIGF0IHRhaWwgb2YgIiwgKmJsb2NrLCAiOiBcbiIsIG1faGVhcEF0VGFpbFtibG9j
a10pOwpAQCAtNzczLDcgKzc3NSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgYm9vbCBjaGFuZ2Vk
OwogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlm
IChERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiRG9pbmcgaXRlcmF0aW9uIG9mIGVzY2FwZSBhbmFseXNpcy5c
biIpOwogICAgICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwogCkBAIC0xMTk4LDcgKzEyMDAsNyBA
QCBwcml2YXRlOgogICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICByZXR1cm4gaGFzVW5lc2NhcGVkUmVhZHM7CiAKLSAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJDYW5kaWRhdGVzOiAiLCBsaXN0RHVtcChtX3Np
bmtDYW5kaWRhdGVzKSwgIlxuIik7CiAKICAgICAgICAgLy8gQ3JlYXRlIHRoZSBtYXRlcmlhbGl6
YXRpb24gbm9kZXMKQEAgLTE3NjUsNyArMTc2Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAg
ICAgICAgaWYgKERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9z
ZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvY2FsIG1hcHBpbmcgYXQgIiwgcG9pbnRl
ckR1bXAoYmxvY2spLCAiOiAiLCBtYXBEdW1wKG1fbG9jYWxNYXBwaW5nKSwgIlxuIik7CiAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiTG9jYWwgbWF0ZXJpYWxpemF0aW9ucyBhdCAiLCBwb2ludGVy
RHVtcChibG9jayksICI6ICIsIG1hcER1bXAobV9lc2NhcGVlVG9NYXRlcmlhbGl6YXRpb24pLCAi
XG4iKTsKICAgICAgICAgICAgIH0KQEAgLTE3ODEsNyArMTc4Myw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgIG1fbG9jYWxNYXBwaW5nLnNldChsb2NhdGlvbiwgbV9ib3R0b20pOwog
CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKG5vZGUp
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiRm9yIHNpbmsgY2Fu
ZGlkYXRlICIsIG5vZGUsICIgZm91bmQgbG9jYXRpb24gIiwgbG9jYXRpb24sICJcbiIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsCkBAIC0xNzk2LDcgKzE3OTgsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICBwb3B1bGF0ZU1hdGVyaWFsaXphdGlvbihibG9jaywg
bWF0ZXJpYWxpemF0aW9uLCBlc2NhcGVlKTsKICAgICAgICAgICAgICAgICAgICAgbV9lc2NhcGVl
VG9NYXRlcmlhbGl6YXRpb24uc2V0KGVzY2FwZWUsIG1hdGVyaWFsaXphdGlvbik7CiAgICAgICAg
ICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydChub2RlSW5kZXgsIG1hdGVyaWFsaXph
dGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAg
ICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiTWF0ZXJpYWxpemluZyAiLCBlc2Nh
cGVlLCAiID0+ICIsIG1hdGVyaWFsaXphdGlvbiwgIiBhdCAiLCBub2RlLCAiXG4iKTsKICAgICAg
ICAgICAgICAgICB9CiAKQEAgLTE4NTEsNyArMTg1Myw3IEBAIHByaXZhdGU6CiAKICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvTG93ZXIgPSB0cnVlOwogCi0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdPYmplY3RBbGxv
Y2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiQ3JlYXRpbmcgaGludCB3aXRoIHZhbHVlICIsIG5vZGVWYWx1ZSwg
IiBiZWZvcmUgIiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ICsg
MSwKQEAgLTE5OTQsNyArMTk5Niw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGluc2VydE9TUkhp
bnRzRm9yVXBkYXRlKHVuc2lnbmVkIG5vZGVJbmRleCwgTm9kZU9yaWdpbiBvcmlnaW4sIGJvb2wm
IGNhbkV4aXQsIEF2YWlsYWJpbGl0eU1hcCYgYXZhaWxhYmlsaXR5LCBOb2RlKiBlc2NhcGVlLCBO
b2RlKiBtYXRlcmlhbGl6YXRpb24pCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkgeworICAg
ICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3Nl
KSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJJbnNlcnRpbmcgT1NSIGhpbnRzIGF0ICIsIG9yaWdp
biwgIjpcbiIpOwogICAgICAgICAgICAgZGF0YUxvZygiICAgIEVzY2FwZWU6ICIsIGVzY2FwZWUs
ICJcbiIpOwogICAgICAgICAgICAgZGF0YUxvZygiICAgIE1hdGVyaWFsaXphdGlvbjogIiwgbWF0
ZXJpYWxpemF0aW9uLCAiXG4iKTsKQEAgLTIxNjcsNyArMjE2OSw3IEBAIHByaXZhdGU6CiAKICAg
ICBOb2RlKiBjcmVhdGVSZWNvdmVyeShCYXNpY0Jsb2NrKiBibG9jaywgUHJvbW90ZWRIZWFwTG9j
YXRpb24gbG9jYXRpb24sIE5vZGUqIHdoZXJlLCBib29sJiBjYW5FeGl0KQogICAgIHsKLSAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1Bo
YXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJSZWNvdmVyaW5nICIs
IGxvY2F0aW9uLCAiIGF0ICIsIHdoZXJlLCAiXG4iKTsKICAgICAgICAgQVNTRVJUKGxvY2F0aW9u
LmJhc2UoKS0+aXNQaGFudG9tQWxsb2NhdGlvbigpKTsKICAgICAgICAgTm9kZSogYmFzZSA9IGdl
dE1hdGVyaWFsaXphdGlvbihibG9jaywgbG9jYXRpb24uYmFzZSgpKTsKQEAgLTIxNzUsNyArMjE3
Nyw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSB3aGVyZS0+b3Jp
Z2luLndpdGhTZW1hbnRpYyhiYXNlLT5vcmlnaW4uc2VtYW50aWMpOwogCi0gICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQmFzZSBpcyAiLCBiYXNlLCAiIGFu
ZCB2YWx1ZSBpcyAiLCB2YWx1ZSwgIlxuIik7CiAKICAgICAgICAgaWYgKGJhc2UtPmlzUGhhbnRv
bUFsbG9jYXRpb24oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwCmluZGV4IGRjYzFjOTc2OTg2ZmVkNmUzZTlkY2Vk
Y2FmNWU5NDA1YjlkM2I4ZGEuLjNjMDg4YTZhNGE1ZWU2NTA5MDYyMmQ2NjAzMmQ0ZjE3MTAyOTM3
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUluc2Vy
dGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21J
bnNlcnRpb25QaGFzZS5jcHAKQEAgLTQzLDcgKzQzLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVz
cGFjZSBERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2VJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9v
bCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIFBoYW50b21JbnNlcnRpb25QaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiBwdWJsaWM6CkBAIC02MCw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICAgICAg
Ly8gU2V0TG9jYWxzIGV4ZWN1dGUsIHdoaWNoIGlzIGluYWNjdXJhdGUuIFRoYXQgY2F1c2VzIHVz
IHRvIGluc2VydCB0b28gZmV3IFBoYW50b21zLgogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgs
IG51bGxwdHIsIG1fZ3JhcGgubV9yZWZDb3VudFN0YXRlID09IEV4YWN0UmVmQ291bnQpOwogICAg
ICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR1BoYW50b21JbnNl
cnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJHcmFw
aCBiZWZvcmUgUGhhbnRvbSBpbnNlcnRpb246XG4iKTsKICAgICAgICAgICAgIG1fZ3JhcGguZHVt
cCgpOwogICAgICAgICB9CkBAIC03MCw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICAgICAgZm9yIChC
YXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkKICAgICAg
ICAgICAgIGhhbmRsZUJsb2NrKGJsb2NrKTsKICAgICAgICAgCi0gICAgICAgIGlmICh2ZXJib3Nl
KSB7CisgICAgICAgIGlmIChERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9z
ZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYWZ0ZXIgUGhhbnRvbSBpbnNlcnRpb246
XG4iKTsKICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwogICAgICAgICB9CkBAIC0xMDEsNyAr
MTAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgbGFzdEV4aXRpbmdJbmRleCA9IDA7
CiAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgYmxvY2st
PnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+
YXQobm9kZUluZGV4KTsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYg
KERGR1BoYW50b21JbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKQEAgLTEzOSw3ICsxNDEsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFscmVhZHlLaWxsZWQ7CiAKICAgICAg
ICAgICAgIGF1dG8gcHJvY2Vzc0tpbGxlZE9wZXJhbmQgPSBbJl0gKFZpcnR1YWxSZWdpc3RlciBy
ZWcpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAo
REZHUGhhbnRvbUluc2VydGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIiAgICBLaWxsZWQgb3BlcmFuZDogIiwgcmVnLCAiXG4iKTsKIAogICAg
ICAgICAgICAgICAgIC8vIEFscmVhZHkgaGFuZGxlZCBmcm9tIFNldExvY2FsLgpAQCAtMTU1LDcg
KzE1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKGtpbGxlZE5vZGUtPmVwb2No
KCkgPT0gY3VycmVudEVwb2NoKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoREZHUGhhbnRvbUluc2VydGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgSW5z
ZXJ0aW5nIFBoYW50b20gb24gIiwga2lsbGVkTm9kZSwgIiBhZnRlciAiLAogICAgICAgICAgICAg
ICAgICAgICAgICAgYmxvY2stPmF0KGxhc3RFeGl0aW5nSW5kZXgpLCAiXG4iKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAK
aW5kZXggZDNkYTU1MjdkNjNiYzA3Njk4MGVkNDA0ZDU3MzA2NWQ0YTg1MTZiYS4uMTRjZWQyYWE4
ZDgyYzZlYmNiMzVlOTRjYTZmYTJlMmEzZTMzODRmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKQEAgLTQyLDcgKzQy
LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3BhY2UgewogCi1i
b29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBERkdQdXRTdGFja1NpbmtpbmdQaGFzZUlu
dGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogY2xhc3Mg
UHV0U3RhY2tTaW5raW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogcHVibGljOgpAQCAtNzEsNyAr
NzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIHRoZSBzdGFjay4gSXQncyBub3QgY2xlYXIgdG8g
bWUgaWYgdGhpcyBpcyBpbXBvcnRhbnQgb3Igbm90LgogICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1Mjk2CiAgICAgICAgIAotICAgICAgICBpZiAo
dmVyYm9zZSkgeworICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6
dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIFB1dFN0YWNrIHNp
bmtpbmc6XG4iKTsKICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwogICAgICAgICB9CkBAIC0x
MDUsNyArMTA3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIE9wZXJhbmRzPGJvb2w+IGxp
dmUgPSBsaXZlQXRUYWlsW2Jsb2NrXTsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG5v
ZGVJbmRleCA9IGJsb2NrLT5zaXplKCk7IG5vZGVJbmRleC0tOykgewogICAgICAgICAgICAgICAg
ICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5r
aW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIkxpdmUgYXQgIiwgbm9kZSwgIjogIiwgbGl2ZSwgIlxuIik7CiAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICBWZWN0b3I8VmlydHVhbFJlZ2lzdGVyLCA0PiByZWFk
czsKQEAgLTExMyw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGF1dG8g
ZXNjYXBlSGFuZGxlciA9IFsmXSAoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzSGVhZGVyKCkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
Iiwgb3BlcmFuZCwgIiBpcyBsaXZlIGF0ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgcmVhZHMuYXBwZW5kKG9wZXJhbmQpOwogICAgICAgICAgICAgICAgICAgICB9OwpA
QCAtMjMwLDcgKzIzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBPcGVyYW5kczxGbHVz
aEZvcm1hdD4gZGVmZXJyZWQgPSBkZWZlcnJlZEF0SGVhZFtibG9ja107CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgZm9yIChOb2RlKiBub2RlIDogKmJsb2NrKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHUHV0
U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkRlZmVycmVkIGF0ICIsIG5vZGUsICI6IiwgZGVmZXJyZWQsICJcbiIpOwog
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkg
PT0gR2V0U3RhY2spIHsKQEAgLTI3Nyw3ICsyNzksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGF1dG8g
ZXNjYXBlSGFuZGxlciA9IFsmXSAoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KERGR1B1dFN0YWNrU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiRm9yICIsIG5vZGUsICIgZXNjYXBpbmcgIiwgb3BlcmFu
ZCwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0hlYWRlcigp
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMwMywxMyArMzA1LDEz
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmb3IgKEJhc2lj
QmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IGRlZmVycmVkLnNpemUoKTsgaS0tOykgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
REZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyAiLCBWaXJ0dWFsUmVnaXN0ZXIoZGVm
ZXJyZWQub3BlcmFuZEZvckluZGV4KGkpKSwgIiBhdCAiLCBwb2ludGVyRHVtcChibG9jayksICIt
PiIsIHBvaW50ZXJEdW1wKHN1Y2Nlc3NvciksICI6ICIsIGRlZmVycmVkW2ldLCAiIGFuZCAiLCBk
ZWZlcnJlZEF0SGVhZFtzdWNjZXNzb3JdW2ldLCAiIG1lcmdlcyB0byAiKTsKIAogICAgICAgICAg
ICAgICAgICAgICAgICAgZGVmZXJyZWRBdEhlYWRbc3VjY2Vzc29yXVtpXSA9CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWVyZ2UoZGVmZXJyZWRBdEhlYWRbc3VjY2Vzc29yXVtpXSwgZGVm
ZXJyZWRbaV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdQdXRTdGFj
a1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coZGVmZXJyZWRBdEhlYWRbc3VjY2Vzc29yXVtpXSwgIlxuIik7CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0zODcsNyArMzg5LDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgIGlmICghaXNDb25jcmV0ZShmb3JtYXQpKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICAgICAgICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJBZGRpbmcgUGhpIGZvciAiLCBv
cGVyYW5kLCAiIGF0ICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIlxuIik7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgTm9kZSogcGhpTm9kZSA9IG1fZ3JhcGguYWRkTm9kZShTcGVj
SGVhcFRvcCwgUGhpLCBibG9jay0+YXQoMCktPm9yaWdpbi53aXRoSW52YWxpZEV4aXQoKSk7CkBA
IC00MTEsNyArNDEzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIG1hcHBpbmcub3BlcmFu
ZChvcGVyYW5kKSA9IGRlZi0+dmFsdWUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAot
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5r
aW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJNYXBw
aW5nIGF0IHRvcCBvZiAiLCBwb2ludGVyRHVtcChibG9jayksICI6ICIsIG1hcHBpbmcsICJcbiIp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKFNTQUNhbGN1bGF0b3I6OkRlZiogcGhp
RGVmIDogc3NhQ2FsY3VsYXRvci5waGlzRm9yQmxvY2soYmxvY2spKSB7CkBAIC00MTksNyArNDIx
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGluc2VydGlv
blNldC5pbnNlcnQoMCwgcGhpRGVmLT52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tT
aW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiICAgTWFwcGluZyAiLCBvcGVyYW5kLCAiIHRvICIsIHBoaURlZi0+dmFsdWUoKSwgIlxuIik7
CiAgICAgICAgICAgICAgICAgbWFwcGluZy5vcGVyYW5kKG9wZXJhbmQpID0gcGhpRGVmLT52YWx1
ZSgpOwogICAgICAgICAgICAgfQpAQCAtNDI3LDcgKzQyOSw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIGRlZmVycmVkID0gZGVmZXJyZWRBdEhlYWRbYmxvY2tdOwogICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBub2RlSW5kZXggPSAwOyBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyArK25vZGVJ
bmRleCkgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4
KTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZH
UHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiRGVmZXJyZWQgYXQgIiwgbm9kZSwgIjoiLCBkZWZlcnJlZCwgIlxuIik7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CkBA
IC00MzUsNyArNDM3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBTdGFja0FjY2Vz
c0RhdGEqIGRhdGEgPSBub2RlLT5zdGFja0FjY2Vzc0RhdGEoKTsKICAgICAgICAgICAgICAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBkYXRhLT5sb2NhbDsKICAgICAgICAgICAgICAg
ICAgICAgZGVmZXJyZWQub3BlcmFuZChvcGVyYW5kKSA9IGRhdGEtPmZvcm1hdDsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdQdXRT
dGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiICAgTWFwcGluZyAiLCBvcGVyYW5kLCAiIHRvICIsIG5vZGUtPmNoaWxkMSgp
Lm5vZGUoKSwgIiBhdCAiLCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgbWFwcGlu
Zy5vcGVyYW5kKG9wZXJhbmQpID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKQEAgLTQ3MCw3ICs0NzIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgZGVmYXVsdDogewogICAgICAgICAgICAgICAgICAgICBhdXRv
IGVzY2FwZUhhbmRsZXIgPSBbJl0gKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIkZvciAiLCBub2RlLCAiIGVzY2FwaW5nICIsIG9wZXJh
bmQsICJcbiIpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0hlYWRl
cigpKQpAQCAtNDg0LDcgKzQ4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHb3R0
YSBpbnNlcnQgYSBQdXRTdGFjay4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2luZ1BoYXNlSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiSW5z
ZXJ0aW5nIGEgUHV0U3RhY2sgZm9yICIsIG9wZXJhbmQsICIgYXQgIiwgbm9kZSwgIlxuIik7CiAK
ICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGluY29taW5nID0gbWFwcGluZy5vcGVyYW5k
KG9wZXJhbmQpOwpAQCAtNTIzLDcgKzUyNSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
ICAgTm9kZSogcGhpTm9kZSA9IHBoaURlZi0+dmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAg
U1NBQ2FsY3VsYXRvcjo6VmFyaWFibGUqIHZhcmlhYmxlID0gcGhpRGVmLT52YXJpYWJsZSgpOwog
ICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IGluZGV4VG9PcGVy
YW5kW3ZhcmlhYmxlLT5pbmRleCgpXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICAgICAgICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ3JlYXRpbmcgVXBz
aWxvbiBmb3IgIiwgb3BlcmFuZCwgIiBhdCAiLCBwb2ludGVyRHVtcChibG9jayksICItPiIsIHBv
aW50ZXJEdW1wKHN1Y2Nlc3NvckJsb2NrKSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIEZs
dXNoRm9ybWF0IGZvcm1hdCA9IGRlZmVycmVkQXRIZWFkW3N1Y2Nlc3NvckJsb2NrXS5vcGVyYW5k
KG9wZXJhbmQpOwogICAgICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxw
dHIsIGlzQ29uY3JldGUoZm9ybWF0KSk7CkBAIC01NjgsNyArNTcwLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkgewor
ICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewog
ICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYWZ0ZXIgUHV0U3RhY2sgc2lua2luZzpcbiIpOwog
ICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAKaW5kZXggM2EyYTcxNzJhZDczZDZhM2UwMTA3MjkyZTViOTcwNTQ5NDdmOGYxYS4uYjVlMmMz
NTBiMTgxZjliMDYzOTMyMTVhNDJhYWFkNzZiNjVlZDg0NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAKQEAgLTQzLDcgKzQzLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBu
YW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBERkdTdG9yZUJh
cnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2Ug
PSBmYWxzZTsKK30KIAogZW51bSBjbGFzcyBQaGFzZU1vZGUgewogICAgIC8vIERvZXMgb25seSBh
IGxvY2FsIGFuYWx5c2lzIGZvciBzdG9yZSBiYXJyaWVyIGluc2VydGlvbiBhbmQgYXNzdW1lcyB0
aGF0IHBvaW50ZXJzIGxpdmUKQEAgLTc1LDcgKzc3LDcgQEAgcHVibGljOgogICAgIAogICAgIGJv
b2wgcnVuKCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdT
dG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAg
ICBkYXRhTG9nKCJTdGFydGluZyBzdG9yZSBiYXJyaWVyIGluc2VydGlvbjpcbiIpOwogICAgICAg
ICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KQEAgLTE2Nyw3ICsxNjksNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIGJvb2wgaGFuZGxlQmxvY2soQmFzaWNCbG9jayogYmxvY2spCiAg
ICAgewotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHU3RvcmVCYXJyaWVy
SW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygi
RGVhbGluZyB3aXRoIGJsb2NrICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIlxuIik7CiAgICAgICAg
ICAgICBpZiAocmVhbGx5SW5zZXJ0QmFycmllcnMoKSkKICAgICAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgUmVhbGx5IGluc2VydGluZyBiYXJyaWVycy5cbiIpOwpAQCAtMjA2LDcgKzIwOCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGZvciAobV9ub2RlSW5kZXggPSAwOyBtX25vZGVJbmRleCA8IGJs
b2NrLT5zaXplKCk7ICsrbV9ub2RlSW5kZXgpIHsKICAgICAgICAgICAgIG1fbm9kZSA9IGJsb2Nr
LT5hdChtX25vZGVJbmRleCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh2ZXJib3Nl
KSB7CisgICAgICAgICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJbnRlcm5h
bDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAg
ICAgICIgICAgIiwgbV9jdXJyZW50RXBvY2gsICI6IExvb2tpbmcgYXQgbm9kZSAiLCBtX25vZGUs
ICIgd2l0aCBjaGlsZHJlbjogIik7CiAgICAgICAgICAgICAgICAgQ29tbWFQcmludGVyIGNvbW1h
OwpAQCAtMzQ4LDcgKzM1MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7Cisg
ICAgICAgICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVy
Ym9zZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICIg
ICAgIiwgbV9jdXJyZW50RXBvY2gsICI6IERvbmUgd2l0aCBub2RlICIsIG1fbm9kZSwgIiAoIiwg
bV9ub2RlLT5lcG9jaCgpLAogICAgICAgICAgICAgICAgICAgICAiKSB3aXRoIGNoaWxkcmVuOiAi
KTsKQEAgLTM4MCw3ICszODIsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgY29uc2lkZXJC
YXJyaWVyKEVkZ2UgYmFzZSwgRWRnZSBjaGlsZCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgQ29uc2lkZXJpbmcgYWRkaW5nIGJh
cnJpZXIgIiwgYmFzZSwgIiA9PiAiLCBjaGlsZCwgIlxuIik7CiAgICAgICAgIAogICAgICAgICAv
LyBXZSBkb24ndCBuZWVkIGEgc3RvcmUgYmFycmllciBpZiB0aGUgY2hpbGQgaXMgZ3VhcmFudGVl
ZCB0byBub3QgYmUgYSBjZWxsLgpAQCAtMzg5LDcgKzM5MSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAvLyBEb24ndCB0cnkgdG9vIGhhcmQgYmVjYXVzZSBpdCdzIHRvbyBleHBlbnNpdmUgdG8g
cnVuIEFJLgogICAgICAgICAgICAgaWYgKGNoaWxkLT5oYXNDb25zdGFudCgpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKCFjaGlsZC0+YXNKU1ZhbHVlKCkuaXNDZWxsKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdTdG9yZUJh
cnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiICAgICAgICAgICAgUmVqZWN0aW5nIGJlY2F1c2Ugb2YgY29uc3RhbnQg
dHlwZS5cbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg
fQpAQCAtNDAwLDcgKzQwMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBOb2Rl
UmVzdWx0SW50MzI6CiAgICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50NTI6CiAgICAg
ICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0Qm9vbGVhbjoKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNl
cnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZygiICAgICAgICAgICAgUmVqZWN0aW5nIGJlY2F1c2Ugb2YgcmVzdWx0IHR5cGUuXG4iKTsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CkBA
IC00MTQsNyArNDE2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIEdvIGludG8gcmFnZSBt
b2RlIHRvIGVsaW1pbmF0ZSBhbnkgY2hhbmNlIG9mIGEgYmFycmllciB3aXRoIGEgbm9uLWNlbGwg
Y2hpbGQuIFdlCiAgICAgICAgICAgICAvLyBjYW4gYWZmb3JkIHRvIGtlZXAgYXJvdW5kIEFJIGlu
IEdsb2JhbCBtb2RlLgogICAgICAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLT5uZWVkc1R5cGVD
aGVjayhjaGlsZCwgflNwZWNDZWxsKSkgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgICAgICBSZWpl
Y3RpbmcgYmVjYXVzZSBvZiBBSSB0eXBlLlxuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQpAQCAtNDI2LDcgKzQyOCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9p
ZCBjb25zaWRlckJhcnJpZXIoRWRnZSBiYXNlKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBDb25zaWRlcmluZyBhZGRpbmcgYmFy
cmllciBvbiAiLCBiYXNlLCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIC8vIFdlIGRvbid0IG5l
ZWQgYSBzdG9yZSBiYXJyaWVyIGlmIHRoZSBlcG9jaCBvZiB0aGUgYmFzZSBpcyBpZGVudGljYWwg
dG8gdGhlIGN1cnJlbnQKQEAgLTQzNCwxMiArNDM2LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIC8v
IGJlIGluIG5ld2dlbiwgb3Igd2UganVzdCByYW4gYSBiYXJyaWVyIG9uIGl0IHNvIGl0J3MgZ3Vh
cmFudGVlZCB0byBiZSByZW1lbWJlcmVkCiAgICAgICAgIC8vIGFscmVhZHkuCiAgICAgICAgIGlm
IChiYXNlLT5lcG9jaCgpID09IG1fY3VycmVudEVwb2NoKSB7Ci0gICAgICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgICAgIFJlamVj
dGluZyBiZWNhdXNlIGl0J3MgaW4gdGhlIGN1cnJlbnQgZXBvY2guXG4iKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICAgICAgSW5zZXJ0aW5nIGJhcnJpZXIuXG4iKTsK
ICAgICAgICAgaW5zZXJ0QmFycmllcihtX25vZGVJbmRleCArIDEsIGJhc2UpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQ
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5n
UGhhc2UuY3BwCmluZGV4IGUzYzUyYWNhOWRhMTNmY2Q4M2MxOGUwMWI4NTZmOGE0ODA5ODllOTcu
LmU5NzM5NTc3N2ZhOWUwZDgyNjUzZGM4Nzc4ZDJhMDIwMGIwOTU5NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNw
cApAQCAtNDAsNyArNDAsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5h
bWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIERGR1ZhcmFyZ3NG
b3J3YXJkaW5nUGhhc2VJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFs
c2U7Cit9CiAKIGNsYXNzIFZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2Ugewog
cHVibGljOgpAQCAtNTMsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBERkdfQVNT
RVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9mb3JtICE9IFNTQSk7CiAgICAgICAgIAot
ICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQ
aGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJHcmFwaCBiZWZv
cmUgdmFyYXJncyBmb3J3YXJkaW5nOlxuIik7CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsK
ICAgICAgICAgfQpAQCAtODUsNyArODcsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBXZSBleHBl
Y3QgY2FsbHMgaW50byB0aGlzIGZ1bmN0aW9uIHRvIGJlIHJhcmUuIFNvLCB0aGlzIGlzIHdyaXR0
ZW4gaW4gYSBzaW1wbGUgTyhuKSBtYW5uZXIuCiAgICAgICAgIAogICAgICAgICBOb2RlKiBjYW5k
aWRhdGUgPSBibG9jay0+YXQoY2FuZGlkYXRlTm9kZUluZGV4KTsKLSAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJIYW5kbGluZyBjYW5kaWRhdGUgIiwgY2FuZGlkYXRl
LCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZpbmQgdGhlIGluZGV4IG9mIHRoZSBsYXN0
IG5vZGUgaW4gdGhpcyBibG9jayB0byB1c2UgdGhlIGNhbmRpZGF0ZSwgYW5kIGxvb2sgZm9yIGVz
Y2FwaW5nCkBAIC0xMjEsNyArMTIzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
ICAgIHNhd0VzY2FwZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgICAgIGlmIChzYXdFc2NhcGUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICAgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRXNjYXBl
IGF0ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgfQpAQCAtMTM4LDcgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNl
IFRhaWxDYWxsVmFyYXJnczoKICAgICAgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzSW5saW5l
ZENhbGxlcjoKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkgPT0gY2FuZGlkYXRl
IHx8IG5vZGUtPmNoaWxkMigpID09IGNhbmRpZGF0ZSkgewotICAgICAgICAgICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5n
UGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
IiAgICBFc2NhcGUgYXQgIiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgICAgICB9CkBAIC0xNDgsNyArMTUwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgU2V0TG9jYWw6CiAgICAgICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMSgpID09IGNhbmRpZGF0ZSAmJiBub2RlLT52YXJpYWJsZUFjY2Vzc0Rh
dGEoKS0+aXNMb2FkZWRGcm9tKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICAgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRXNjYXBl
IGF0ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgfQpAQCAtMTU2LDcgKzE1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLnVzZXMo
bm9kZSwgY2FuZGlkYXRlKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBFc2NhcGUgYXQg
Iiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
ICAgICB9CkBAIC0xNjUsNyArMTY3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZvckFsbEtp
bGxlZE9wZXJhbmRzKAogICAgICAgICAgICAgICAgIG1fZ3JhcGgsIG5vZGUsIGJsb2NrLT50cnlB
dChub2RlSW5kZXggKyAxKSwKICAgICAgICAgICAgICAgICBbJl0gKFZpcnR1YWxSZWdpc3RlciBy
ZWcpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAg
ICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgS2lsbGluZyAiLCByZWcsICIgd2hpbGUg
d2UgYXJlIGludGVyZXN0ZWQgaW4gIiwgbGlzdER1bXAocmVsZXZhbnRMb2NhbHMpLCAiXG4iKTsK
ICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlbGV2YW50TG9j
YWxzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVsZXZhbnRM
b2NhbHNbaV0gPT0gcmVnKSB7CkBAIC0xNzYsNyArMTc4LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICB9Ci0gICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZUludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiU2VsZWN0ZWQgbGFzdFVzZXJJbmRleCA9
ICIsIGxhc3RVc2VySW5kZXgsICIsICIsIGJsb2NrLT5hdChsYXN0VXNlckluZGV4KSwgIlxuIik7
CiAgICAgICAgIAogICAgICAgICAvLyBXZSdyZSBzdGlsbCBpbiBidXNpbmVzcy4gRGV0ZXJtaW5l
IGlmIGJldHdlZW4gdGhlIGNhbmRpZGF0ZSBhbmQgdGhlIGxhc3QgdXNlciB0aGVyZSBpcyBhbnkK
QEAgLTE5Myw3ICsxOTUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBab21iaWVIaW50
OgogICAgICAgICAgICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgICAgICAgICAgICAgaWYgKGFyZ3Vt
ZW50c0ludm9sdmVTdGFja1Nsb3QoY2FuZGlkYXRlLCBub2RlLT51bmxpbmtlZExvY2FsKCkpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBp
ZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEludGVyZmVyZW5jZSBhdCAiLCBub2RlLCAiXG4i
KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAgLTIw
MSw3ICsyMDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2Fz
ZSBQdXRTdGFjazoKICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzSW52b2x2ZVN0YWNrU2xv
dChjYW5kaWRhdGUsIG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5sb2NhbCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdWYXJh
cmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgSW50ZXJmZXJlbmNlIGF0ICIsIG5vZGUsICJcbiIpOwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtMjEwLDcgKzIxMiw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIFNldExvY2FsOgogICAgICAgICAgICAgY2Fz
ZSBGbHVzaDoKICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzSW52b2x2ZVN0YWNrU2xvdChj
YW5kaWRhdGUsIG5vZGUtPmxvY2FsKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZUlu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIElu
dGVyZmVyZW5jZSBhdCAiLCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICAgIH0KQEAgLTIzMiw3ICsyMzQsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICBOb09wQ2xvYmJlcml6ZSgpKTsK
ICAgICAgICAgICAgICAgICBpZiAoZG9lc0ludGVyZmVyZSkgewotICAgICAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR1ZhcmFyZ3NGb3J3YXJk
aW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIiAgICBJbnRlcmZlcmVuY2UgYXQgIiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBAIC0yNDAsNyArMjQyLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gV2UgY2FuIG1ha2UgdGhpcyB3b3Jr
LgotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5n
UGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBXaWxsIGRv
IGZvcndhcmRpbmchXG4iKTsKICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAKaW5kZXggOTAy
MTFmZDk0YWM2MTVjNjVjNTFkMzRjN2Q1ODhmNGQ5M2IxMjljNy4uOWI5OTE0YWU4Yjg1NGQwMzUy
OGE2Yjg4N2JhMjg4OGU3OWVkZGRhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQWJzdHJhY3RIZWFwLmNwcApAQCAtMzgsOCArMzgsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEZUTCB7CiAKLXVzaW5nIG5hbWVzcGFjZSBCMzsKLQogQWJzdHJhY3RIZWFwOjpB
YnN0cmFjdEhlYXAoQWJzdHJhY3RIZWFwKiBwYXJlbnQsIGNvbnN0IGNoYXIqIGhlYXBOYW1lLCBw
dHJkaWZmX3Qgb2Zmc2V0KQogICAgIDogbV9vZmZzZXQob2Zmc2V0KQogICAgICwgbV9oZWFwTmFt
ZShoZWFwTmFtZSkKQEAgLTc3LDcgKzc1LDcgQEAgdm9pZCBBYnN0cmFjdEhlYXA6OmNvbXB1dGUo
dW5zaWduZWQgYmVnaW4pCiAKICAgICBpZiAobV9jaGlsZHJlbi5pc0VtcHR5KCkpIHsKICAgICAg
ICAgLy8gTXVzdCBzcGVjaWFsLWNhc2UgbGVhdmVzIHNvIHRoYXQgdGhleSB1c2UganVzdCBvbmUg
c2xvdCBvbiB0aGUgbnVtYmVyIGxpbmUuCi0gICAgICAgIG1fcmFuZ2UgPSBIZWFwUmFuZ2UoYmVn
aW4pOworICAgICAgICBtX3JhbmdlID0gQjM6OkhlYXBSYW5nZShiZWdpbik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTg3LDcgKzg1LDcgQEAgdm9pZCBBYnN0cmFjdEhlYXA6OmNvbXB1
dGUodW5zaWduZWQgYmVnaW4pCiAgICAgICAgIGN1cnJlbnQgPSBjaGlsZC0+cmFuZ2UoKS5lbmQo
KTsKICAgICB9CiAKLSAgICBtX3JhbmdlID0gSGVhcFJhbmdlKGJlZ2luLCBjdXJyZW50KTsKKyAg
ICBtX3JhbmdlID0gQjM6OkhlYXBSYW5nZShiZWdpbiwgY3VycmVudCk7CiB9CiAKIHZvaWQgQWJz
dHJhY3RIZWFwOjpzaGFsbG93RHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5j
cHAKaW5kZXggNTkwM2E4ZTUzZWQzZDU3NTBlMWM1Y2RmMDExOGQyOTIyYzVjY2Y5Mi4uNDBjYzhi
ODE0YzMwZTQxYzUyY2JjNWM5N2JiMTg4ZTQ2MjBjM2E0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCkBAIC00
Nyw4ICs0Nyw2IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAotdXNpbmcg
bmFtZXNwYWNlIEIzOwotCiBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5KCkKICAgICA6IHJvb3QobnVsbHB0ciwgImpzY1Jvb3QiKQogCkBAIC05Miw0OCArOTAs
NDkgQEAgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6fkFic3RyYWN0SGVhcFJlcG9zaXRvcnkoKQog
ewogfQogCi12b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlTWVtb3J5KGNvbnN0
IEFic3RyYWN0SGVhcCogaGVhcCwgVmFsdWUqIHZhbHVlKQordm9pZCBBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5OjpkZWNvcmF0ZU1lbW9yeShjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIEIzOjpWYWx1
ZSogdmFsdWUpCiB7CiAgICAgbV9oZWFwRm9yTWVtb3J5LmFwcGVuZChIZWFwRm9yVmFsdWUoaGVh
cCwgdmFsdWUpKTsKIH0KIAotdm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUND
YWxsUmVhZChjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIFZhbHVlKiB2YWx1ZSkKK3ZvaWQgQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVDQ2FsbFJlYWQoY29uc3QgQWJzdHJhY3RIZWFw
KiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQogewogICAgIG1faGVhcEZvckNDYWxsUmVhZC5hcHBl
bmQoSGVhcEZvclZhbHVlKGhlYXAsIHZhbHVlKSk7CiB9CiAKLXZvaWQgQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeTo6ZGVjb3JhdGVDQ2FsbFdyaXRlKGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwgVmFs
dWUqIHZhbHVlKQordm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUNDYWxsV3Jp
dGUoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQogewogICAgIG1f
aGVhcEZvckNDYWxsV3JpdGUuYXBwZW5kKEhlYXBGb3JWYWx1ZShoZWFwLCB2YWx1ZSkpOwogfQog
Ci12b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlUGF0Y2hwb2ludFJlYWQoY29u
c3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBWYWx1ZSogdmFsdWUpCit2b2lkIEFic3RyYWN0SGVhcFJl
cG9zaXRvcnk6OmRlY29yYXRlUGF0Y2hwb2ludFJlYWQoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFw
LCBCMzo6VmFsdWUqIHZhbHVlKQogewogICAgIG1faGVhcEZvclBhdGNocG9pbnRSZWFkLmFwcGVu
ZChIZWFwRm9yVmFsdWUoaGVhcCwgdmFsdWUpKTsKIH0KIAotdm9pZCBBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5OjpkZWNvcmF0ZVBhdGNocG9pbnRXcml0ZShjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAs
IFZhbHVlKiB2YWx1ZSkKK3ZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVQYXRj
aHBvaW50V3JpdGUoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQog
ewogICAgIG1faGVhcEZvclBhdGNocG9pbnRXcml0ZS5hcHBlbmQoSGVhcEZvclZhbHVlKGhlYXAs
IHZhbHVlKSk7CiB9CiAKLXZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5j
ZVJlYWQoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBWYWx1ZSogdmFsdWUpCit2b2lkIEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlRmVuY2VSZWFkKGNvbnN0IEFic3RyYWN0SGVhcCog
aGVhcCwgQjM6OlZhbHVlKiB2YWx1ZSkKIHsKICAgICBtX2hlYXBGb3JGZW5jZVJlYWQuYXBwZW5k
KEhlYXBGb3JWYWx1ZShoZWFwLCB2YWx1ZSkpOwogfQogCi12b2lkIEFic3RyYWN0SGVhcFJlcG9z
aXRvcnk6OmRlY29yYXRlRmVuY2VXcml0ZShjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIFZhbHVl
KiB2YWx1ZSkKK3ZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5jZVdyaXRl
KGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwgQjM6OlZhbHVlKiB2YWx1ZSkKIHsKICAgICBtX2hl
YXBGb3JGZW5jZVdyaXRlLmFwcGVuZChIZWFwRm9yVmFsdWUoaGVhcCwgdmFsdWUpKTsKIH0KIAot
dm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUZlbmNlZEFjY2Vzcyhjb25zdCBB
YnN0cmFjdEhlYXAqIGhlYXAsIFZhbHVlKiB2YWx1ZSkKK3ZvaWQgQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeTo6ZGVjb3JhdGVGZW5jZWRBY2Nlc3MoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBCMzo6
VmFsdWUqIHZhbHVlKQogewogICAgIG1faGVhcEZvckZlbmNlZEFjY2Vzcy5hcHBlbmQoSGVhcEZv
clZhbHVlKGhlYXAsIHZhbHVlKSk7CiB9CiAKIHZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6
Y29tcHV0ZVJhbmdlc0FuZERlY29yYXRlSW5zdHJ1Y3Rpb25zKCkKIHsKKyAgICB1c2luZyBuYW1l
c3BhY2UgQjM7CiAgICAgcm9vdC5jb21wdXRlKCk7CiAKICAgICBpZiAodmVyYm9zZUNvbXBpbGF0
aW9uRW5hYmxlZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEpJVEZpbmFsaXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFs
aXplci5jcHAKaW5kZXggMzZkYzQ5Y2VjMTBjNjU5NzljZjYwYTMzMmU5ZTAwNGI0ZWM2MTBlZC4u
YjI4ZGQ5YTVjMzgyMzlkN2Y4N2FkMjM2NGU3NGI5NDUxMjQxZWYzMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNwcApAQCAtMzcsOSArMzcsNyBAQAog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKLXVzaW5nIG5hbWVzcGFjZSBERkc7
Ci0KLUpJVEZpbmFsaXplcjo6SklURmluYWxpemVyKFBsYW4mIHBsYW4pCitKSVRGaW5hbGl6ZXI6
OkpJVEZpbmFsaXplcihERkc6OlBsYW4mIHBsYW4pCiAgICAgOiBGaW5hbGl6ZXIocGxhbikKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCmluZGV4IDY3NmIzOTA5Yzg3ZDBk
YTkwYzVkOGRiNjYwOGFkMjE0YzU5ODk2NjkuLjdjMDE4MWQ4ZDFlNGI5MzhkZWU3MGFiOTFkNjYy
ZTA4NGMwMjkyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGlu
ay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcApAQCAtNDEs
MTAgKzQxLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCi11c2luZyBu
YW1lc3BhY2UgREZHOwotCiB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogeworICAgIHVzaW5nIG5h
bWVzcGFjZSBERkc7CiAgICAgR3JhcGgmIGdyYXBoID0gc3RhdGUuZ3JhcGg7CiAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBncmFwaC5tX2NvZGVCbG9jazsKICAgICBWTSYgdm0gPSBncmFwaC5t
X3ZtOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25z
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKaW5kZXgg
NDE3MTc4ZDY1ZWZkMGU4NDgzNzlkNzRlNmU2MjYzMDY1MDYxYzIwMi4uOGJjYTU2YzA2NTk3ZTc4
NDY1YzI5MjY4NGYzNmI3MmM5YjE2NzhmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE9wZXJhdGlvbnMuY3BwCkBAIC00MiwxMiArNDIsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBGVEwgewogCi11c2luZyBuYW1lc3BhY2UgSlNDOjpERkc7Ci0KIGV4dGVybiAi
QyIgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5PU1IoCiAgICAg
RXhlY1N0YXRlKiBleGVjLCBFeGl0VGltZU9iamVjdE1hdGVyaWFsaXphdGlvbiogbWF0ZXJpYWxp
emF0aW9uLAogICAgIEVuY29kZWRKU1ZhbHVlKiBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVl
KiB2YWx1ZXMpCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIERGRzsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAK
QEAgLTEyMCw2ICsxMTksNyBAQCBleHRlcm4gIkMiIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Qb3B1bGF0ZU9iamVjdEluT1NSKAogZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUigKICAgICBFeGVjU3RhdGUqIGV4ZWMsIEV4
aXRUaW1lT2JqZWN0TWF0ZXJpYWxpemF0aW9uKiBtYXRlcmlhbGl6YXRpb24sIEVuY29kZWRKU1Zh
bHVlKiB2YWx1ZXMpCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIERGRzsKICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwogCiAgICAgLy8gV2UgY2Fubm90IEdDLiBXZSd2ZSBnb3QgcG9pbnRlcnMgaW4g
ZXZpbCBwbGFjZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
aW5nQ29uc3RyYWludFNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5n
Q29uc3RyYWludFNldC5jcHAKaW5kZXggMDFjMDZlNzVjNWIwMGVkMTA2OGU3YjRjZjFhNzI4YzU5
NGNmOTFlMi4uYzVhNmM2Njk3NTkyZjc5NDBlZmZhNTU2MTllZjMzYTBkNTAxZDZlZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNw
cApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIk1hcmtpbmdDb25zdHJhaW50U2V0LmgiCiAK
ICNpbmNsdWRlICJPcHRpb25zLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL1RpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAg
LTEwNiwxNSArMTA3LDE1IEBAIHZvaWQgTWFya2luZ0NvbnN0cmFpbnRTZXQ6OmRpZFN0YXJ0TWFy
a2luZygpCiAgICAgbV9pdGVyYXRpb24gPSAxOwogfQogCi12b2lkIE1hcmtpbmdDb25zdHJhaW50
U2V0OjphZGQoQ1N0cmluZyBhYmJyZXZpYXRlZE5hbWUsIENTdHJpbmcgbmFtZSwgRnVuY3Rpb248
dm9pZChTbG90VmlzaXRvciYsIGNvbnN0IFZpc2l0aW5nVGltZW91dCYpPiBmdW5jdGlvbiwgQ29u
c3RyYWludFZvbGF0aWxpdHkgdm9sYXRpbGl0eSkKK3ZvaWQgTWFya2luZ0NvbnN0cmFpbnRTZXQ6
OmFkZChDU3RyaW5nIGFiYnJldmlhdGVkTmFtZSwgQ1N0cmluZyBuYW1lLCA6OkZ1bmN0aW9uPHZv
aWQoU2xvdFZpc2l0b3ImLCBjb25zdCBWaXNpdGluZ1RpbWVvdXQmKT4gZnVuY3Rpb24sIENvbnN0
cmFpbnRWb2xhdGlsaXR5IHZvbGF0aWxpdHkpCiB7CiAgICAgYWRkKHN0ZDo6bWFrZV91bmlxdWU8
TWFya2luZ0NvbnN0cmFpbnQ+KFdURk1vdmUoYWJicmV2aWF0ZWROYW1lKSwgV1RGTW92ZShuYW1l
KSwgV1RGTW92ZShmdW5jdGlvbiksIHZvbGF0aWxpdHkpKTsKIH0KIAogdm9pZCBNYXJraW5nQ29u
c3RyYWludFNldDo6YWRkKAogICAgIENTdHJpbmcgYWJicmV2aWF0ZWROYW1lLCBDU3RyaW5nIG5h
bWUsCi0gICAgRnVuY3Rpb248dm9pZChTbG90VmlzaXRvciYsIGNvbnN0IFZpc2l0aW5nVGltZW91
dCYpPiBleGVjdXRlRnVuY3Rpb24sCi0gICAgRnVuY3Rpb248ZG91YmxlKFNsb3RWaXNpdG9yJik+
IHF1aWNrV29ya0VzdGltYXRlRnVuY3Rpb24sCisgICAgOjpGdW5jdGlvbjx2b2lkKFNsb3RWaXNp
dG9yJiwgY29uc3QgVmlzaXRpbmdUaW1lb3V0Jik+IGV4ZWN1dGVGdW5jdGlvbiwKKyAgICA6OkZ1
bmN0aW9uPGRvdWJsZShTbG90VmlzaXRvciYpPiBxdWlja1dvcmtFc3RpbWF0ZUZ1bmN0aW9uLAog
ICAgIENvbnN0cmFpbnRWb2xhdGlsaXR5IHZvbGF0aWxpdHkpCiB7CiAgICAgYWRkKHN0ZDo6bWFr
ZV91bmlxdWU8TWFya2luZ0NvbnN0cmFpbnQ+KFdURk1vdmUoYWJicmV2aWF0ZWROYW1lKSwgV1RG
TW92ZShuYW1lKSwgV1RGTW92ZShleGVjdXRlRnVuY3Rpb24pLCBXVEZNb3ZlKHF1aWNrV29ya0Vz
dGltYXRlRnVuY3Rpb24pLCB2b2xhdGlsaXR5KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAKaW5kZXggYWU2ZTE4MzVlMmUyZTdh
NDMwMGY3ZGZhMGExMWIyODZkM2YxZmMzMS4uZjcwNjY2ZDg5NzBmNmM3MzMxNTkwNzgxNzdkM2Vh
M2M1NTgwYWI3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1NoYWRvd0NoaWNrZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9TaGFkb3dDaGlja2VuLmNwcApAQCAtMzMsNyArMzMsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAorbmFtZXNwYWNlIFNoYWRvd0NoaWNrZW5JbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2
ZXJib3NlID0gZmFsc2U7Cit9CiAKIHZvaWQgU2hhZG93Q2hpY2tlbjo6UGFja2V0OjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CkBAIC04Niw3ICs4OCw3IEBAIHZvaWQgU2hhZG93Q2hp
Y2tlbjo6bG9nKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBQYWNrZXQmIHBhY2tldCkK
IAogdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiB7
Ci0gICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJi
b3NlKSB7CiAgICAgICAgIGRhdGFMb2coIlJ1bm5pbmcgdXBkYXRlIG9uOiAiLCAqdGhpcywgIlxu
Iik7CiAgICAgICAgIFdURlJlcG9ydEJhY2t0cmFjZSgpOwogICAgIH0KQEAgLTExMiwxMyArMTE0
LDEzIEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVj
KQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTaGFk
b3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkhpZ2hlc3QgcG9p
bnQgc2luY2UgbGFzdCB0aW1lOiAiLCBSYXdQb2ludGVyKGhpZ2hlc3RQb2ludFNpbmNlTGFzdFRp
bWUpLCAiXG4iKTsKICAgICAKICAgICB3aGlsZSAoIW1fc3RhY2suaXNFbXB0eSgpICYmIChtX3N0
YWNrLmxhc3QoKS5mcmFtZSA8IGhpZ2hlc3RQb2ludFNpbmNlTGFzdFRpbWUgfHwgbV9zdGFjay5s
YXN0KCkuaXNUYWlsRGVsZXRlZCkpCiAgICAgICAgIG1fc3RhY2sucmVtb3ZlTGFzdCgpOwogICAg
IAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgIGRhdGFMb2coIiAgICBSZXZpc2VkIHN0YWNrOiAiLCBsaXN0RHVtcChtX3N0
YWNrKSwgIlxuIik7CiAgICAgCiAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSB0b3Agb2Yg
c3RhY2sgaXMgbm93IHRhaWwtZGVsZXRlZC4gVGhlIHN0YWNrIG5vIGxvbmdlciBjb250YWlucyBh
bnkKQEAgLTE0MSw3ICsxNDMsNyBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0s
IEV4ZWNTdGF0ZSogZXhlYykKICAgICB9CiAKICAgICAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBp
ZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCIgICAg
UmV2aXNlZCBzdGFjazogIiwgbGlzdER1bXAobV9zdGFjayksICJcbiIpOwogICAgIAogICAgIC8v
IFRoZSBsb2ctYmFzZWQgYW5kIGV4ZWMtYmFzZWQgcnVsZXMgcmVxdWlyZSB0aGF0IFNoYWRvd0No
aWNrZW4gd2FzIGVuYWJsZWQuIFRoZSBwb2ludCBvZgpAQCAtMTY5LDcgKzE3MSw3IEBAIHZvaWQg
U2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAg
ICAgfSk7CiAgICAgICAgIHN0YWNrUmlnaHROb3cucmV2ZXJzZSgpOwogICAgICAgICAKLSAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgU3RhY2sgcmlnaHQgbm93OiAiLCBsaXN0RHVt
cChzdGFja1JpZ2h0Tm93KSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCBzaGFk
b3dJbmRleCA9IDA7CkBAIC0xOTQsNyArMTk2LDcgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRh
dGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIH0KICAgICAgICAgbV9zdGFjay5y
ZXNpemUoc2hhZG93SW5kZXgpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgUmV2aXNlZCBzdGFjazogIiwgbGlzdER1bXAobV9zdGFjayksICJcbiIpOwogICAg
IH0KICAgICAKQEAgLTIwOCwxNyArMjEwLDE3IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRl
KFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGlm
ICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgIGRhdGFMb2coIiAgICBIaWdoZXN0IHBvaW50IHNpbmNlIGxhc3QgdGltZTogIiwgUmF3UG9p
bnRlcihoaWdoZXN0UG9pbnRTaW5jZUxhc3RUaW1lKSwgIlxuIik7CiAgICAgCiAgICAgLy8gU2V0
IGV2ZXJ5dGhpbmcgdXAgc28gdGhhdCB3ZSBrbm93IHdoZXJlIHRoZSB0b3AgZnJhbWUgaXMgaW4g
dGhlIGxvZy4KICAgICB1bnNpZ25lZCBpbmRleEluTG9nID0gbG9nQ3Vyc29ySW5kZXg7CiAgICAg
CiAgICAgYXV0byBhZHZhbmNlSW5kZXhJbkxvZ1RvID0gWyZdIChDYWxsRnJhbWUqIGZyYW1lLCBK
U09iamVjdCogY2FsbGVlLCBDYWxsRnJhbWUqIGNhbGxlckZyYW1lKSAtPiBib29sIHsKLSAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQWR2YW5jaW5nIHRvIGZyYW1lID0gIiwgUmF3
UG9pbnRlcihmcmFtZSksICIgZnJvbSBpbmRleEluTG9nID0gIiwgaW5kZXhJbkxvZywgIlxuIik7
CiAgICAgICAgIGlmIChpbmRleEluTG9nID4gbG9nQ3Vyc29ySW5kZXgpIHsKLSAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGluZy5cbiIpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0yNDQsNyArMjQ2LDcgQEAgdm9pZCBT
aGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAg
ICBpZiAocGFja2V0LmlzUHJvbG9ndWUoKSAmJiBwYWNrZXQuZnJhbWUgPT0gZnJhbWUKICAgICAg
ICAgICAgICAgICAmJiAoIWNhbGxlZSB8fCBwYWNrZXQuY2FsbGVlID09IGNhbGxlZSkKICAgICAg
ICAgICAgICAgICAmJiAoIWNhbGxlckZyYW1lIHx8IHBhY2tldC5jYWxsZXJGcmFtZSA9PSBjYWxs
ZXJGcmFtZSkpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAg
ICBpZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCIgICAgRm91bmQgYXQgaW5kZXhJbkxvZyA9ICIsIGluZGV4SW5Mb2csICJcbiIp
OwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMjY2LDcg
KzI2OCw3IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICAvLyBJdCBzZWVtcyBsaWtlIHRoZSBsYXR0ZXIgb3B0aW9uIGlzIGxlc3Mg
aGFybWZ1bCwgc28gdGhhdCdzIHdoYXQgd2UgZG8uCiAgICAgICAgIGluZGV4SW5Mb2cgPSBvbGRJ
bmRleEluTG9nOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChT
aGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
RGlkbid0IGZpbmQgaXQuXG4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH07CkBAIC0y
ODYsMTAgKzI4OCwxMCBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNT
dGF0ZSogZXhlYykKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSB2aXNpdG9yLT5jYWxsRnJhbWUoKTsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgRXhhbWluaW5nICIsIFJhd1BvaW50ZXIoY2FsbEZyYW1lKSwg
IlxuIik7CiAgICAgICAgICAgICBpZiAoY2FsbEZyYW1lID09IGhpZ2hlc3RQb2ludFNpbmNlTGFz
dFRpbWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBp
ZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgQmFpbGluZyBhdCAiLCBSYXdQb2ludGVyKGNhbGxGcmFtZSksICIgYmVjYXVz
ZSBpdCdzIHRoZSBoaWdoZXN0IHBvaW50IHNpbmNlIGxhc3QgdGltZS5cbiIpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CiAgICAgICAgICAgICB9CkBAIC0zMTIs
NyArMzE0LDcgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBjb25kaXRpb24gcHJvdGVjdHMgdXMgZnJv
bSB0aGUgY2FzZSB3aGVyZSBhZHZhbmNlSW5kZXhJbkxvZ1RvIGRpZG4ndCBmaW5kCiAgICAgICAg
ICAgICAgICAgLy8gYW55dGhpbmcuCiAgICAgICAgICAgICAgICAgJiYgbV9sb2dbaW5kZXhJbkxv
Z10uZnJhbWUgPT0gdG9QdXNoLmxhc3QoKS5mcmFtZSkgewotICAgICAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBHb2luZyB0byBsb29wIHRocm91
Z2ggdG8gZmluZCB0YWlsIGRlbGV0ZWQgZnJhbWVzIHdpdGggaW5kZXhJbkxvZyA9ICIsIGluZGV4
SW5Mb2csICIgYW5kIHB1c2gtc3RhY2sgdG9wID0gIiwgdG9QdXNoLmxhc3QoKSwgIlxuIik7CiAg
ICAgICAgICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9s
b2dbaW5kZXhJbkxvZ10uZnJhbWUgPT0gdG9QdXNoLmxhc3QoKS5mcmFtZSk7CkBAIC0zMzcsNyAr
MzM5LDcgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5Mb2ctLTsgLy8gU2tpcCBvdmVyIHRoZSB0
YWlsIHBhY2tldC4KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlm
ICghYWR2YW5jZUluZGV4SW5Mb2dUbyh0YWlsUGFja2V0LmZyYW1lLCBudWxscHRyLCBudWxscHRy
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkNhbid0IGZpbmQgcHJvbG9ndWUgcGFja2V0IGZv
ciB0YWlsOiAiLCBSYXdQb2ludGVyKHRhaWxQYWNrZXQuZnJhbWUpLCAiXG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFdlIHdlcmUgdW5hYmxlIHRvIGxvY2F0ZSB0aGUgcHJvbG9ndWUg
cGFja2V0IGZvciB0aGlzIHRhaWwgcGFja2V0LgogICAgICAgICAgICAgICAgICAgICAgICAgLy8g
VGhpcyBpcyByYXJlIGJ1dCBjYW4gaGFwcGVuIGluIGEgc2l0dWF0aW9uIGxpa2U6CkBAIC0zNTcs
NyArMzU5LDcgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKICAgICAg
ICAgfSk7CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoU2hhZG93Q2hpY2tlbkludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCIgICAgUHVzaGluZzogIiwgbGlzdER1bXAodG9Q
dXNoKSwgIlxuIik7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gdG9QdXNoLnNpemUoKTsg
aS0tOykKQEAgLTM3Myw3ICszNzUsNyBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYg
dm0sIEV4ZWNTdGF0ZSogZXhlYykKICAgICB9IGVsc2UKICAgICAgICAgbV9sb2dDdXJzb3IgPSBt
X2xvZzsKIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgICBBZnRlciBwdXNoaW5nOiAiLCAqdGhpcywg
IlxuIik7CiAKICAgICAvLyBSZW1vdmUgdGFpbCBmcmFtZXMgdW50aWwgdGhlIG51bWJlciBvZiB0
YWlsIGRlbGV0ZWQgZnJhbWVzIGlzIHNtYWxsIGVub3VnaC4KQEAgLTM5OSw3ICs0MDEsNyBAQCB2
b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgICBBZnRlciBjbGVhbi11cDogIiwg
KnRoaXMsICJcbiIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0JpbmFyeVN3aXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0JpbmFyeVN3aXRj
aC5jcHAKaW5kZXggZjNkZGNmY2E5MjFjOTgxZWYyOGMwYjdkNmQ3YTUxZjVlZmQ1Mzg4Yi4uMGVh
YjU2NTE5MjUzMjllMTdiM2Y1Y2EyNWRiMTM0YWI0ZGQ5YTY3MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9CaW5hcnlTd2l0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQmluYXJ5U3dpdGNoLmNwcApAQCAtMzMsNyArMzMsOSBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorbmFtZXNwYWNlIEJpbmFyeVN3aXRjaEludGVybmFsIHsKIHN0YXRpYyBjb25z
dCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogc3RhdGljIHVuc2lnbmVkIGdsb2JhbENvdW50
ZXI7IC8vIFdlIHVzZSBhIGRpZmZlcmVudCBzZWVkIGV2ZXJ5IHRpbWUgd2UgYXJlIGludm9rZWQu
CiAKQEAgLTQ3LDcgKzQ5LDcgQEAgQmluYXJ5U3dpdGNoOjpCaW5hcnlTd2l0Y2goR1BSUmVnIHZh
bHVlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGNhc2VzLCBUeXBlIHR5cGUKICAgICBpZiAoY2Fz
ZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBp
ZiAoQmluYXJ5U3dpdGNoSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIk9yaWdp
bmFsIGNhc2VzOiAiLCBsaXN0RHVtcChjYXNlcyksICJcbiIpOwogICAgIAogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBjYXNlcy5zaXplKCk7ICsraSkKQEAgLTU1LDcgKzU3LDcgQEAgQmlu
YXJ5U3dpdGNoOjpCaW5hcnlTd2l0Y2goR1BSUmVnIHZhbHVlLCBjb25zdCBWZWN0b3I8aW50NjRf
dD4mIGNhc2VzLCBUeXBlIHR5cGUKICAgICAKICAgICBzdGQ6OnNvcnQobV9jYXNlcy5iZWdpbigp
LCBtX2Nhc2VzLmVuZCgpKTsKIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChCaW5hcnlTd2l0
Y2hJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiU29ydGVkIGNhc2VzOiAiLCBs
aXN0RHVtcChtX2Nhc2VzKSwgIlxuIik7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsg
aSA8IG1fY2FzZXMuc2l6ZSgpOyArK2kpCkBAIC0xMzcsMTEgKzEzOSwxMSBAQCBib29sIEJpbmFy
eVN3aXRjaDo6YWR2YW5jZShNYWNyb0Fzc2VtYmxlciYgaml0KQogCiB2b2lkIEJpbmFyeVN3aXRj
aDo6YnVpbGQodW5zaWduZWQgc3RhcnQsIGJvb2wgaGFyZFN0YXJ0LCB1bnNpZ25lZCBlbmQpCiB7
Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEJpbmFyeVN3aXRjaEludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICBkYXRhTG9nKCJCdWlsZGluZyB3aXRoIHN0YXJ0ID0gIiwgc3RhcnQsICIsIGhh
cmRTdGFydCA9ICIsIGhhcmRTdGFydCwgIiwgZW5kID0gIiwgZW5kLCAiXG4iKTsKIAogICAgIGF1
dG8gYXBwZW5kID0gWyZdIChjb25zdCBCcmFuY2hDb2RlJiBjb2RlKSB7Ci0gICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICBpZiAoQmluYXJ5U3dpdGNoSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICBkYXRhTG9nKCI9PT4gIiwgY29kZSwgIlxuIik7CiAgICAgICAgIG1fYnJhbmNoZXMu
YXBwZW5kKGNvZGUpOwogICAgIH07CkBAIC0xNTksNyArMTYxLDcgQEAgdm9pZCBCaW5hcnlTd2l0
Y2g6OmJ1aWxkKHVuc2lnbmVkIHN0YXJ0LCBib29sIGhhcmRTdGFydCwgdW5zaWduZWQgZW5kKQog
ICAgIGNvbnN0IHVuc2lnbmVkIGxlYWZUaHJlc2hvbGQgPSAzOwogICAgIAogICAgIGlmIChzaXpl
IDw9IGxlYWZUaHJlc2hvbGQpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChC
aW5hcnlTd2l0Y2hJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkl0J3Mg
YSBsZWFmLlxuIik7CiAgICAgICAgIAogICAgICAgICAvLyBJdCB0dXJucyBvdXQgdGhhdCBmb3Ig
ZXhhY3RseSB0aHJlZSBjYXNlcyBvciBsZXNzLCBpdCdzIGJldHRlciB0byBqdXN0IGNvbXBhcmUg
ZWFjaApAQCAtMTg2LDcgKzE4OCw3IEBAIHZvaWQgQmluYXJ5U3dpdGNoOjpidWlsZCh1bnNpZ25l
ZCBzdGFydCwgYm9vbCBoYXJkU3RhcnQsIHVuc2lnbmVkIGVuZCkKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQmluYXJ5U3dpdGNo
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJhbGxDb25zZWN1dGl2ZSA9
ICIsIGFsbENvbnNlY3V0aXZlLCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIFZlY3Rvcjx1bnNp
Z25lZCwgMz4gbG9jYWxDYXNlSW5kaWNlczsKQEAgLTIxNCw3ICsyMTYsNyBAQCB2b2lkIEJpbmFy
eVN3aXRjaDo6YnVpbGQodW5zaWduZWQgc3RhcnQsIGJvb2wgaGFyZFN0YXJ0LCB1bnNpZ25lZCBl
bmQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAo
QmluYXJ5U3dpdGNoSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkl0J3Mgbm90
IGEgbGVhZi5cbiIpOwogICAgICAgICAKICAgICAvLyBUaGVyZSBhcmUgdHdvIGRpZmZlcmVudCBz
dHJhdGVnaWVzIHdlIGNvdWxkIGNvbnNpZGVyIGhlcmU6CkBAIC0zMTQsNyArMzE2LDcgQEAgdm9p
ZCBCaW5hcnlTd2l0Y2g6OmJ1aWxkKHVuc2lnbmVkIHN0YXJ0LCBib29sIGhhcmRTdGFydCwgdW5z
aWduZWQgZW5kKQogICAgICAgICAKICAgICB1bnNpZ25lZCBtZWRpYW5JbmRleCA9IChzdGFydCAr
IGVuZCkgLyAyOwogCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEJpbmFyeVN3aXRjaEludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJtZWRpYW5JbmRleCA9ICIsIG1lZGlhbklu
ZGV4LCAiXG4iKTsKIAogICAgIC8vIFdlIHdhbnQgbWVkaWFuSW5kZXggdG8gcG9pbnQgdG8gdGhl
IHRoaW5nIHdlIHdpbGwgZG8gYSBsZXNzLXRoYW4gY29tcGFyZSBhZ2FpbnN0LiBXZSB3YW50CkBA
IC0zNDcsNyArMzQ5LDcgQEAgdm9pZCBCaW5hcnlTd2l0Y2g6OmJ1aWxkKHVuc2lnbmVkIHN0YXJ0
LCBib29sIGhhcmRTdGFydCwgdW5zaWduZWQgZW5kKQogICAgIFJFTEVBU0VfQVNTRVJUKG1lZGlh
bkluZGV4ID4gc3RhcnQpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1lZGlhbkluZGV4ICsgMSA8IGVu
ZCk7CiAgICAgICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChCaW5hcnlTd2l0Y2hJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiZml4ZWQgbWVkaWFuSW5kZXggPSAiLCBt
ZWRpYW5JbmRleCwgIlxuIik7CiAKICAgICBhcHBlbmQoQnJhbmNoQ29kZShMZXNzVGhhblRvUHVz
aCwgbWVkaWFuSW5kZXgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5j
cHAKaW5kZXggMWU0OWYyZjg1MzI1OGUzOTQxNjFjN2M0NDAwMzk5MzNmYWFhOTIxYy4uYWQ4Njlm
MjBlMmU0ZDFiOWFlMGRhNzg3NDgyZmI2ZmU3ZDI4YWZhYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5jcHAKQEAgLTIyNSw3ICsyMjUsOSBAQCB2b2lkIERhdGE6OmZp
bmFsaXplU3RhdHMoKQogfQogCiAjaWYgRU5BQkxFKExMSU5UX1NUQVRTKQorbmFtZXNwYWNlIExM
SW50RGF0YUludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2VTdGF0cyA9IGZhbHNl
OworfQogCiBzdGF0aWMgYm9vbCBjb21wYXJlU3RhdHMoY29uc3QgT3Bjb2RlU3RhdHMmIGEsIGNv
bnN0IE9wY29kZVN0YXRzJiBiKQogewpAQCAtMjgzLDcgKzI4NSw3IEBAIHZvaWQgRGF0YTo6bG9h
ZFN0YXRzKCkKICAgICB1bnNpZ25lZCBpbmRleDsKICAgICBjaGFyIG9wY29kZU5hbWVbMTAwXTsK
ICAgICB3aGlsZSAoZnNjYW5mKGZpbGUsICJbJXVdOiBmYXN0OiV6dSBzbG93OiV6dSBpZDoldSAl
c1xuIiwgJmluZGV4LCAmbG9hZGVkLmNvdW50LCAmbG9hZGVkLnNsb3dQYXRoQ291bnQsICZsb2Fk
ZWQuaWQsIG9wY29kZU5hbWUpICE9IEVPRikgewotICAgICAgICBpZiAodmVyYm9zZVN0YXRzKQor
ICAgICAgICBpZiAoTExJbnREYXRhSW50ZXJuYWw6OnZlcmJvc2VTdGF0cykKICAgICAgICAgICAg
IGRhdGFMb2dGKCJsb2FkZWQgWyV1XTogZmFzdCAlenUgc2xvdyAlenUgaWQ6JXUgJXNcbiIsIGlu
ZGV4LCBsb2FkZWQuY291bnQsIGxvYWRlZC5zbG93UGF0aENvdW50LCBsb2FkZWQuaWQsIG9wY29k
ZU5hbWUpOwogCiAgICAgICAgIE9wY29kZVN0YXRzJiBzdGF0cyA9IG9wY29kZVN0YXRzKGxvYWRl
ZC5pZCk7CkBAIC0yOTEsNyArMjkzLDcgQEAgdm9pZCBEYXRhOjpsb2FkU3RhdHMoKQogICAgICAg
ICBzdGF0cy5zbG93UGF0aENvdW50ID0gbG9hZGVkLnNsb3dQYXRoQ291bnQ7CiAgICAgfQogCi0g
ICAgaWYgKHZlcmJvc2VTdGF0cykgeworICAgIGlmIChMTEludERhdGFJbnRlcm5hbDo6dmVyYm9z
ZVN0YXRzKSB7CiAgICAgICAgIGRhdGFMb2dGKCJBZnRlciBsb2FkaW5nIGZyb20gJXMsICIsIGZp
bGVuYW1lKTsKICAgICAgICAgZHVtcFN0YXRzKCk7CiAgICAgfQpAQCAtMzMwLDcgKzMzMiw3IEBA
IHZvaWQgRGF0YTo6c2F2ZVN0YXRzKCkKICAgICAgICAgaWYgKCFzdGF0cy5jb3VudCAmJiAhc3Rh
dHMuc2xvd1BhdGhDb3VudCkKICAgICAgICAgICAgIGJyZWFrOyAvLyBzdGF0cyBhcmUgc29ydGVk
LiBJZiB3ZSBlbmNvdW50ZXJlZCAwIGNvdW50cywgdGhlbiB0aGVyZSBhcmUgbm8gbW9yZSBub24t
emVybyBjb3VudHMuCiAKLSAgICAgICAgaWYgKHZlcmJvc2VTdGF0cykKKyAgICAgICAgaWYgKExM
SW50RGF0YUludGVybmFsOjp2ZXJib3NlU3RhdHMpCiAgICAgICAgICAgICBkYXRhTG9nRigic2F2
ZWQgWyV1XTogZmFzdDolenUgc2xvdzolenUgaWQ6JXUgJXNcbiIsIGluZGV4LCBzdGF0cy5jb3Vu
dCwgc3RhdHMuc2xvd1BhdGhDb3VudCwgc3RhdHMuaWQsIG9wY29kZU5hbWVzW3N0YXRzLmlkXSk7
CiAKICAgICAgICAgZnByaW50ZihmaWxlLCAiWyV1XTogZmFzdDolenUgc2xvdzolenUgaWQ6JXUg
JXNcbiIsIGluZGV4LCBzdGF0cy5jb3VudCwgc3RhdHMuc2xvd1BhdGhDb3VudCwgc3RhdHMuaWQs
IG9wY29kZU5hbWVzW3N0YXRzLmlkXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggOGY3MTE3YjdmNjE0MmJhMDZhZTcxY2U3Y2U2
ZGRmM2ExNjdlNzcxNy4uM2I3MWEzMDk2N2VhMzk4ZDU5MjkyYjM5OWNiM2VkYjU2MDVhNGIxNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cApAQCAtMTM2Niw3ICsxMzY2LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvUHJpdmF0ZUZ1bmNBcHBlbmRNZW1jcHkoRXhlY1N0YXRlKiBleGVjKQogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLSBBcnJheVByb3RvdHlwZS5jb25zdHJ1Y3RvciBXYXRjaHBvaW50IC0t
LS0tLS0tLS0tLS0tLS0tLQogCituYW1lc3BhY2UgQXJyYXlQcm90b3R5cGVJbnRlcm5hbCB7CiBz
dGF0aWMgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIEFycmF5UHJvdG90eXBlQWRh
cHRpdmVJbmZlcnJlZFByb3BlcnR5V2F0Y2hwb2ludCA6IHB1YmxpYyBBZGFwdGl2ZUluZmVycmVk
UHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlIHsKIHB1YmxpYzoKQEAgLTEzODgsNyArMTM5MCw3
IEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OnRyeUluaXRpYWxpemVTcGVjaWVzV2F0Y2hwb2ludChF
eGVjU3RhdGUqIGV4ZWMpCiAKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQXJyYXlQcm90b3R5cGVJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiSW5pdGlhbGl6aW5nIEFycmF5IHNwZWNpZXMgd2F0
Y2hwb2ludHMgZm9yIEFycmF5LnByb3RvdHlwZTogIiwgcG9pbnRlckR1bXAodGhpcyksICIgd2l0
aCBzdHJ1Y3R1cmU6ICIsIHBvaW50ZXJEdW1wKHRoaXMtPnN0cnVjdHVyZSgpKSwgIlxuYW5kIEFy
cmF5OiAiLCBwb2ludGVyRHVtcCh0aGlzLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlDb25zdHJ1Y3Rv
cigpKSwgIiB3aXRoIHN0cnVjdHVyZTogIiwgcG9pbnRlckR1bXAodGhpcy0+Z2xvYmFsT2JqZWN0
KCktPmFycmF5Q29uc3RydWN0b3IoKS0+c3RydWN0dXJlKCkpLCAiXG4iKTsKICAgICAvLyBGaXJz
dCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBBcnJheS5wcm90b3R5cGUuY29uc3RydWN0
b3IgcHJvcGVydHkgcG9pbnRzIHRvIEFycmF5CiAgICAgLy8gYW5kIHRoYXQgQXJyYXlbU3ltYm9s
LnNwZWNpZXNdIGlzIHRoZSBwcmltb3JkaWFsIEdldHRlclNldHRlci4KQEAgLTE0NjYsNyArMTQ2
OCw3IEBAIHZvaWQgQXJyYXlQcm90b3R5cGVBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlXYXRjaHBv
aW50OjpoYW5kbGVGaXJlKGNvbnN0IEZpcmVEZXRhCiAKICAgICBTdHJpbmdGaXJlRGV0YWlsIHN0
cmluZ0RldGFpbChvdXQudG9DU3RyaW5nKCkuZGF0YSgpKTsKIAotICAgIGlmICh2ZXJib3NlKQor
ICAgIGlmIChBcnJheVByb3RvdHlwZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBXVEY6OmRh
dGFMb2coc3RyaW5nRGV0YWlsLCAiXG4iKTsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2FycmF5UHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKaW5kZXggNTQ5M2Y4ZjcwYTM1
NzMyMWYxNjdkZTFjNTJiNGYzNTI5OTg4MDQ4Yy4uZmM4Yjg0ODJiZWZkNmIwYzA3NGI0ZWU4ZmQy
N2JhYTIyMjU4YjA4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3JJbnN0YW5jZS5jcHAKQEAgLTEwOCw0MSArMTA4LDYgQEAgc3RhdGljIHZvaWQgYXBwZW5kU291
cmNlVG9FcnJvcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRXJyb3JJbnN0YW5jZSogZXhjZXB0aW9u
LAogCiB9CiAKLWNsYXNzIEZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3Ig
ewotcHVibGljOgotICAgIEZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3Io
Q2FsbEZyYW1lKiBzdGFydENhbGxGcmFtZSkKLSAgICAgICAgOiBtX3N0YXJ0Q2FsbEZyYW1lKHN0
YXJ0Q2FsbEZyYW1lKQotICAgICAgICAsIG1fZm91bmRDYWxsRnJhbWUobnVsbHB0cikKLSAgICAg
ICAgLCBtX2ZvdW5kU3RhcnRDYWxsRnJhbWUoZmFsc2UpCi0gICAgICAgICwgbV9pbmRleCgwKQot
ICAgIHsgfQotCi0gICAgU3RhY2tWaXNpdG9yOjpTdGF0dXMgb3BlcmF0b3IoKShTdGFja1Zpc2l0
b3ImIHZpc2l0b3IpCi0gICAgewotICAgICAgICBpZiAoIW1fZm91bmRTdGFydENhbGxGcmFtZSAm
JiAodmlzaXRvci0+Y2FsbEZyYW1lKCkgPT0gbV9zdGFydENhbGxGcmFtZSkpCi0gICAgICAgICAg
ICBtX2ZvdW5kU3RhcnRDYWxsRnJhbWUgPSB0cnVlOwotCi0gICAgICAgIGlmIChtX2ZvdW5kU3Rh
cnRDYWxsRnJhbWUpIHsKLSAgICAgICAgICAgIGlmICh2aXNpdG9yLT5jYWxsRnJhbWUoKS0+Y29k
ZUJsb2NrKCkpIHsKLSAgICAgICAgICAgICAgICBtX2ZvdW5kQ2FsbEZyYW1lID0gdmlzaXRvci0+
Y2FsbEZyYW1lKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1faW5kZXgrKzsKLSAgICAgICAgfQotCi0gICAg
ICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwotICAgIH0KLQotICAgIENhbGxGcmFt
ZSogZm91bmRDYWxsRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZvdW5kQ2FsbEZyYW1lOyB9Ci0g
ICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9Ci0KLXByaXZhdGU6
Ci0gICAgQ2FsbEZyYW1lKiBtX3N0YXJ0Q2FsbEZyYW1lOwotICAgIENhbGxGcmFtZSogbV9mb3Vu
ZENhbGxGcmFtZTsKLSAgICBib29sIG1fZm91bmRTdGFydENhbGxGcmFtZTsKLSAgICB1bnNpZ25l
ZCBtX2luZGV4OwotfTsKLQogdm9pZCBFcnJvckluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIFZNJiB2bSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBib29sIHVzZUN1cnJl
bnRGcmFtZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAppbmRleCA3
ZWYwMDA4ZDgzN2NjZjkxMzcxNGYzYTM1YzM5NTUxOTk4YjZmOTdmLi5jOTIwYWNmNDdlODJjOTUy
ZThmYjZlMzA3ZDliMGZlM2Y1YTgyYmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKQEAgLTQ5LDcgKzQ5LDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gSW50bERhdGVUaW1lRm9ybWF0OjpzX2lu
Zm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEludGxEYXRlVGltZUZvcm1hdCkgfTsKIAorbmFtZXNwYWNlIEludGxEVEZJ
bnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgcmVsZXZhbnRFeHRlbnNpb25LZXlz
WzJdID0geyAiY2EiLCAibnUiIH07Cit9CisKIHN0YXRpYyBjb25zdCBzaXplX3QgaW5kZXhPZkV4
dGVuc2lvbktleUNhID0gMDsKIHN0YXRpYyBjb25zdCBzaXplX3QgaW5kZXhPZkV4dGVuc2lvbktl
eU51ID0gMTsKIApAQCAtMTg5LDYgKzE5Miw3IEBAIHN0YXRpYyBTdHJpbmcgY2Fub25pY2FsaXpl
VGltZVpvbmVOYW1lKGNvbnN0IFN0cmluZyYgdGltZVpvbmVOYW1lKQogICAgIHJldHVybiBjYW5v
bmljYWw7CiB9CiAKK25hbWVzcGFjZSBJbnRsRFRGSW50ZXJuYWwgewogc3RhdGljIFZlY3RvcjxT
dHJpbmc+IGxvY2FsZURhdGEoY29uc3QgU3RyaW5nJiBsb2NhbGUsIHNpemVfdCBrZXlJbmRleCkK
IHsKICAgICBWZWN0b3I8U3RyaW5nPiBrZXlMb2NhbGVEYXRhOwpAQCAtMzE5LDYgKzMyMyw3IEBA
IHN0YXRpYyBKU09iamVjdCogdG9EYXRlVGltZU9wdGlvbnNBbnlEYXRlKEV4ZWNTdGF0ZSYgZXhl
YywgSlNWYWx1ZSBvcmlnaW5hbE9wdGlvCiAgICAgLy8gOS4gUmV0dXJuIG9wdGlvbnMuCiAgICAg
cmV0dXJuIG9wdGlvbnM7CiB9Cit9CiAKIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0OjpzZXRGb3Jt
YXRzRnJvbVBhdHRlcm4oY29uc3QgU3RyaW5nVmlldyYgcGF0dGVybikKIHsKQEAgLTQzMyw3ICs0
MzgsNyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0
KEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSBsb2NhbAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CiAKICAgICAvLyA1LiBMZXQgb3B0aW9ucyBiZSBUb0RhdGVUaW1lT3B0
aW9ucyhvcHRpb25zLCAiYW55IiwgImRhdGUiKS4KLSAgICBKU09iamVjdCogb3B0aW9ucyA9IHRv
RGF0ZVRpbWVPcHRpb25zQW55RGF0ZShleGVjLCBvcmlnaW5hbE9wdGlvbnMpOworICAgIEpTT2Jq
ZWN0KiBvcHRpb25zID0gSW50bERURkludGVybmFsOjp0b0RhdGVUaW1lT3B0aW9uc0FueURhdGUo
ZXhlYywgb3JpZ2luYWxPcHRpb25zKTsKICAgICAvLyA2LiBSZXR1cm5JZkFicnVwdChvcHRpb25z
KS4KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCkBAIC00NTAsNyAr
NDU1LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1h
dChFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUgbG9jYWwKICAgICAvLyAxMS4gTGV0IGxvY2FsZURh
dGEgYmUgdGhlIHZhbHVlIG9mICVEYXRlVGltZUZvcm1hdCUuW1tsb2NhbGVEYXRhXV0uCiAgICAg
Ly8gMTIuIExldCByIGJlIFJlc29sdmVMb2NhbGUoICVEYXRlVGltZUZvcm1hdCUuW1thdmFpbGFi
bGVMb2NhbGVzXV0sIHJlcXVlc3RlZExvY2FsZXMsIG9wdCwgJURhdGVUaW1lRm9ybWF0JS5bW3Jl
bGV2YW50RXh0ZW5zaW9uS2V5c11dLCBsb2NhbGVEYXRhKS4KICAgICBjb25zdCBIYXNoU2V0PFN0
cmluZz4gYXZhaWxhYmxlTG9jYWxlcyA9IGV4ZWMuanNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCkt
PmludGxEYXRlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKTsKLSAgICBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiByZXNvbHZlZCA9IHJlc29sdmVMb2NhbGUoZXhlYywgYXZhaWxhYmxlTG9jYWxl
cywgcmVxdWVzdGVkTG9jYWxlcywgbG9jYWxlT3B0LCByZWxldmFudEV4dGVuc2lvbktleXMsIFdU
Rl9BUlJBWV9MRU5HVEgocmVsZXZhbnRFeHRlbnNpb25LZXlzKSwgbG9jYWxlRGF0YSk7CisgICAg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcmVzb2x2ZWQgPSByZXNvbHZlTG9jYWxlKGV4ZWMsIGF2
YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGxvY2FsZU9wdCwgSW50bERURkludGVy
bmFsOjpyZWxldmFudEV4dGVuc2lvbktleXMsIFdURl9BUlJBWV9MRU5HVEgoSW50bERURkludGVy
bmFsOjpyZWxldmFudEV4dGVuc2lvbktleXMpLCBJbnRsRFRGSW50ZXJuYWw6OmxvY2FsZURhdGEp
OwogCiAgICAgLy8gMTMuIFNldCBkYXRlVGltZUZvcm1hdC5bW2xvY2FsZV1dIHRvIHRoZSB2YWx1
ZSBvZiByLltbbG9jYWxlXV0uCiAgICAgbV9sb2NhbGUgPSByZXNvbHZlZC5nZXQodm0ucHJvcGVy
dHlOYW1lcy0+bG9jYWxlLnN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKaW5kZXggMjI0NzQ3OWJhNDQ4ZGIxYTRjODE3
ZDJmNzdjZmMzYzUyZjNmYzY0Yy4uYzJmYjgzNDYzYTM0NDQ3N2EwZmI0ZWZiNGE0MzVmZTNlZTc3
MjcxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdC5jcHAKQEAgLTg4LDEyICs4OCwxNCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2JvdW5kRm9ybWF0KTsKIH0KIAorbmFtZXNwYWNlIElu
dGxORkludGVybmFsIHsKIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBsb2NhbGVEYXRhKGNvbnN0IFN0
cmluZyYgbG9jYWxlLCBzaXplX3Qga2V5SW5kZXgpCiB7CiAgICAgLy8gOS4xIEludGVybmFsIHNs
b3RzIG9mIFNlcnZpY2UgQ29uc3RydWN0b3JzICYgMTEuMi4zIEludGVybmFsIHNsb3RzIChFQ01B
LTQwMiAyLjApCiAgICAgQVNTRVJUX1VOVVNFRChrZXlJbmRleCwgIWtleUluZGV4KTsgLy8gVGhl
IGluZGV4IG9mIHRoZSBleHRlbnNpb24ga2V5ICJudSIgaW4gcmVsZXZhbnRFeHRlbnNpb25LZXlz
IGlzIDAuCiAgICAgcmV0dXJuIG51bWJlcmluZ1N5c3RlbXNGb3JMb2NhbGUobG9jYWxlKTsKIH0K
K30KIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBjb21wdXRlQ3VycmVuY3lTb3J0S2V5KGNvbnN0
IFN0cmluZyYgY3VycmVuY3kpCiB7CkBAIC0xOTIsNyArMTk0LDcgQEAgdm9pZCBJbnRsTnVtYmVy
Rm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUg
bG9jYWxlcywKICAgICAvLyAxMS4gTGV0IGxvY2FsZURhdGEgYmUgJU51bWJlckZvcm1hdCUuW1ts
b2NhbGVEYXRhXV0uCiAgICAgLy8gMTIuIExldCByIGJlIFJlc29sdmVMb2NhbGUoJU51bWJlckZv
cm1hdCUuW1thdmFpbGFibGVMb2NhbGVzXV0sIHJlcXVlc3RlZExvY2FsZXMsIG9wdCwgJU51bWJl
ckZvcm1hdCUuW1tyZWxldmFudEV4dGVuc2lvbktleXNdXSwgbG9jYWxlRGF0YSkuCiAgICAgYXV0
byYgYXZhaWxhYmxlTG9jYWxlcyA9IHN0YXRlLmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5p
bnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOwotICAgIGF1dG8gcmVzdWx0ID0gcmVz
b2x2ZUxvY2FsZShzdGF0ZSwgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0
LCByZWxldmFudEV4dGVuc2lvbktleXMsIFdURl9BUlJBWV9MRU5HVEgocmVsZXZhbnRFeHRlbnNp
b25LZXlzKSwgbG9jYWxlRGF0YSk7CisgICAgYXV0byByZXN1bHQgPSByZXNvbHZlTG9jYWxlKHN0
YXRlLCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHQsIHJlbGV2YW50RXh0
ZW5zaW9uS2V5cywgV1RGX0FSUkFZX0xFTkdUSChyZWxldmFudEV4dGVuc2lvbktleXMpLCBJbnRs
TkZJbnRlcm5hbDo6bG9jYWxlRGF0YSk7CiAKICAgICAvLyAxMy4gU2V0IG51bWJlckZvcm1hdC5b
W2xvY2FsZV1dIHRvIHRoZSB2YWx1ZSBvZiByLltbbG9jYWxlXV0uCiAgICAgbV9sb2NhbGUgPSBy
ZXN1bHQuZ2V0KEFTQ0lJTGl0ZXJhbCgibG9jYWxlIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5jcHAKaW5k
ZXggMGFiYzUzMDg2OTdlYjI1MzQxZmFkMTJmMDNkZTA4YzBhMWYxNWY0NS4uNzhjOWU2NDA0ZjFi
ZjFkMzlkNTY0OGNkNGE0OWVjNDZjMmEwNjAwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuY3BwCkBAIC0z
Miw2ICszMiw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisjdW5kZWYgTUFLRV9TX0lORk8KICNk
ZWZpbmUgTUFLRV9TX0lORk8odHlwZSkgXAogICAgIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZv
IEpTIyN0eXBlIyNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyJGdW5jdGlvbiIsICZKUyMjdHlwZSMj
Q29uc3RydWN0b3I6OkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKUyMjdHlwZSMjQ29uc3RydWN0b3IpfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlQcm90b3R5cGVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwCmluZGV4IDY2
ZDc0ZTY5ZWNhNGYxNzI1ZTgyYzEyZWFkM2FkZGUyNGJlOTI5ZmEuLmIxNDM0NTViMGQxMWNkMzky
ZTUyMWMwYjhiMGE4MmEwMzJhODRiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwCkBAIC0zNSw2ICszNSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogY29uc3QgQ2xhc3NJbmZvIEpTVHlwZWRBcnJheVZpZXdQcm90
b3R5cGU6OnNfaW5mbyA9IHsiUHJvdG90eXBlIiwgJkpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU6
OkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwKICAgICBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUpfTsKIAorI3VuZGVmIE1BS0VfU19JTkZPCiAjZGVm
aW5lIE1BS0VfU19JTkZPKHR5cGUpIFwKICAgICB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBK
UyMjdHlwZSMjUHJvdG90eXBlOjpzX2luZm8gPSB7I3R5cGUgIlByb3RvdHlwZSIsICZKUyMjdHlw
ZSMjUHJvdG90eXBlOjpCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlMjI3R5cGUjI1Byb3RvdHlwZSl9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5cy5jcHAKaW5kZXggZDBhOTNjNDI1NTc0OGU3ZTU4NDFh
Njc4ODFhMTEyNGE0NjY5ZDBkNi4uMDkxODlkMmM1Y2E1YjUzNWRhNDMzMzE0NjkzNGJlY2ZkMzAz
ZjVjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFy
cmF5cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5
cy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyN1bmRlZiBNQUtF
X1NfSU5GTwogI2RlZmluZSBNQUtFX1NfSU5GTyh0eXBlKSBcCiAgICAgdGVtcGxhdGU8PiBjb25z
dCBDbGFzc0luZm8gSlMjI3R5cGUjI0FycmF5OjpzX2luZm8gPSB7IFwKICAgICAgICAgI3R5cGUg
IkFycmF5IiwgJkpTIyN0eXBlIyNBcnJheTo6QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsR2V0dGVy
RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbEdldHRlckZ1
bmN0aW9uLmNwcAppbmRleCAzZjZmMjgyMTUzZTA0YjMzYjEwZDkzNDA5NmNkNWIxNjI0NmYxMGNh
Li5iYTQ2YjMwMmM4MmE0MmI3YmY2ZGRkODhmMDQ2ZGU0ODVkODYwMWUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsR2V0dGVyRnVuY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxHZXR0ZXJGdW5jdGlvbi5jcHAKQEAg
LTMzLDE0ICszMywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIE51bGxH
ZXR0ZXJGdW5jdGlvbjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE51bGxHZXR0ZXJGdW5jdGlvbikgfTsK
IAorbmFtZXNwYWNlIE51bGxHZXR0ZXJGdW5jdGlvbkludGVybmFsIHsKIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZXR1cm5VbmRlZmluZWQoRXhlY1N0YXRlKikKIHsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQorfQogCiBDYWxs
VHlwZSBOdWxsR2V0dGVyRnVuY3Rpb246OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBj
YWxsRGF0YSkKIHsKLSAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsUmV0dXJuVW5k
ZWZpbmVkOworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IE51bGxHZXR0ZXJGdW5jdGlv
bkludGVybmFsOjpjYWxsUmV0dXJuVW5kZWZpbmVkOwogICAgIHJldHVybiBDYWxsVHlwZTo6SG9z
dDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNl
dHRlckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0
ZXJGdW5jdGlvbi5jcHAKaW5kZXggNTBjNWI4MGRjZjk1YTUzOTBkMWU2MDEwMWVlYmQ2YjU2NjY1
OWYyOC4uNmFmMGQxYTg1ZGYyMGZmMDgxYTk4N2NmZGRkYTY3ZDUxYWI2ZTBlNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3Bw
CkBAIC03MCw2ICs3MCw3IEBAIHN0YXRpYyBib29sIGNhbGxlcklzU3RyaWN0KEV4ZWNTdGF0ZSog
ZXhlYykKICAgICByZXR1cm4gaXRlci5jYWxsZXJJc1N0cmljdCgpOwogfQogCituYW1lc3BhY2Ug
TnVsbFNldHRlckZ1bmN0aW9uSW50ZXJuYWwgewogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbFJldHVyblVuZGVmaW5lZChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKQEAgLTc5LDEwICs4MCwxMSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsUmV0dXJuVW5kZWZpbmVkKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJTZXR0aW5nIGEgcHJvcGVydHkgdGhhdCBoYXMgb25seSBhIGdldHRlciIp
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KK30KIAog
Q2FsbFR5cGUgTnVsbFNldHRlckZ1bmN0aW9uOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0
YSYgY2FsbERhdGEpCiB7Ci0gICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbFJldHVy
blVuZGVmaW5lZDsKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBOdWxsU2V0dGVyRnVu
Y3Rpb25JbnRlcm5hbDo6Y2FsbFJldHVyblVuZGVmaW5lZDsKICAgICByZXR1cm4gQ2FsbFR5cGU6
Okhvc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQ
cm90b3R5cGUuY3BwCmluZGV4IGMxN2I1ZWJkZmExMmEwZjNlY2I2MmU2NjhhNjY5ZjNiYWQ3ZTdj
NTguLjYxM2NkMDkyNWViNTY3MDE5ZDA0ZDhlNTk0OGZhMjM4Zjk0YjA5NDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcApAQCAtMzUs
NyArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL2R0
b2EvZG91YmxlLWNvbnZlcnNpb24uaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdURjo6ZG91YmxlX2Nv
bnZlcnNpb247Cit1c2luZyBEb3VibGVUb1N0cmluZ0NvbnZlcnRlciA9IFdURjo6ZG91YmxlX2Nv
bnZlcnNpb246OkRvdWJsZVRvU3RyaW5nQ29udmVydGVyOwogCiAvLyBUbyBhdm9pZCBjb25mbGlj
dCB3aXRoIFdURjo6U3RyaW5nQnVpbGRlci4KIHR5cGVkZWYgV1RGOjpkb3VibGVfY29udmVyc2lv
bjo6U3RyaW5nQnVpbGRlciBEb3VibGVDb252ZXJzaW9uU3RyaW5nQnVpbGRlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNw
cAppbmRleCAzZGNhZWFhZmU1YjM4ZmJhNWJhOGFmOTc2NjBmNTFiYzY1OWZkMjQ1Li4wODc4MDQ2
OTVjZGYzNWE3NDk0YmJkNTg5NDQyOTA0ZWI5Y2E3MDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlRGVmZXJyZWRUaW1lci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZURlZmVycmVkVGltZXIuY3BwCkBAIC0zNCw3
ICszNCw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCituYW1lc3BhY2UgUHJvbWlzZURlZmVycmVk
VGltZXJJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAK
IFByb21pc2VEZWZlcnJlZFRpbWVyOjpQcm9taXNlRGVmZXJyZWRUaW1lcihWTSYgdm0pCiAgICAg
OiBCYXNlKCZ2bSkKQEAgLTU1LDcgKzU3LDcgQEAgdm9pZCBQcm9taXNlRGVmZXJyZWRUaW1lcjo6
ZG9Xb3JrKCkKICAgICAgICAgSlNQcm9taXNlRGVmZXJyZWQqIHRpY2tldDsKICAgICAgICAgVGFz
ayB0YXNrOwogICAgICAgICBzdGQ6OnRpZSh0aWNrZXQsIHRhc2spID0gbV90YXNrcy50YWtlTGFz
dCgpOwotICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiRG9pbmcgd29yayBvbiBwcm9taXNl
OiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworICAgICAgICBkYXRhTG9nTG5JZihQcm9taXNlRGVm
ZXJyZWRUaW1lckludGVybmFsOjp2ZXJib3NlLCAiRG9pbmcgd29yayBvbiBwcm9taXNlOiAiLCBS
YXdQb2ludGVyKHRpY2tldCkpOwogCiAgICAgICAgIC8vIFdlIG1heSBoYXZlIGFscmVhZHkgY2Fu
Y2VsZWQgdGhlc2UgcHJvbWlzZXMuCiAgICAgICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5jb250
YWlucyh0aWNrZXQpKSB7CkBAIC0xMDUsMTEgKzEwNywxMSBAQCB2b2lkIFByb21pc2VEZWZlcnJl
ZFRpbWVyOjphZGRQZW5kaW5nUHJvbWlzZShKU1Byb21pc2VEZWZlcnJlZCogdGlja2V0LCBWZWN0
b3I8UwogCiAgICAgYXV0byByZXN1bHQgPSBtX3BlbmRpbmdQcm9taXNlcy5hZGQodGlja2V0LCBW
ZWN0b3I8U3Ryb25nPEpTQ2VsbD4+KCkpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewot
ICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiQWRkaW5nIG5ldyBwZW5kaW5nIHByb21pc2U6
ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CisgICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VEZWZl
cnJlZFRpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJBZGRpbmcgbmV3IHBlbmRpbmcgcHJvbWlzZTog
IiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKICAgICAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJv
bmc8SlNDZWxsPigqbV92bSwgdGlja2V0KSk7CiAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSBXVEZNb3ZlKGRlcGVuZGVuY2llcyk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZGF0YUxv
Z0xuSWYodmVyYm9zZSwgIkFkZGluZyBuZXcgZGVwZW5kZW5jaWVzIGZvciBwcm9taXNlOiAiLCBS
YXdQb2ludGVyKHRpY2tldCkpOworICAgICAgICBkYXRhTG9nTG5JZihQcm9taXNlRGVmZXJyZWRU
aW1lckludGVybmFsOjp2ZXJib3NlLCAiQWRkaW5nIG5ldyBkZXBlbmRlbmNpZXMgZm9yIHByb21p
c2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CiAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUuYXBwZW5kVmVjdG9yKGRlcGVuZGVuY2llcyk7CiAgICAgfQogCkBAIC0xMjQsNyArMTI2LDcg
QEAgYm9vbCBQcm9taXNlRGVmZXJyZWRUaW1lcjo6Y2FuY2VsUGVuZGluZ1Byb21pc2UoSlNQcm9t
aXNlRGVmZXJyZWQqIHRpY2tldCkKICAgICBib29sIHJlc3VsdCA9IG1fcGVuZGluZ1Byb21pc2Vz
LnJlbW92ZSh0aWNrZXQpOwogCiAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgZGF0YUxvZ0xuSWYo
dmVyYm9zZSwgIkNhbmNlbGluZyBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworICAg
ICAgICBkYXRhTG9nTG5JZihQcm9taXNlRGVmZXJyZWRUaW1lckludGVybmFsOjp2ZXJib3NlLCAi
Q2FuY2VsaW5nIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CiAKICAgICByZXR1cm4g
cmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlw
ZVByb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxl
ci5jcHAKaW5kZXggZTMxNWM0MTJiOTMzMzBiMDVhZjY2NDA3MGNhMTE2Y2Q1M2U5MmRiNy4uMGY4
NWVmODgyODVjMmU4YjgxZDVmZjAwYmNhYTJiOTljZjZkYzgwYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwCkBAIC0zMiw3ICszMiw5IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCituYW1lc3BhY2UgVHlwZVByb2ZpbGVySW50ZXJuYWwgewogc3Rh
dGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBUeXBlUHJvZmlsZXI6OlR5cGVQ
cm9maWxlcigpCiAgICAgOiBtX25leHRVbmlxdWVWYXJpYWJsZUlEKDEpCkBAIC01OSw3ICs2MSw3
IEBAIHZvaWQgVHlwZVByb2ZpbGVyOjpsb2dUeXBlc0ZvclR5cGVMb2NhdGlvbihUeXBlTG9jYXRp
b24qIGxvY2F0aW9uLCBWTSYgdm0pCiAKIHZvaWQgVHlwZVByb2ZpbGVyOjppbnNlcnROZXdMb2Nh
dGlvbihUeXBlTG9jYXRpb24qIGxvY2F0aW9uKQogewotICAgIGlmICh2ZXJib3NlKQorICAgIGlm
IChUeXBlUHJvZmlsZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZ0YoIlJlZ2lz
dGVyaW5nIGxvY2F0aW9uOjogZGl2b3RTdGFydDoldSwgZGl2b3RFbmQ6JXVcbiIsIGxvY2F0aW9u
LT5tX2Rpdm90U3RhcnQsIGxvY2F0aW9uLT5tX2Rpdm90RW5kKTsKIAogICAgIGlmICghbV9idWNr
ZXRNYXAuY29udGFpbnMobG9jYXRpb24tPm1fc291cmNlSUQpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcAppbmRleCA4NWM0OWQwNDZi
YWZlYWM3YzJmZGVhMjE1MjU4ZDNjNDRlZmNkMTE1Li41M2Q3M2U4OGIxNGUzODZiNzM3OGI4ODI0
N2I3NzY5NjRmNmI1N2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlUHJvZmlsZXJMb2cuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVQcm9maWxlckxvZy5jcHAKQEAgLTM3LDcgKzM3LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKK25hbWVzcGFjZSBUeXBlUHJvZmlsZXJMb2dJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9v
bCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIHZvaWQgVHlwZVByb2ZpbGVyTG9nOjppbml0aWFsaXpl
TG9nKCkKIHsKQEAgLTU2LDcgKzU4LDcgQEAgVHlwZVByb2ZpbGVyTG9nOjp+VHlwZVByb2ZpbGVy
TG9nKCkKIHZvaWQgVHlwZVByb2ZpbGVyTG9nOjpwcm9jZXNzTG9nRW50cmllcyhjb25zdCBTdHJp
bmcmIHJlYXNvbikKIHsKICAgICBkb3VibGUgYmVmb3JlID0gMDsKLSAgICBpZiAodmVyYm9zZSkg
eworICAgIGlmIChUeXBlUHJvZmlsZXJMb2dJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICBk
YXRhTG9nKCJQcm9jZXNzIGNhbGxlcjonIiwgcmVhc29uLCAiJyIpOwogICAgICAgICBiZWZvcmUg
PSBjdXJyZW50VGltZU1TKCk7CiAgICAgfQpAQCAtOTUsNyArOTcsNyBAQCB2b2lkIFR5cGVQcm9m
aWxlckxvZzo6cHJvY2Vzc0xvZ0VudHJpZXMoY29uc3QgU3RyaW5nJiByZWFzb24pCiAgICAgLy8g
cGF1c2VzIGFuZCBjYXVzZXMgdGhlIGNvbGxlY3RvciB0byBtYXJrIHRoZSBsb2cuCiAgICAgbV9j
dXJyZW50TG9nRW50cnlQdHIgPSBtX2xvZ1N0YXJ0UHRyOwogCi0gICAgaWYgKHZlcmJvc2UpIHsK
KyAgICBpZiAoVHlwZVByb2ZpbGVyTG9nSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZG91
YmxlIGFmdGVyID0gY3VycmVudFRpbWVNUygpOwogICAgICAgICBkYXRhTG9nRigiIFByb2Nlc3Np
bmcgdGhlIGxvZyB0b29rOiAnJWYnIG1zXG4iLCBhZnRlciAtIGJlZm9yZSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4
IDAwYWMzYzFhZGJkN2FjODJkMjE1OTBmNjAxMjhiOTRhNDAwYzYyOGUuLmFkN2Q2MjFlYzg3ODg1
YWMwMzZkODEzMTNkNWIwZmEwOTFhNGVmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTc2LDcgKzc2LDkgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIHVzaW5nIG5hbWVzcGFjZSBCMzsKIAogbmFtZXNwYWNl
IHsKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIFdhc21CM0lSR2VuZXJh
dG9ySW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogfQog
CiBjbGFzcyBCM0lSR2VuZXJhdG9yIHsKQEAgLTE1NjYsOSArMTU2OCw5IEBAIEV4cGVjdGVkPHN0
ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiwgU3RyaW5nPiBwYXJzZUFuZENvbXBpbGUo
Q29tcGlsYXRpb25DCiAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpCiAgICAgICAgIHZhbGlkYXRl
KHByb2NlZHVyZSwgIkFmdGVyIHBhcnNpbmc6XG4iKTsKIAotICAgIGRhdGFMb2dJZih2ZXJib3Nl
LCAiUHJlIFNTQTogIiwgcHJvY2VkdXJlKTsKKyAgICBkYXRhTG9nSWYoV2FzbUIzSVJHZW5lcmF0
b3JJbnRlcm5hbDo6dmVyYm9zZSwgIlByZSBTU0E6ICIsIHByb2NlZHVyZSk7CiAgICAgZml4U1NB
KHByb2NlZHVyZSk7Ci0gICAgZGF0YUxvZ0lmKHZlcmJvc2UsICJQb3N0IFNTQTogIiwgcHJvY2Vk
dXJlKTsKKyAgICBkYXRhTG9nSWYoV2FzbUIzSVJHZW5lcmF0b3JJbnRlcm5hbDo6dmVyYm9zZSwg
IlBvc3QgU1NBOiAiLCBwcm9jZWR1cmUpOwogICAgIAogICAgIHsKICAgICAgICAgQjM6OnByZXBh
cmVGb3JHZW5lcmF0aW9uKHByb2NlZHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQkJRUGxhbi5jcHAKaW5kZXggNTBmZWI3MzBiMDBmZGQ5ZDBmMDE2ZTM2NjkwODEwNzIyZGJh
ZGIxNS4uMjJlZGQxNjAxM2U1MTk2ZmU3NGFiZGQ4NDBjNmU0YmNjOTc1MGQwYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcApAQCAtNDksNyArNDksOSBAQAog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCituYW1lc3BhY2UgV2FzbUJCUVBs
YW5JbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIEJC
UVBsYW46OkJCUVBsYW4oVk0qIHZtLCBSZWY8TW9kdWxlSW5mb3JtYXRpb24+IGluZm8sIEFzeW5j
V29yayB3b3JrLCBDb21wbGV0aW9uVGFzayYmIHRhc2spCiAgICAgOiBCYXNlKHZtLCBXVEZNb3Zl
KGluZm8pLCBXVEZNb3ZlKHRhc2spKQpAQCAtODYsNyArODgsNyBAQCBjb25zdCBjaGFyKiBCQlFQ
bGFuOjpzdGF0ZVN0cmluZyhTdGF0ZSBzdGF0ZSkKIHZvaWQgQkJRUGxhbjo6bW92ZVRvU3RhdGUo
U3RhdGUgc3RhdGUpCiB7CiAgICAgQVNTRVJUKHN0YXRlID49IG1fc3RhdGUpOwotICAgIGRhdGFM
b2dMbklmKHZlcmJvc2UgJiYgc3RhdGUgIT0gbV9zdGF0ZSwgIm1vdmluZyB0byBzdGF0ZTogIiwg
c3RhdGVTdHJpbmcoc3RhdGUpLCAiIGZyb20gc3RhdGU6ICIsIHN0YXRlU3RyaW5nKG1fc3RhdGUp
KTsKKyAgICBkYXRhTG9nTG5JZihXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlICYmIHN0YXRl
ICE9IG1fc3RhdGUsICJtb3ZpbmcgdG8gc3RhdGU6ICIsIHN0YXRlU3RyaW5nKHN0YXRlKSwgIiBm
cm9tIHN0YXRlOiAiLCBzdGF0ZVN0cmluZyhtX3N0YXRlKSk7CiAgICAgbV9zdGF0ZSA9IHN0YXRl
OwogfQogCkBAIC05NSw5ICs5Nyw5IEBAIGJvb2wgQkJRUGxhbjo6cGFyc2VBbmRWYWxpZGF0ZU1v
ZHVsZSgpCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkluaXRpYWwpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgInN0YXJ0aW5nIHZhbGlkYXRpb24i
KTsKKyAgICBkYXRhTG9nTG5JZihXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlLCAic3RhcnRp
bmcgdmFsaWRhdGlvbiIpOwogICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lOwotICAgIGlmICh2
ZXJib3NlIHx8IE9wdGlvbnM6OnJlcG9ydENvbXBpbGVUaW1lcygpKQorICAgIGlmIChXYXNtQkJR
UGxhbkludGVybmFsOjp2ZXJib3NlIHx8IE9wdGlvbnM6OnJlcG9ydENvbXBpbGVUaW1lcygpKQog
ICAgICAgICBzdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAogICAgIHsKQEAgLTEx
MSw3ICsxMTMsNyBAQCBib29sIEJCUVBsYW46OnBhcnNlQW5kVmFsaWRhdGVNb2R1bGUoKQogCiAg
ICAgY29uc3QgYXV0byYgZnVuY3Rpb25Mb2NhdGlvbnMgPSBtX21vZHVsZUluZm9ybWF0aW9uLT5m
dW5jdGlvbkxvY2F0aW9uSW5CaW5hcnk7CiAgICAgZm9yICh1bnNpZ25lZCBmdW5jdGlvbkluZGV4
ID0gMDsgZnVuY3Rpb25JbmRleCA8IGZ1bmN0aW9uTG9jYXRpb25zLnNpemUoKTsgKytmdW5jdGlv
bkluZGV4KSB7Ci0gICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJQcm9jZXNzaW5nIGZ1bmN0
aW9uIHN0YXJ0aW5nIGF0OiAiLCBmdW5jdGlvbkxvY2F0aW9uc1tmdW5jdGlvbkluZGV4XS5zdGFy
dCwgIiBhbmQgZW5kaW5nIGF0OiAiLCBmdW5jdGlvbkxvY2F0aW9uc1tmdW5jdGlvbkluZGV4XS5l
bmQpOworICAgICAgICBkYXRhTG9nTG5JZihXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlLCAi
UHJvY2Vzc2luZyBmdW5jdGlvbiBzdGFydGluZyBhdDogIiwgZnVuY3Rpb25Mb2NhdGlvbnNbZnVu
Y3Rpb25JbmRleF0uc3RhcnQsICIgYW5kIGVuZGluZyBhdDogIiwgZnVuY3Rpb25Mb2NhdGlvbnNb
ZnVuY3Rpb25JbmRleF0uZW5kKTsKICAgICAgICAgY29uc3QgdWludDhfdCogZnVuY3Rpb25TdGFy
dCA9IG1fc291cmNlICsgZnVuY3Rpb25Mb2NhdGlvbnNbZnVuY3Rpb25JbmRleF0uc3RhcnQ7CiAg
ICAgICAgIHNpemVfdCBmdW5jdGlvbkxlbmd0aCA9IGZ1bmN0aW9uTG9jYXRpb25zW2Z1bmN0aW9u
SW5kZXhdLmVuZCAtIGZ1bmN0aW9uTG9jYXRpb25zW2Z1bmN0aW9uSW5kZXhdLnN0YXJ0OwogICAg
ICAgICBBU1NFUlQoZnVuY3Rpb25MZW5ndGggPD0gbV9zb3VyY2VMZW5ndGgpOwpAQCAtMTIwLDcg
KzEyMiw3IEBAIGJvb2wgQkJRUGxhbjo6cGFyc2VBbmRWYWxpZGF0ZU1vZHVsZSgpCiAKICAgICAg
ICAgYXV0byB2YWxpZGF0aW9uUmVzdWx0ID0gdmFsaWRhdGVGdW5jdGlvbihmdW5jdGlvblN0YXJ0
LCBmdW5jdGlvbkxlbmd0aCwgc2lnbmF0dXJlLCBtX21vZHVsZUluZm9ybWF0aW9uLmdldCgpKTsK
ICAgICAgICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0KSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9z
ZSkgeworICAgICAgICAgICAgaWYgKFdhc21CQlFQbGFuSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAg
ICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnVuY3Rpb25MZW5ndGg7ICsr
aSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KGZ1bmN0aW9uU3RhcnRbaV0pKSwgIiwgIik7CiAgICAgICAgICAgICAgICAgZGF0
YUxvZ0xuKCk7CkBAIC0xMzAsNyArMTMyLDcgQEAgYm9vbCBCQlFQbGFuOjpwYXJzZUFuZFZhbGlk
YXRlTW9kdWxlKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICh2ZXJib3NlIHx8IE9wdGlv
bnM6OnJlcG9ydENvbXBpbGVUaW1lcygpKQorICAgIGlmIChXYXNtQkJRUGxhbkludGVybmFsOjp2
ZXJib3NlIHx8IE9wdGlvbnM6OnJlcG9ydENvbXBpbGVUaW1lcygpKQogICAgICAgICBkYXRhTG9n
TG4oIlRvb2sgIiwgKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lKS5taWNyb3NlY29u
ZHMoKSwgIiB1cyB0byB2YWxpZGF0ZSBtb2R1bGUiKTsKIAogICAgIG1vdmVUb1N0YXRlKFN0YXRl
OjpWYWxpZGF0ZWQpOwpAQCAtMTQyLDcgKzE0NCw3IEBAIGJvb2wgQkJRUGxhbjo6cGFyc2VBbmRW
YWxpZGF0ZU1vZHVsZSgpCiB2b2lkIEJCUVBsYW46OnByZXBhcmUoKQogewogICAgIEFTU0VSVCht
X3N0YXRlID09IFN0YXRlOjpWYWxpZGF0ZWQpOwotICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJT
dGFydGluZyBwcmVwYXJhdGlvbiIpOworICAgIGRhdGFMb2dMbklmKFdhc21CQlFQbGFuSW50ZXJu
YWw6OnZlcmJvc2UsICJTdGFydGluZyBwcmVwYXJhdGlvbiIpOwogCiAgICAgYXV0byB0cnlSZXNl
cnZlQ2FwYWNpdHkgPSBbdGhpc10gKGF1dG8mIHZlY3Rvciwgc2l6ZV90IHNpemUsIGNvbnN0IGNo
YXIqIHdoYXQpIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCF2ZWN0b3IudHJ5UmVzZXJ2ZUNhcGFj
aXR5KHNpemUpKSkgewpAQCAtMTc0LDcgKzE3Niw3IEBAIHZvaWQgQkJRUGxhbjo6cHJlcGFyZSgp
CiAgICAgICAgIGlmIChpbXBvcnQtPmtpbmQgIT0gRXh0ZXJuYWxLaW5kOjpGdW5jdGlvbikKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB1bnNpZ25lZCBpbXBvcnRGdW5jdGlvbkluZGV4
ID0gbV93YXNtVG9XYXNtRXhpdFN0dWJzLnNpemUoKTsKLSAgICAgICAgZGF0YUxvZ0xuSWYodmVy
Ym9zZSwgIlByb2Nlc3NpbmcgaW1wb3J0IGZ1bmN0aW9uIG51bWJlciAiLCBpbXBvcnRGdW5jdGlv
bkluZGV4LCAiOiAiLCBtYWtlU3RyaW5nKGltcG9ydC0+bW9kdWxlKSwgIjogIiwgbWFrZVN0cmlu
ZyhpbXBvcnQtPmZpZWxkKSk7CisgICAgICAgIGRhdGFMb2dMbklmKFdhc21CQlFQbGFuSW50ZXJu
YWw6OnZlcmJvc2UsICJQcm9jZXNzaW5nIGltcG9ydCBmdW5jdGlvbiBudW1iZXIgIiwgaW1wb3J0
RnVuY3Rpb25JbmRleCwgIjogIiwgbWFrZVN0cmluZyhpbXBvcnQtPm1vZHVsZSksICI6ICIsIG1h
a2VTdHJpbmcoaW1wb3J0LT5maWVsZCkpOwogICAgICAgICBhdXRvIGJpbmRpbmcgPSB3YXNtVG9X
YXNtKGltcG9ydEZ1bmN0aW9uSW5kZXgpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIWJpbmRpbmcp
KSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGJpbmRpbmcuZXJyb3IoKSkgewpAQCAtMjMwLDcgKzIz
Miw3IEBAIHB1YmxpYzoKIHZvaWQgQkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9ucyhDb21waWxhdGlv
bkVmZm9ydCBlZmZvcnQpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPj0gU3RhdGU6OlByZXBhcmVk
KTsKLSAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiU3RhcnRpbmcgY29tcGlsYXRpb24iKTsKKyAg
ICBkYXRhTG9nTG5JZihXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlLCAiU3RhcnRpbmcgY29t
cGlsYXRpb24iKTsKIAogICAgIGlmICghaGFzV29yaygpKQogICAgICAgICByZXR1cm47CkBAIC0y
OTQsNyArMjk2LDcgQEAgdm9pZCBCQlFQbGFuOjpjb21waWxlRnVuY3Rpb25zKENvbXBpbGF0aW9u
RWZmb3J0IGVmZm9ydCkKIHZvaWQgQkJRUGxhbjo6Y29tcGxldGUoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImIGxvY2tlcikKIHsKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6Q29tcGlsZWQgfHwg
bV9jdXJyZW50SW5kZXggPj0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+ZnVuY3Rpb25Mb2NhdGlvbklu
QmluYXJ5LnNpemUoKSk7Ci0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIlN0YXJ0aW5nIENvbXBs
ZXRpb24iKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlLCAi
U3RhcnRpbmcgQ29tcGxldGlvbiIpOwogCiAgICAgaWYgKCFmYWlsZWQoKSAmJiBtX3N0YXRlID09
IFN0YXRlOjpDb21waWxlZCkgewogICAgICAgICBmb3IgKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgg
PSAwOyBmdW5jdGlvbkluZGV4IDwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+ZnVuY3Rpb25Mb2NhdGlv
bkluQmluYXJ5LnNpemUoKTsgZnVuY3Rpb25JbmRleCsrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCmluZGV4IGU4NmZk
NDc5OTBlODg4OGQyNmZkZGZhNzM5NGU0NzZhYmNjODAxODQuLjJiMWQ4MjhlMjdjNzUzNTBmZGQ5
NGZjMTk1Y2U2NGQ3YzFlYzVhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCkBAIC00Miw4ICs0MiwxMCBAQAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAogbmFtZXNwYWNlIHsKK25hbWVzcGFjZSBX
YXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9z
ZSA9IGZhbHNlOwogfQorfQogCiBzdGF0aWMgU3RhdGljTG9jayBjb2RlTG9jYXRpb25zTG9jazsK
IHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxzdGQ6OnR1cGxlPHZvaWQqLCB2b2lk
Kj4+PiBjb2RlTG9jYXRpb25zOyAvLyAoc3RhcnQsIGVuZCkKQEAgLTU1LDMzICs1NywzMyBAQCBz
dGF0aWMgYm9vbCBmYXN0SGFuZGxlckluc3RhbGxlZCB7IGZhbHNlIH07CiBzdGF0aWMgU2lnbmFs
QWN0aW9uIHRyYXBIYW5kbGVyKFNpZ25hbCwgU2lnSW5mbyYgc2lnSW5mbywgUGxhdGZvcm1SZWdp
c3RlcnMmIGNvbnRleHQpCiB7CiAgICAgdm9pZCogZmF1bHRpbmdJbnN0cnVjdGlvbiA9IE1hY2hp
bmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIoY29udGV4dCk7Ci0gICAgZGF0YUxvZ0xuSWYo
dmVyYm9zZSwgInN0YXJ0aW5nIGhhbmRsZXIgZm9yIGZhdWx0IGF0OiAiLCBSYXdQb2ludGVyKGZh
dWx0aW5nSW5zdHJ1Y3Rpb24pKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5k
bGVySW50ZXJuYWw6OnZlcmJvc2UsICJzdGFydGluZyBoYW5kbGVyIGZvciBmYXVsdCBhdDogIiwg
UmF3UG9pbnRlcihmYXVsdGluZ0luc3RydWN0aW9uKSk7CiAKLSAgICBkYXRhTG9nTG5JZih2ZXJi
b3NlLCAiSklUIG1lbW9yeSBzdGFydDogIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZv
aWQqPihzdGFydE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCkpLCAiIGVuZDogIiwgUmF3UG9p
bnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihlbmRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBv
b2wpKSk7CisgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2
ZXJib3NlLCAiSklUIG1lbW9yeSBzdGFydDogIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0
PHZvaWQqPihzdGFydE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCkpLCAiIGVuZDogIiwgUmF3
UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihlbmRPZkZpeGVkRXhlY3V0YWJsZU1lbW9y
eVBvb2wpKSk7CiAgICAgLy8gRmlyc3Qgd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgYXJlIGluIEpJ
VCBjb2RlIGJlZm9yZSB3ZSBjYW4gYXF1aXJlIGFueSBsb2Nrcy4gT3RoZXJ3aXNlLAogICAgIC8v
IHdlIG1pZ2h0IGhhdmUgY3Jhc2hlZCBpbiBjb2RlIHRoYXQgaXMgYWxyZWFkeSBob2xkaW5nIG9u
ZSBvZiB0aGUgbG9ja3Mgd2Ugd2FudCB0byBhcXVpcmUuCiAgICAgaWYgKGlzSklUUEMoZmF1bHRp
bmdJbnN0cnVjdGlvbikpIHsKICAgICAgICAgYm9vbCBmYXVsdGVkSW5BY3RpdmVGYXN0TWVtb3J5
ID0gZmFsc2U7CiAgICAgICAgIHsKICAgICAgICAgICAgIHZvaWQqIGZhdWx0aW5nQWRkcmVzcyA9
IHNpZ0luZm8uZmF1bHRpbmdBZGRyZXNzOwotICAgICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9z
ZSwgImNoZWNraW5nIGZhdWx0aW5nIGFkZHJlc3M6ICIsIFJhd1BvaW50ZXIoZmF1bHRpbmdBZGRy
ZXNzKSwgIiBpcyBpbiBhbiBhY3RpdmUgZmFzdCBtZW1vcnkiKTsKKyAgICAgICAgICAgIGRhdGFM
b2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImNoZWNraW5n
IGZhdWx0aW5nIGFkZHJlc3M6ICIsIFJhd1BvaW50ZXIoZmF1bHRpbmdBZGRyZXNzKSwgIiBpcyBp
biBhbiBhY3RpdmUgZmFzdCBtZW1vcnkiKTsKICAgICAgICAgICAgIGZhdWx0ZWRJbkFjdGl2ZUZh
c3RNZW1vcnkgPSBXYXNtOjpNZW1vcnk6OmFkZHJlc3NJc0luQWN0aXZlRmFzdE1lbW9yeShmYXVs
dGluZ0FkZHJlc3MpOwogICAgICAgICB9CiAgICAgICAgIGlmIChmYXVsdGVkSW5BY3RpdmVGYXN0
TWVtb3J5KSB7Ci0gICAgICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiZm91bmQgYWN0aXZl
IGZhc3QgbWVtb3J5IGZvciBmYXVsdGluZyBhZGRyZXNzIik7CisgICAgICAgICAgICBkYXRhTG9n
TG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJmb3VuZCBhY3Rp
dmUgZmFzdCBtZW1vcnkgZm9yIGZhdWx0aW5nIGFkZHJlc3MiKTsKICAgICAgICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKGNvZGVMb2NhdGlvbnNMb2NrKTsKICAgICAgICAgICAgIGZvciAoYXV0byBy
YW5nZSA6IGNvZGVMb2NhdGlvbnMuZ2V0KCkpIHsKICAgICAgICAgICAgICAgICB2b2lkKiBzdGFy
dDsKICAgICAgICAgICAgICAgICB2b2lkKiBlbmQ7CiAgICAgICAgICAgICAgICAgc3RkOjp0aWUo
c3RhcnQsIGVuZCkgPSByYW5nZTsKLSAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3Nl
LCAiZnVuY3Rpb24gc3RhcnQ6ICIsIFJhd1BvaW50ZXIoc3RhcnQpLCAiIGVuZDogIiwgUmF3UG9p
bnRlcihlbmQpKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxI
YW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJmdW5jdGlvbiBzdGFydDogIiwgUmF3UG9pbnRlcihz
dGFydCksICIgZW5kOiAiLCBSYXdQb2ludGVyKGVuZCkpOwogICAgICAgICAgICAgICAgIGlmIChz
dGFydCA8PSBmYXVsdGluZ0luc3RydWN0aW9uICYmIGZhdWx0aW5nSW5zdHJ1Y3Rpb24gPCBlbmQp
IHsKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgImZvdW5kIG1hdGNo
Iik7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRs
ZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZvdW5kIG1hdGNoIik7CiAgICAgICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBleGNlcHRpb25TdHViID0gVGh1bmtzOjpzaW5nbGV0b24o
KS5leGlzdGluZ1N0dWIodGhyb3dFeGNlcHRpb25Gcm9tV2FzbVRodW5rR2VuZXJhdG9yKTsKICAg
ICAgICAgICAgICAgICAgICAgLy8gSWYgZm9yIHdoYXRldmVyIHJlYXNvbiB3ZSBkb24ndCBoYXZl
IGEgc3R1YiB0aGVuIHdlIHNob3VsZCBqdXN0IHRyZWF0IHRoaXMgbGlrZSBhIHJlZ3VsYXIgY3Jh
c2guCiAgICAgICAgICAgICAgICAgICAgIGlmICghZXhjZXB0aW9uU3R1YikKICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZih2ZXJi
b3NlLCAiZm91bmQgc3R1YjogIiwgUmF3UG9pbnRlcihleGNlcHRpb25TdHViLmNvZGUoKS5leGVj
dXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21G
YXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZvdW5kIHN0dWI6ICIsIFJhd1Bv
aW50ZXIoZXhjZXB0aW9uU3R1Yi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAg
ICAgICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6YXJndW1lbnRQb2ludGVyPDE+KGNvbnRleHQp
ID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNNZW1v
cnlBY2Nlc3MpOwogICAgICAgICAgICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rp
b25Qb2ludGVyKGNvbnRleHQpID0gZXhjZXB0aW9uU3R1Yi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNpZ25hbEFjdGlvbjo6SGFuZGxlZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAppbmRleCA1OTE4Zjky
YmI4MGJiZGVlNTQwMTA0NzEzMWQ4MzJiZDE5NmJmNzViLi43NGNmNjUzNDk3NTI1Y2UyNjFkNDBj
NzJjNDYyM2FjZDgwZjY1Y2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtT01HUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9N
R1BsYW4uY3BwCkBAIC00Nyw3ICs0Nyw5IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
V2FzbSB7CiAKK25hbWVzcGFjZSBXYXNtT01HUGxhbkludGVybmFsIHsKIHN0YXRpYyBjb25zdCBi
b29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogT01HUGxhbjo6T01HUGxhbihSZWY8TW9kdWxlPiBt
b2R1bGUsIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIE1lbW9yeU1vZGUgbW9kZSwgQ29tcGxldGlv
blRhc2smJiB0YXNrKQogICAgIDogQmFzZShudWxscHRyLCBtYWtlUmVmKGNvbnN0X2Nhc3Q8TW9k
dWxlSW5mb3JtYXRpb24mPihtb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkpKSwgV1RGTW92ZSh0
YXNrKSkKQEAgLTU4LDcgKzYwLDcgQEAgT01HUGxhbjo6T01HUGxhbihSZWY8TW9kdWxlPiBtb2R1
bGUsIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIE1lbW9yeU1vZGUgbW9kZSwgQ28KICAgICBzZXRN
b2RlKG1vZGUpOwogICAgIEFTU0VSVChtX2NvZGVCbG9jay0+cnVubmFibGUoKSk7CiAgICAgQVNT
RVJUKG1fY29kZUJsb2NrLnB0cigpID09IG1fbW9kdWxlLT5jb2RlQmxvY2tGb3IobV9tb2RlKSk7
Ci0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIlN0YXJ0aW5nIE9NRyBwbGFuIGZvciAiLCBmdW5j
dGlvbkluZGV4LCAiIG9mIG1vZHVsZTogIiwgUmF3UG9pbnRlcigmbV9tb2R1bGUuZ2V0KCkpKTsK
KyAgICBkYXRhTG9nTG5JZihXYXNtT01HUGxhbkludGVybmFsOjp2ZXJib3NlLCAiU3RhcnRpbmcg
T01HIHBsYW4gZm9yICIsIGZ1bmN0aW9uSW5kZXgsICIgb2YgbW9kdWxlOiAiLCBSYXdQb2ludGVy
KCZtX21vZHVsZS5nZXQoKSkpOwogfQogCiB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGlsYXRpb25F
ZmZvcnQpCkBAIC0xMzgsOSArMTQwLDkgQEAgdm9pZCBPTUdQbGFuOjp3b3JrKENvbXBpbGF0aW9u
RWZmb3J0KQogCiAgICAgICAgIGF1dG8gcmVwYXRjaENhbGxzID0gWyZdIChjb25zdCBWZWN0b3I8
VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mICBjYWxsc2l0ZXMpIHsKICAgICAgICAgICAgIGZvciAo
YXV0byYgY2FsbCA6IGNhbGxzaXRlcykgewotICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKHZl
cmJvc2UsICJDb25zaWRlcmluZyByZXBhdGNoaW5nIGNhbGwgYXQ6ICIsIFJhd1BvaW50ZXIoY2Fs
bC5jYWxsTG9jYXRpb24uZGF0YUxvY2F0aW9uKCkpLCAiIHRoYXQgdGFyZ2V0cyAiLCBjYWxsLmZ1
bmN0aW9uSW5kZXhTcGFjZSk7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbU9NR1Bs
YW5JbnRlcm5hbDo6dmVyYm9zZSwgIkNvbnNpZGVyaW5nIHJlcGF0Y2hpbmcgY2FsbCBhdDogIiwg
UmF3UG9pbnRlcihjYWxsLmNhbGxMb2NhdGlvbi5kYXRhTG9jYXRpb24oKSksICIgdGhhdCB0YXJn
ZXRzICIsIGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlKTsKICAgICAgICAgICAgICAgICBpZiAoY2Fs
bC5mdW5jdGlvbkluZGV4U3BhY2UgPT0gZnVuY3Rpb25JbmRleFNwYWNlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJSZXBhdGNoaW5nIGNhbGwgYXQ6ICIsIFJh
d1BvaW50ZXIoY2FsbC5jYWxsTG9jYXRpb24uZGF0YUxvY2F0aW9uKCkpLCAiIHRvICIsIFJhd1Bv
aW50ZXIoZW50cnlwb2ludCkpOworICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihXYXNt
T01HUGxhbkludGVybmFsOjp2ZXJib3NlLCAiUmVwYXRjaGluZyBjYWxsIGF0OiAiLCBSYXdQb2lu
dGVyKGNhbGwuY2FsbExvY2F0aW9uLmRhdGFMb2NhdGlvbigpKSwgIiB0byAiLCBSYXdQb2ludGVy
KGVudHJ5cG9pbnQpKTsKICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0
Y2hOZWFyQ2FsbChjYWxsLmNhbGxMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoZW50cnlwb2lu
dCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTE1Niw3ICsxNTgsNyBA
QCB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGlsYXRpb25FZmZvcnQpCiAgICAgICAgIHJlcGF0Y2hD
YWxscyh1bmxpbmtlZENhbGxzKTsKICAgICB9CiAKLSAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAi
RmluaXNoZWQgd2l0aCB0aWVyIHVwIGNvdW50IGF0OiAiLCBtX2NvZGVCbG9jay0+dGllclVwQ291
bnQobV9mdW5jdGlvbkluZGV4KS5jb3VudCgpKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtT01HUGxh
bkludGVybmFsOjp2ZXJib3NlLCAiRmluaXNoZWQgd2l0aCB0aWVyIHVwIGNvdW50IGF0OiAiLCBt
X2NvZGVCbG9jay0+dGllclVwQ291bnQobV9mdW5jdGlvbkluZGV4KS5jb3VudCgpKTsKICAgICBj
b21wbGV0ZShob2xkTG9jayhtX2xvY2spKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVBsYW4uY3BwCmluZGV4IDE0ODNhYzc0ODkyYjJmMTY0MmE2Y2IzNjBiYzY0OTg3YmNmNWYx
MWYuLmJhMjdjZjlmOTZmNTU1MGYyZjQ4MTJlMDkxMjRiNWJmODEwMDVhY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKQEAgLTQ3LDcgKzQ3LDkgQEAKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAorbmFtZXNwYWNlIFdhc21QbGFuSW50ZXJuYWwg
ewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBQbGFuOjpQbGFuKFZN
KiB2bSwgUmVmPE1vZHVsZUluZm9ybWF0aW9uPiBpbmZvLCBDb21wbGV0aW9uVGFzayYmIHRhc2sp
CiAgICAgOiBtX21vZHVsZUluZm9ybWF0aW9uKFdURk1vdmUoaW5mbykpCkBAIC0xMjgsNyArMTMw
LDcgQEAgYm9vbCBQbGFuOjp0cnlSZW1vdmVWTUFuZENhbmNlbElmTGFzdChWTSYgdm0pCiAKIHZv
aWQgUGxhbjo6ZmFpbChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBTdHJpbmcmJiBlcnJv
ck1lc3NhZ2UpCiB7Ci0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgImZhaWxpbmcgd2l0aCBtZXNz
YWdlOiAiLCBlcnJvck1lc3NhZ2UpOworICAgIGRhdGFMb2dMbklmKFdhc21QbGFuSW50ZXJuYWw6
OnZlcmJvc2UsICJmYWlsaW5nIHdpdGggbWVzc2FnZTogIiwgZXJyb3JNZXNzYWdlKTsKICAgICBt
X2Vycm9yTWVzc2FnZSA9IFdURk1vdmUoZXJyb3JNZXNzYWdlKTsKICAgICBjb21wbGV0ZShsb2Nr
ZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25h
dHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcApp
bmRleCBiMjI5OGQ2NWNiYWI4ZDUwYmU4N2UwMjJkYTQzYmI2MjJjNThmZTdiLi44YjYwMGVkMzg2
NDQzMTI4ODJmMTNjNWY0OWZjOGZkOWU2NzkyOTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcApAQCAtMzYsNyArMzYsOSBAQAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBXYXNtIHsKIAogbmFtZXNwYWNlIHsKLWNvbnN0IGJvb2wgdmVyYm9zZSA9
IGZhbHNlOworbmFtZXNwYWNlIFdhc21TaWduYXR1cmVJbnRlcm5hbCB7CitzdGF0aWMgY29uc3Qg
Ym9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiB9CiAKIFN0cmluZyBTaWduYXR1cmU6OnRvU3RyaW5n
KCkgY29uc3QKQEAgLTEwMyw3ICsxMDUsNyBAQCBzdGQ6OnBhaXI8U2lnbmF0dXJlSW5kZXgsIFJl
ZjxTaWduYXR1cmU+PiBTaWduYXR1cmVJbmZvcm1hdGlvbjo6YWRvcHQoUmVmPFNpZ25hdAogICAg
ICAgICArK2luZm8ubV9uZXh0SW5kZXg7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZm8ubV9u
ZXh0SW5kZXggPiBuZXh0VmFsdWUpOyAvLyBjcmFzaCBvbiBvdmVyZmxvdy4KICAgICAgICAgQVNT
RVJUKG5leHRWYWx1ZSA9PSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKLSAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgIGlmIChXYXNtU2lnbmF0dXJlSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICBkYXRhTG9nTG4oIkFkb3B0IG5ldyBzaWduYXR1cmUgIiwgc2lnbmF0dXJlLmdl
dCgpLCAiIHdpdGggaW5kZXggIiwgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSwgIiBoYXNoOiAi
LCBzaWduYXR1cmUtPmhhc2goKSk7CiAKICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBpbmZvLm1f
aW5kZXhNYXAuYWRkKG5leHRWYWx1ZSwgc2lnbmF0dXJlLmNvcHlSZWYoKSk7CkBAIC0xMTEsNyAr
MTEzLDcgQEAgc3RkOjpwYWlyPFNpZ25hdHVyZUluZGV4LCBSZWY8U2lnbmF0dXJlPj4gU2lnbmF0
dXJlSW5mb3JtYXRpb246OmFkb3B0KFJlZjxTaWduYXQKICAgICAgICAgQVNTRVJUKGluZm8ubV9p
bmRleE1hcC5zaXplKCkgPT0gaW5mby5tX3NpZ25hdHVyZU1hcC5zaXplKCkpOwogICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3BhaXIobmV4dFZhbHVlLCBXVEZNb3ZlKHNpZ25hdHVyZSkpOwogICAg
IH0KLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoV2FzbVNpZ25hdHVyZUludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICBkYXRhTG9nTG4oIkV4aXN0aW5nIHNpZ25hdHVyZSAiLCBzaWduYXR1cmUu
Z2V0KCksICIgd2l0aCBpbmRleCAiLCBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLCAiIGhhc2g6
ICIsIHNpZ25hdHVyZS0+aGFzaCgpKTsKICAgICBBU1NFUlQoYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSAhPSBTaWduYXR1cmU6OmludmFsaWRJbmRleCk7CiAgICAgQVNTRVJUKGluZm8ubV9pbmRl
eE1hcC5jb250YWlucyhhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcAppbmRleCA3NmE4N2FjMWI0NzM2ZjNjZjM3
YzM1MzlkYmM5NjFmNjc4NmEwMTM0Li45YzViNjg0NGM0NmI3NGYwMjZlMGQ4NTZiNDE5Y2U5NzVj
NjAwOTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xp
c3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAK
QEAgLTMzLDcgKzMzLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAor
bmFtZXNwYWNlIFdhc21Xb3JrbGlzdEludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJv
c2UgPSBmYWxzZTsKK30KIAogY29uc3QgY2hhciogV29ya2xpc3Q6OnByaW9yaXR5U3RyaW5nKFBy
aW9yaXR5IHByaW9yaXR5KQogewpAQCAtMTQ0LDcgKzE0Niw3IEBAIHZvaWQgV29ya2xpc3Q6OmVu
cXVldWUoUmVmPFBsYW4+IHBsYW4pCiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGVsZW1lbnQs
IGVsZW1lbnQucGxhbi5nZXQoKSAhPSAmcGxhbi5nZXQoKSk7CiAgICAgfQogCi0gICAgZGF0YUxv
Z0xuSWYodmVyYm9zZSwgIkVucXVldWluZyBwbGFuIik7CisgICAgZGF0YUxvZ0xuSWYoV2FzbVdv
cmtsaXN0SW50ZXJuYWw6OnZlcmJvc2UsICJFbnF1ZXVpbmcgcGxhbiIpOwogICAgIG1fcXVldWUu
ZW5xdWV1ZSh7IFByaW9yaXR5OjpQcmVwYXJhdGlvbiwgbmV4dFRpY2tldCgpLCAgV1RGTW92ZShw
bGFuKSB9KTsKICAgICBtX3BsYW5FbnF1ZXVlZC0+bm90aWZ5T25lKGxvY2tlcik7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmggYi9Tb3VyY2UvV1RGL3d0Zi9Bc3Nl
cnRpb25zLmgKaW5kZXggM2IwNDM3OTlhMGE0ZTRiZGUwYWZkZjUwYzJhZDA2MGUxNTkyOTYzYS4u
MTc5ZjUxOGVkNjRlOGI1MmQwYTNjZDdmZGNlZGZlYzdlM2MyN2ZmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMu
aApAQCAtNTM1LDE4ICs1MzUsMjIgQEAgaW5saW5lIHZvaWQgY29tcGlsZXJGZW5jZUZvckNyYXNo
KCkKICNlbmRpZgogfQogCi0jaWZuZGVmIENSQVNIX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05f
QU5EX0lORk8KKyNpZm5kZWYgQ1JBU0hfV0lUSF9JTkZPCiAvLyBUaGlzIGlzIHVzZWZ1bCBpZiB5
b3UgYXJlIGdvaW5nIHRvIHN0dWZmIGRhdGEgaW50byByZWdpc3RlcnMgYmVmb3JlIGNyYXNoaW5n
LiBMaWtlIHRoZSBjcmFzaFdpdGhJbmZvIGZ1bmN0aW9ucyBiZWxvdy4uLgogLy8gR0NDIGRvZXNu
J3QgbGlrZSB0aGUgIyNfX1ZBX0FSR1NfXyBoZXJlIHNpbmNlIHRoaXMgbWFjcm8gaXMgY2FsbGVk
IGZyb20gYW5vdGhlciBtYWNybyBzbyB3ZSBqdXN0IENSQVNIIGluc3RlYWQgdGhlcmUuCiAjaWYg
Q09NUElMRVIoQ0xBTkcpIHx8IENPTVBJTEVSKE1TVkMpCi0jZGVmaW5lIENSQVNIX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT05fQU5EX0lORk8oLi4uKSBkbyB7IFwKKyNkZWZpbmUgQ1JBU0hfV0lU
SF9JTkZPKC4uLikgZG8geyBcCiAgICAgICAgIFdURjo6aXNJbnRlZ3JhbFR5cGUoX19WQV9BUkdT
X18pOyBcCiAgICAgICAgIGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBcCiAgICAgICAgIFdURkNy
YXNoV2l0aEluZm8oX19MSU5FX18sIF9fRklMRV9fLCBXVEZfUFJFVFRZX0ZVTkNUSU9OLCBfX0NP
VU5URVJfXywgIyNfX1ZBX0FSR1NfXyk7IFwKICAgICB9IHdoaWxlIChmYWxzZSkKICNlbHNlCi0j
ZGVmaW5lIENSQVNIX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fQU5EX0lORk8oLi4uKSBDUkFT
SCgpCisjZGVmaW5lIENSQVNIX1dJVEhfSU5GTyguLi4pIENSQVNIKCkKICNlbmRpZgorI2VuZGlm
IC8vIENSQVNIX1dJVEhfSU5GTworCisjaWZuZGVmIENSQVNIX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT05fQU5EX0lORk8KKyNkZWZpbmUgQ1JBU0hfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTl9B
TkRfSU5GTyBDUkFTSF9XSVRIX0lORk8KICNlbmRpZiAvLyBDUkFTSF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OX0FORF9JTkZPCiAKICNlbmRpZiAvLyBfX2NwbHVzcGx1cwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320560</attachid>
            <date>2017-09-12 12:26:18 -0700</date>
            <delta_ts>2017-09-12 14:39:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176076-20170912122617.patch</filename>
            <type>text/plain</type>
            <size>236156</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxOTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YzgyZjNlZjRiYTgwZDBlY2RjODRkN2MwNjljNTk3NDdjMGUyNWMzLi5iMGNlNDFmYmRhYzdlOGY1
NWMyMjFlM2U4NjgwNDg5ZTQ3MWI0NzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzcgQEAKKzIwMTctMDktMTEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgRG8gdW5pZmllZCBzb3VyY2UgYnVpbGRzIGZvciBKU0MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjA3NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggc3dp
dGNocyB0aGUgQ01ha2UgSmF2YVNjcmlwdENvcmUgYnVpbGQgdG8gdXNlIHVuaWZpZWQgc291cmNl
cy4KKyAgICAgICAgVGhlIFhjb2RlIGJ1aWxkIHdpbGwgYmUgdXBncmFkZWQgaW4gYSBmb2xsb3cg
dXAgcGF0Y2guCisKKyAgICAgICAgTW9zdCBvZiB0aGUgc291cmNlIGNoYW5nZXMgaW4gdGhpcyBw
YXRjaCBhcmUgZml4aW5nIHN0YXRpYworICAgICAgICB2YXJpYWJsZS9mdW5jdGlvbnMgbmFtZSBj
b2xsaXNpb25zLiBUaGUgbW9zdCBjb21tb24gY29sbGlzaW9ucworICAgICAgICB3ZXJlIGZyb20g
b3VyIHVzZSBvZiAic3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSIgYW5kICJ1c2luZworICAgICAg
ICBuYW1lc3BhY2UgLi4uIi4gSSBmaXhlZCBhbGwgdGhlIHZlcmJvc2UgY2FzZXMgYW5kIGZpeGVk
IHRoZSAidXNpbmcKKyAgICAgICAgbmFtZXNwYWNlIiBpc3N1ZXMgdGhhdCBvY2N1cnJlZCB1bmRl
ciB0aGUgY3VycmVudCBidW5kbGluZworICAgICAgICBzdHJhdGVneS4gSXQncyBsaWtlbHkgdGhh
dCBtb3JlIG9mIHRoZSAidXNpbmcgbmFtZXNwYWNlIiBpc3N1ZXMKKyAgICAgICAgd2lsbCBuZWVk
IHRvIGJlIHJlc29sdmVkIGluIHRoZSBmdXR1cmUsIHBhcnRpY3VsYXJseSBpbiB0aGUgRlRMLgor
CisgICAgICAgIEkgZG9uJ3QgZXhwZWN0IGVpdGhlciBvZiB0aGVzZSBwcm9ibGVtcyB3aWxsIGFw
cGx5IHRvIG90aGVyIHBhcnRzCisgICAgICAgIG9mIHRoZSBwcm9qZWN0IG5lYXJseSBhcyBtdWNo
IGFzIGluIEpTQy4gVXNpbmcgYSB2ZXJib3NlIHZhcmlhYmxlCisgICAgICAgIGlzIGEgSlNDIGlk
aW9tIGFuZCBKU0MgdGVuZHMgdXNlIHRoZSBzYW1lLCBjYW5vbmljYWwsIGNsYXNzIG5hbWUKKyAg
ICAgICAgaW4gbXVsdGlwbGUgcGFydHMgb2YgdGhlIGVuZ2luZS4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIGIzL0IzQ2hlY2tTcGVjaWFsLmNwcDoKKyAgICAgICAgKEpT
Qzo6QjM6OkNoZWNrU3BlY2lhbDo6Zm9yRWFjaEFyZyk6CisgICAgICAgIChKU0M6OkIzOjpDaGVj
a1NwZWNpYWw6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6bnVtQjNBcmdzKTog
RGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM0R1cGxpY2F0ZVRhaWxzLmNwcDoKKyAgICAgICAgKiBi
My9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcDoKKyAgICAgICAgKiBiMy9CM0Zp
eFNTQS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpkZW1vdGVWYWx1ZXMpOgorICAgICAgICAqIGIz
L0IzRm9sZFBhdGhDb25zdGFudHMuY3BwOgorICAgICAgICAqIGIzL0IzSW5mZXJTd2l0Y2hlcy5j
cHA6CisgICAgICAgICogYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHA6Cisg
ICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Okxvd2VyVG9BaXIpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpydW4pOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzaG91bGRDb3B5UHJvcGFnYXRlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6QXJnUHJvbWlz
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21p
c2U6OnN3YXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpB
cmdQcm9taXNlOjpvcGVyYXRvcj0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpBcmdQcm9taXNlOjp+QXJnUHJvbWlzZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OnNldFRyYXBzKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6dG1wKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6b3Bl
cmF0b3IgYm9vbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6OkFyZ1Byb21pc2U6OmtpbmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjpwZWVrIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6Y29uc3VtZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6Omlu
c3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0bXApOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0bXBQcm9taXNlKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y2FuQmVJbnRlcm5h
bCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNvbW1pdElu
dGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3Jv
c3Nlc0ludGVyZmVyZW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6OnNjYWxlRm9yU2hsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6ZWZmZWN0aXZlQWRkcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okxvd2VyVG9BaXI6OmFkZHIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjp0cmFwcGluZ0luc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpsb2FkUHJvbWlzZUFueU9wY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmxvYWRQcm9taXNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6aW1tKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6TG93ZXJUb0Fpcjo6Yml0SW1tKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6Yml0SW1tNjQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjppbW1PclRtcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okxvd2VyVG9BaXI6OnRyeU9wY29kZUZvclR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpMb3dlclRvQWlyOjpvcGNvZGVGb3JUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kVW5PcCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnByZWZlclJpZ2h0Rm9yUmVzdWx0KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kQmluT3ApOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRTaGlmdCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyeUFwcGVuZFN0b3JlVW5P
cCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyeUFwcGVu
ZFN0b3JlQmluT3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
OjpjcmVhdGVTdG9yZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OnN0b3JlT3Bjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJU
b0Fpcjo6YXBwZW5kU3RvcmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjptb3ZlRm9yVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6OnJlbGF4ZWRNb3ZlRm9yVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OnByaW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6YXBwZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
TG93ZXJUb0Fpcjo6YXBwZW5kVHJhcHBpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpMb3dlclRvQWlyOjpmaW5pc2hBcHBlbmRpbmdJbnN0cnVjdGlvbnMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpuZXdCbG9jayk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnNwbGl0QmxvY2spOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjplbnN1cmVTcGVjaWFsKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6ZW5zdXJlQ2hlY2tTcGVjaWFs
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6ZmlsbFN0YWNr
bWFwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRl
R2VuZXJpY0NvbXBhcmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRv
QWlyOjpjcmVhdGVCcmFuY2gpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpjcmVhdGVDb21wYXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
TG93ZXJUb0Fpcjo6Y3JlYXRlU2VsZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6dHJ5QXBwZW5kTGVhKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kWDg2RGl2KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kWDg2VURpdik6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmxvYWRMaW5rT3Bjb2RlKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6c3RvcmVDb25kT3Bjb2RlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kQ0FTKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kVm9pZEF0b21pYyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZEdlbmVyYWxB
dG9taWMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpsb3dl
cik6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHA6CisgICAg
ICAgIChKU0M6OkIzOjpQYXRjaHBvaW50U3BlY2lhbDo6Z2VuZXJhdGUpOgorICAgICAgICAqIGIz
L0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpyZWR1Y2VEb3Vi
bGVUb0Zsb2F0KToKKyAgICAgICAgKiBiMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcDoKKyAgICAgICAg
KiBiMy9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5jcHA6CisgICAgICAgICogYjMvQjNTdGFj
a21hcFNwZWNpYWwuY3BwOgorICAgICAgICAoSlNDOjpCMzo6U3RhY2ttYXBTcGVjaWFsOjpyZXBz
SW1wbCk6CisgICAgICAgIChKU0M6OkIzOjpTdGFja21hcFNwZWNpYWw6OnJlcEZvckFyZyk6Cisg
ICAgICAgICogYjMvYWlyL0FpckFsbG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcuY3BwOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjphbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nKToKKyAgICAg
ICAgKiBiMy9haXIvQWlyRW1pdFNodWZmbGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpl
bWl0U2h1ZmZsZSk6CisgICAgICAgICogYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwOgor
ICAgICAgICAqIGIzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpsb3dlckFmdGVyUmVnQWxsb2MpOgorICAgICAgICAqIGIzL2Fpci9BaXJTdGFj
a0FsbG9jYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjphdHRlbXB0QXNzaWdubWVu
dCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmFzc2lnbik6CisgICAgICAgICogYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6
CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZURGR1N0YXR1c2VzKToKKyAgICAgICAgKiBieXRlY29kZS9H
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZTo6ZW1pdERPTUpJVEdldHRlcik6CisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKToKKyAg
ICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgorICAgICAgICAqIGJ5
dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlDb25k
aXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50IGNvbnN0
KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHA6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKToKKyAgICAgICAgKiBkZmcvREZH
QXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6RGVsYXllZFNl
dExvY2FsOjpEZWxheWVkU2V0TG9jYWwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjppbmxpbmluZ0Nvc3QpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpp
bmxpbmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRv
SW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGxhbkxvYWQpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpzdG9yZSk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpsaW5rQmxvY2tzKToKKyAgICAgICAgKiBkZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAg
ICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
SW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKToKKyAgICAgICAgKiBkZmcvREZHSW50ZWdlckNo
ZWNrQ29tYmluaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkludGVnZXJDaGVja0Nv
bWJpbmluZ1BoYXNlOjpoYW5kbGVCbG9jayk6CisgICAgICAgICogZGZnL0RGR0ludGVnZXJSYW5n
ZU9wdGltaXphdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHTW92SGludFJlbW92YWxQ
aGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2Uu
Y3BwOgorICAgICAgICAqIGRmZy9ERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAqIGRmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0
b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHVmFyYXJnc0Zv
cndhcmRpbmdQaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwOjpjb21wdXRlKToKKyAgICAgICAgKiBmdGwv
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVNZW1vcnkpOgorICAgICAgICAoSlNDOjpGVEw6OkFi
c3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlQ0NhbGxSZWFkKToKKyAgICAgICAgKEpTQzo6
RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUNDYWxsV3JpdGUpOgorICAgICAg
ICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlUGF0Y2hwb2ludFJl
YWQpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRl
UGF0Y2hwb2ludFdyaXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5OjpkZWNvcmF0ZUZlbmNlUmVhZCk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFw
UmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5jZVdyaXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUZlbmNlZEFjY2Vzcyk6CisgICAgICAgIChKU0M6
OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6Y29tcHV0ZVJhbmdlc0FuZERlY29yYXRlSW5z
dHJ1Y3Rpb25zKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6bGluayk6CisgICAgICAgICogaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHA6CisgICAg
ICAgIChKU0M6Ok1hcmtpbmdDb25zdHJhaW50U2V0OjphZGQpOgorICAgICAgICAqIGludGVycHJl
dGVyL1NoYWRvd0NoaWNrZW4uY3BwOgorICAgICAgICAoSlNDOjpTaGFkb3dDaGlja2VuOjp1cGRh
dGUpOgorICAgICAgICAqIGppdC9CaW5hcnlTd2l0Y2guY3BwOgorICAgICAgICAoSlNDOjpCaW5h
cnlTd2l0Y2g6OkJpbmFyeVN3aXRjaCk6CisgICAgICAgIChKU0M6OkJpbmFyeVN3aXRjaDo6YnVp
bGQpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50
OjpEYXRhOjpsb2FkU3RhdHMpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6c2F2ZVN0YXRz
KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
QXJyYXlQcm90b3R5cGU6OnRyeUluaXRpYWxpemVTcGVjaWVzV2F0Y2hwb2ludCk6CisgICAgICAg
IChKU0M6OkFycmF5UHJvdG90eXBlQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5V2F0Y2hwb2ludDo6
aGFuZGxlRmlyZSk6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2NrRnVuY3Rvcjo6RmluZEZp
cnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2NrRnVuY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3I6Om9wZXJhdG9yKCkp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGaW5kRmlyc3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxv
Y2tGdW5jdG9yOjpmb3VuZENhbGxGcmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3I6OmluZGV4IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAg
ICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KToK
KyAgICAgICAgKiBydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6UHJvbWlzZURlZmVycmVkVGltZXI6OmRvV29yayk6CisgICAgICAgIChKU0M6OlByb21pc2VE
ZWZlcnJlZFRpbWVyOjphZGRQZW5kaW5nUHJvbWlzZSk6CisgICAgICAgIChKU0M6OlByb21pc2VE
ZWZlcnJlZFRpbWVyOjpjYW5jZWxQZW5kaW5nUHJvbWlzZSk6CisgICAgICAgICogcnVudGltZS9U
eXBlUHJvZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXI6Omluc2VydE5ld0xv
Y2F0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHA6CisgICAgICAg
IChKU0M6OlR5cGVQcm9maWxlckxvZzo6cHJvY2Vzc0xvZ0VudHJpZXMpOgorICAgICAgICAqIHJ1
bnRpbWUvV2Vha01hcFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtN
YXBEZWxldGUpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwR2V0KToKKyAgICAgICAg
KEpTQzo6cHJvdG9GdW5jV2Vha01hcEhhcyk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtN
YXBTZXQpOgorICAgICAgICAoSlNDOjpnZXRXZWFrTWFwRGF0YSk6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6cHJvdG9GdW5j
V2Vha1NldERlbGV0ZSk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtTZXRIYXMpOgorICAg
ICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrU2V0QWRkKToKKyAgICAgICAgKEpTQzo6Z2V0V2Vha01h
cERhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHRlc3RSZWdFeHAuY3BwOgorICAgICAgICAodGVz
dE9uZVJlZ0V4cCk6CisgICAgICAgIChydW5Gcm9tRmlsZXMpOgorICAgICAgICAqIHdhc20vV2Fz
bUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpwYXJzZUFuZENvbXBpbGUp
OgorICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpC
QlFQbGFuOjptb3ZlVG9TdGF0ZSk6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OnBhcnNl
QW5kVmFsaWRhdGVNb2R1bGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpwcmVwYXJl
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9ucyk6CisgICAg
ICAgIChKU0M6Oldhc206OkJCUVBsYW46OmNvbXBsZXRlKToKKyAgICAgICAgKiB3YXNtL1dhc21G
YXVsdFNpZ25hbEhhbmRsZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp0cmFwSGFuZGxlcik6
CisgICAgICAgICogd2FzbS9XYXNtT01HUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok9N
R1BsYW46Ok9NR1BsYW4pOgorICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAg
ICAgICAgKiB3YXNtL1dhc21QbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGxhbjo6ZmFp
bCk6CisgICAgICAgICogd2FzbS9XYXNtU2lnbmF0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6U2lnbmF0dXJlSW5mb3JtYXRpb246OmFkb3B0KToKKyAgICAgICAgKiB3YXNtL1dhc21Xb3Jr
bGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjplbnF1ZXVlKToKKwogMjAx
Ny0wOS0xMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgTW9yZSBl
eGNlcHRpb24gY2hlY2sgYm9vay1rZWVwaW5nIG5lZWRlZCBmb3VuZCBieSAzMi1iaXQgSlNDIHRl
c3QgZmFpbHVyZXMuCkBAIC0zMiw2ICsyNjYsNDQyIEBACiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYwMTAKICAgICAgICAgaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvMjIxODU0CiAKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBiMy9CM0NoZWNrU3BlY2lhbC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpDaGVja1Nw
ZWNpYWw6OmZvckVhY2hBcmcpOgorICAgICAgICAoSlNDOjpCMzo6Q2hlY2tTcGVjaWFsOjpnZW5l
cmF0ZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Om51bUIzQXJncyk6IERlbGV0ZWQuCisgICAg
ICAgICogYjMvQjNEdXBsaWNhdGVUYWlscy5jcHA6CisgICAgICAgICogYjMvQjNFbGltaW5hdGVD
b21tb25TdWJleHByZXNzaW9ucy5jcHA6CisgICAgICAgICogYjMvQjNGaXhTU0EuY3BwOgorICAg
ICAgICAoSlNDOjpCMzo6ZGVtb3RlVmFsdWVzKToKKyAgICAgICAgKiBiMy9CM0ZvbGRQYXRoQ29u
c3RhbnRzLmNwcDoKKyAgICAgICAgKiBiMy9CM0luZmVyU3dpdGNoZXMuY3BwOgorICAgICAgICAq
IGIzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwOgorICAgICAgICAoKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpMb3dlclRvQWlyOjpMb3dlclRvQWlyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6TG93ZXJUb0Fpcjo6cnVuKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
TG93ZXJUb0Fpcjo6c2hvdWxkQ29weVByb3BhZ2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OkFyZ1Byb21pc2UpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjpzd2FwKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6b3Bl
cmF0b3I9KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJn
UHJvbWlzZTo6fkFyZ1Byb21pc2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpBcmdQcm9taXNlOjpzZXRUcmFwcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OnRtcCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6Om9wZXJhdG9yIGJvb2wgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9t
aXNlOjpraW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJU
b0Fpcjo6QXJnUHJvbWlzZTo6cGVlayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OmNvbnN1bWUpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjppbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dG1wKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dG1wUHJvbWlzZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNhbkJlSW50ZXJuYWwpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpjb21taXRJbnRlcm5hbCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyb3NzZXNJbnRlcmZlcmVu
Y2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzY2FsZUZv
clNobCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmVmZmVj
dGl2ZUFkZHIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjph
ZGRyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJhcHBp
bmdJbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG9h
ZFByb21pc2VBbnlPcGNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpsb2FkUHJvbWlzZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6OmltbSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OmJpdEltbSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OmJpdEltbTY0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
aW1tT3JUbXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0
cnlPcGNvZGVGb3JUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJU
b0Fpcjo6b3Bjb2RlRm9yVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6OmFwcGVuZFVuT3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpwcmVmZXJSaWdodEZvclJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZEJpbk9wKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kU2hpZnQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0cnlBcHBlbmRTdG9yZVVuT3ApOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0cnlBcHBlbmRTdG9yZUJpbk9wKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRlU3RvcmUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzdG9yZU9wY29k
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFN0
b3JlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bW92ZUZv
clR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpyZWxh
eGVkTW92ZUZvclR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRv
QWlyOjpwcmludCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OmFwcGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFw
cGVuZFRyYXBwaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fp
cjo6ZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bmV3QmxvY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpMb3dlclRvQWlyOjpzcGxpdEJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6ZW5zdXJlU3BlY2lhbCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmVuc3VyZUNoZWNrU3BlY2lhbCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmZpbGxTdGFja21hcCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZUdlbmVyaWNDb21wYXJl
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRlQnJh
bmNoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRl
Q29tcGFyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNy
ZWF0ZVNlbGVjdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
OnRyeUFwcGVuZExlYSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OmFwcGVuZFg4NkRpdik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6OmFwcGVuZFg4NlVEaXYpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpsb2FkTGlua09wY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6OnN0b3JlQ29uZE9wY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZENBUyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFZvaWRBdG9taWMpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRHZW5lcmFsQXRvbWljKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG93ZXIpOiBEZWxldGVkLgor
ICAgICAgICAqIGIzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwOgorICAgICAgICAoSlNDOjpCMzo6
UGF0Y2hwb2ludFNwZWNpYWw6OmdlbmVyYXRlKToKKyAgICAgICAgKiBiMy9CM1JlZHVjZURvdWJs
ZVRvRmxvYXQuY3BwOgorICAgICAgICAoSlNDOjpCMzo6cmVkdWNlRG91YmxlVG9GbG9hdCk6Cisg
ICAgICAgICogYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHA6CisgICAgICAgICogYjMvQjNTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMuY3BwOgorICAgICAgICAqIGIzL0IzU3RhY2ttYXBTcGVjaWFsLmNw
cDoKKyAgICAgICAgKEpTQzo6QjM6OlN0YWNrbWFwU3BlY2lhbDo6cmVwc0ltcGwpOgorICAgICAg
ICAoSlNDOjpCMzo6U3RhY2ttYXBTcGVjaWFsOjpyZXBGb3JBcmcpOgorICAgICAgICAqIGIzL2Fp
ci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6YWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZyk6CisgICAgICAgICogYjMvYWlyL0Fp
ckVtaXRTaHVmZmxlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6ZW1pdFNodWZmbGUpOgor
ICAgICAgICAqIGIzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcDoKKyAgICAgICAgKiBiMy9h
aXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6bG93
ZXJBZnRlclJlZ0FsbG9jKToKKyAgICAgICAgKiBiMy9haXIvQWlyU3RhY2tBbGxvY2F0aW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6YXR0ZW1wdEFzc2lnbm1lbnQpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjphc3NpZ24pOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVERkdTdGF0dXNlcyk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRE
T01KSVRHZXR0ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0LmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAg
ICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcyk6CisgICAgICAgIChKU0M6OlBv
bHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Qcm9wZXJ0
eUNvbmRpdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxs
VmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCBjb25zdCk6CisgICAgICAgICog
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVT
dHViSW5mbzo6YWRkQWNjZXNzQ2FzZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SGVhcC5j
cHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGRmZy9ERkdBcmd1
bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpEZWxheWVkU2V0TG9j
YWw6OkRlbGF5ZWRTZXRMb2NhbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmlubGluaW5nQ29zdCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGlu
ZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9Jbmxp
bmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5p
bmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwbGFuTG9hZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnN0b3JlKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmxpbmtCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmxpbmtCbG9ja3MpOgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5jcHA6CisgICAgICAgICog
ZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBs
YWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UpOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyQ2hlY2tD
b21iaW5pbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW50ZWdlckNoZWNrQ29tYmlu
aW5nUGhhc2U6OmhhbmRsZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHSW50ZWdlclJhbmdlT3B0
aW1pemF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdNb3ZIaW50UmVtb3ZhbFBoYXNl
LmNwcDoKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHA6
CisgICAgICAgICogZGZnL0RGR1BoYW50b21JbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICog
ZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3RvcmVC
YXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdWYXJhcmdzRm9yd2Fy
ZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXA6OmNvbXB1dGUpOgorICAgICAgICAqIGZ0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5OjpkZWNvcmF0ZU1lbW9yeSk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVDQ2FsbFJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6
OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlQ0NhbGxXcml0ZSk6CisgICAgICAgIChK
U0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVQYXRjaHBvaW50UmVhZCk6
CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVQYXRj
aHBvaW50V3JpdGUpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6
OmRlY29yYXRlRmVuY2VSZWFkKToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5OjpkZWNvcmF0ZUZlbmNlV3JpdGUpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0
SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlRmVuY2VkQWNjZXNzKToKKyAgICAgICAgKEpTQzo6RlRM
OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Ojpjb21wdXRlUmFuZ2VzQW5kRGVjb3JhdGVJbnN0cnVj
dGlvbnMpOgorICAgICAgICAqIGZ0bC9GVExKSVRGaW5hbGl6ZXIuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OkpJVEZpbmFsaXplcjo6SklURmluYWxpemVyKToKKyAgICAgICAgKiBmdGwvRlRMTGlu
ay5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICogZnRsL0ZUTE9wZXJh
dGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5P
U1IpOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1Ip
OgorICAgICAgICAqIGhlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwOgorICAgICAgICAoSlND
OjpNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9TaGFk
b3dDaGlja2VuLmNwcDoKKyAgICAgICAgKEpTQzo6U2hhZG93Q2hpY2tlbjo6dXBkYXRlKToKKyAg
ICAgICAgKiBqaXQvQmluYXJ5U3dpdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6QmluYXJ5U3dpdGNo
OjpCaW5hcnlTd2l0Y2gpOgorICAgICAgICAoSlNDOjpCaW5hcnlTd2l0Y2g6OmJ1aWxkKToKKyAg
ICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6
bG9hZFN0YXRzKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnNhdmVTdGF0cyk6CisgICAg
ICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFycmF5UHJv
dG90eXBlOjp0cnlJbml0aWFsaXplU3BlY2llc1dhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpB
cnJheVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ6OmhhbmRsZUZp
cmUpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6
OkZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3I6OkZpbmRGaXJzdENhbGxl
ckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGaW5k
Rmlyc3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjpvcGVyYXRvcigpKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2NrRnVuY3Rv
cjo6Zm91bmRDYWxsRnJhbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGaW5kRmly
c3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjppbmRleCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlND
OjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCk6CisgICAgICAg
IChKU0M6OmxvY2FsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjp0b0RhdGVUaW1lT3B0
aW9uc0FueURhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJG
b3JtYXQpOgorICAgICAgICAoSlNDOjpsb2NhbGVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0pTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgICogcnVudGltZS9K
U1R5cGVkQXJyYXlQcm90b3R5cGVzLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZWRBcnJh
eXMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvTnVsbEdldHRlckZ1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6TnVsbEdldHRlckZ1bmN0aW9uOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6
OmNhbGxSZXR1cm5VbmRlZmluZWQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvTnVsbFNl
dHRlckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6TnVsbFNldHRlckZ1bmN0aW9uOjpnZXRD
YWxsRGF0YSk6CisgICAgICAgIChKU0M6OmNhbGxSZXR1cm5VbmRlZmluZWQpOiBEZWxldGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvbWlzZURlZmVycmVkVGltZXIuY3BwOgorICAgICAgICAoSlND
OjpQcm9taXNlRGVmZXJyZWRUaW1lcjo6ZG9Xb3JrKToKKyAgICAgICAgKEpTQzo6UHJvbWlzZURl
ZmVycmVkVGltZXI6OmFkZFBlbmRpbmdQcm9taXNlKToKKyAgICAgICAgKEpTQzo6UHJvbWlzZURl
ZmVycmVkVGltZXI6OmNhbmNlbFBlbmRpbmdQcm9taXNlKToKKyAgICAgICAgKiBydW50aW1lL1R5
cGVQcm9maWxlci5jcHA6CisgICAgICAgIChKU0M6OlR5cGVQcm9maWxlcjo6aW5zZXJ0TmV3TG9j
YXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcDoKKyAgICAgICAg
KEpTQzo6VHlwZVByb2ZpbGVyTG9nOjpwcm9jZXNzTG9nRW50cmllcyk6CisgICAgICAgICogd2Fz
bS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OnBhcnNlQW5kQ29t
cGlsZSk6CisgICAgICAgICogd2FzbS9XYXNtQkJRUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OkJCUVBsYW46Om1vdmVUb1N0YXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6
cGFyc2VBbmRWYWxpZGF0ZU1vZHVsZSk6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OnBy
ZXBhcmUpOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpjb21waWxlRnVuY3Rpb25zKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6Y29tcGxldGUpOgorICAgICAgICAqIHdhc20v
V2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OnRyYXBIYW5k
bGVyKToKKyAgICAgICAgKiB3YXNtL1dhc21PTUdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6T01HUGxhbjo6T01HUGxhbik6CisgICAgICAgIChKU0M6Oldhc206Ok9NR1BsYW46Ondvcmsp
OgorICAgICAgICAqIHdhc20vV2FzbVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpQbGFu
OjpmYWlsKToKKyAgICAgICAgKiB3YXNtL1dhc21TaWduYXR1cmUuY3BwOgorICAgICAgICAoSlND
OjpXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6YWRvcHQpOgorICAgICAgICAqIHdhc20vV2Fz
bVdvcmtsaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6V29ya2xpc3Q6OmVucXVldWUpOgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogYjMvQjNDaGVja1NwZWNpYWwu
Y3BwOgorICAgICAgICAoSlNDOjpCMzo6Q2hlY2tTcGVjaWFsOjpmb3JFYWNoQXJnKToKKyAgICAg
ICAgKEpTQzo6QjM6OkNoZWNrU3BlY2lhbDo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpudW1CM0FyZ3MpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzRHVwbGljYXRlVGFpbHMu
Y3BwOgorICAgICAgICAqIGIzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwOgor
ICAgICAgICAqIGIzL0IzRml4U1NBLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OmRlbW90ZVZhbHVl
cyk6CisgICAgICAgICogYjMvQjNGb2xkUGF0aENvbnN0YW50cy5jcHA6CisgICAgICAgICogYjMv
QjNJbmZlclN3aXRjaGVzLmNwcDoKKyAgICAgICAgKiBiMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRp
bWl6YXRpb25zLmNwcDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNMb3dl
clRvQWlyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6TG93ZXJUb0Fp
cik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnJ1bik6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnNob3VsZENvcHlQcm9w
YWdhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQ
cm9taXNlOjpBcmdQcm9taXNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6c3dhcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6On5BcmdQcm9taXNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6c2V0
VHJhcHMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQ
cm9taXNlOjp0bXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
OjpBcmdQcm9taXNlOjpvcGVyYXRvciBib29sIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6a2luZCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OnBlZWsgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9t
aXNlOjpjb25zdW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fp
cjo6QXJnUHJvbWlzZTo6aW5zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6OnRtcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9B
aXI6OnRtcFByb21pc2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRv
QWlyOjpjYW5CZUludGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6Y29tbWl0SW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjpjcm9zc2VzSW50ZXJmZXJlbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6c2NhbGVGb3JTaGwpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjplZmZlY3RpdmVBZGRyKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YWRkcik6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyYXBwaW5nSW5zdCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmxvYWRQcm9taXNlQW55T3Bjb2RlKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG9hZFByb21pc2UpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjppbW0pOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpiaXRJbW0pOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpiaXRJbW02NCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmltbU9yVG1wKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJ5T3Bjb2RlRm9yVHlwZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Om9wY29kZUZvclR5cGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRVbk9wKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6cHJlZmVyUmlnaHRGb3JS
ZXN1bHQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBl
bmRCaW5PcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFw
cGVuZFNoaWZ0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
dHJ5QXBwZW5kU3RvcmVVbk9wKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6dHJ5QXBwZW5kU3RvcmVCaW5PcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZVN0b3JlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6c3RvcmVPcGNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRTdG9yZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Om1vdmVGb3JUeXBlKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6cmVsYXhlZE1vdmVGb3JUeXBlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6cHJpbnQpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmQpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRUcmFwcGluZyk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmZpbmlzaEFwcGVuZGluZ0luc3RydWN0
aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Om5ld0Js
b2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6c3BsaXRC
bG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmVuc3Vy
ZVNwZWNpYWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpl
bnN1cmVDaGVja1NwZWNpYWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpmaWxsU3RhY2ttYXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpjcmVhdGVHZW5lcmljQ29tcGFyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZUJyYW5jaCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZUNvbXBhcmUpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpjcmVhdGVTZWxlY3QpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0cnlBcHBlbmRMZWEpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRYODZEaXYpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRYODZVRGl2KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG9hZExpbmtPcGNvZGUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzdG9yZUNvbmRP
cGNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBl
bmRDQVMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBl
bmRWb2lkQXRvbWljKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fp
cjo6YXBwZW5kR2VuZXJhbEF0b21pYyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okxvd2VyVG9BaXI6Omxvd2VyKTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM1BhdGNocG9pbnRT
cGVjaWFsLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlBhdGNocG9pbnRTcGVjaWFsOjpnZW5lcmF0
ZSk6CisgICAgICAgICogYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcDoKKyAgICAgICAgKEpT
Qzo6QjM6OnJlZHVjZURvdWJsZVRvRmxvYXQpOgorICAgICAgICAqIGIzL0IzUmVkdWNlU3RyZW5n
dGguY3BwOgorICAgICAgICAqIGIzL0IzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmNwcDoKKyAg
ICAgICAgKiBiMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpTdGFj
a21hcFNwZWNpYWw6OnJlcHNJbXBsKToKKyAgICAgICAgKEpTQzo6QjM6OlN0YWNrbWFwU3BlY2lh
bDo6cmVwRm9yQXJnKToKKyAgICAgICAgKiBiMy9haXIvQWlyQWxsb2NhdGVTdGFja0J5R3JhcGhD
b2xvcmluZy5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmFsbG9jYXRlU3RhY2tCeUdyYXBo
Q29sb3JpbmcpOgorICAgICAgICAqIGIzL2Fpci9BaXJFbWl0U2h1ZmZsZS5jcHA6CisgICAgICAg
IChKU0M6OkIzOjpBaXI6OmVtaXRTaHVmZmxlKToKKyAgICAgICAgKiBiMy9haXIvQWlyRml4T2J2
aW91c1NwaWxscy5jcHA6CisgICAgICAgICogYjMvYWlyL0Fpckxvd2VyQWZ0ZXJSZWdBbGxvYy5j
cHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Omxvd2VyQWZ0ZXJSZWdBbGxvYyk6CisgICAgICAg
ICogYjMvYWlyL0FpclN0YWNrQWxsb2NhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6
OmF0dGVtcHRBc3NpZ25tZW50KToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6YXNzaWduKToKKyAg
ICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2Fz
ZTo6Z2VuZXJhdGVJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHA6
CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRlREZHU3RhdHVzZXMpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlND
OjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjplbWl0RE9NSklUR2V0dGVyKToKKyAgICAgICAgKiBi
eXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHA6CisgICAgICAgICogYnl0ZWNv
ZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vz
czo6YWRkQ2FzZXMpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uY3BwOgorICAgICAgICAo
SlNDOjpQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0
eVdhdGNocG9pbnQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgor
ICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEhlYXAuY3BwOgorICAgICAgICAoV1RGOjpwcmludElu
dGVybmFsKToKKyAgICAgICAgKiBkZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6RGVsYXllZFNldExvY2FsOjpEZWxheWVkU2V0TG9jYWwpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6cGxhbkxvYWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpzdG9yZSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2spOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2tzKToKKyAgICAgICAgKiBk
ZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKToK
KyAgICAgICAgKiBkZmcvREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlOjpoYW5kbGVCbG9jayk6Cisg
ICAgICAgICogZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHTW92SGludFJlbW92YWxQaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR09i
amVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdQaGFudG9t
SW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFz
ZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHA6CisgICAgICAgICog
ZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFw
Ojpjb21wdXRlKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVNZW1v
cnkpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRl
Q0NhbGxSZWFkKToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Ojpk
ZWNvcmF0ZUNDYWxsV3JpdGUpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcFJlcG9z
aXRvcnk6OmRlY29yYXRlUGF0Y2hwb2ludFJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3Ry
YWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlUGF0Y2hwb2ludFdyaXRlKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUZlbmNlUmVhZCk6CisgICAg
ICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5jZVdyaXRl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUZl
bmNlZEFjY2Vzcyk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6
Y29tcHV0ZVJhbmdlc0FuZERlY29yYXRlSW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKiBmdGwvRlRM
SklURmluYWxpemVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpKSVRGaW5hbGl6ZXI6OkpJVEZp
bmFsaXplcik6CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OmxpbmspOgorICAgICAgICAqIGZ0bC9GVExPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKToKKyAgICAgICAgKEpTQzo6RlRMOjpv
cGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NSKToKKyAgICAgICAgKiBoZWFwL01hcmtpbmdD
b25zdHJhaW50U2V0LmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFk
ZCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHA6CisgICAgICAgIChK
U0M6OlNoYWRvd0NoaWNrZW46OnVwZGF0ZSk6CisgICAgICAgICogaml0L0JpbmFyeVN3aXRjaC5j
cHA6CisgICAgICAgIChKU0M6OkJpbmFyeVN3aXRjaDo6QmluYXJ5U3dpdGNoKToKKyAgICAgICAg
KEpTQzo6QmluYXJ5U3dpdGNoOjpidWlsZCk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNw
cDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmxvYWRTdGF0cyk6CisgICAgICAgIChKU0M6
OkxMSW50OjpEYXRhOjpzYXZlU3RhdHMpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheVByb3RvdHlwZTo6dHJ5SW5pdGlhbGl6ZVNwZWNp
ZXNXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGVBZGFwdGl2ZUluZmVy
cmVkUHJvcGVydHlXYXRjaHBvaW50OjpoYW5kbGVGaXJlKToKKyAgICAgICAgKiBydW50aW1lL0Vy
cm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpGaW5kRmlyc3RDYWxsZXJGcmFtZVdpdGhD
b2RlYmxvY2tGdW5jdG9yOjpGaW5kRmlyc3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9y
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJs
b2NrRnVuY3Rvcjo6b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZpbmRGaXJz
dENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3I6OmZvdW5kQ2FsbEZyYW1lIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2Nr
RnVuY3Rvcjo6aW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bERh
dGVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojppbml0
aWFsaXplRGF0ZVRpbWVGb3JtYXQpOgorICAgICAgICAoSlNDOjpsb2NhbGVEYXRhKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6dG9EYXRlVGltZU9wdGlvbnNBbnlEYXRlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRs
TnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKEpTQzo6bG9j
YWxlRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlDb25zdHJ1
Y3RvcnMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5UHJvdG90eXBlcy5jcHA6
CisgICAgICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlzLmNwcDoKKyAgICAgICAgKiBydW50aW1l
L051bGxHZXR0ZXJGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6Ok51bGxHZXR0ZXJGdW5jdGlv
bjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpjYWxsUmV0dXJuVW5kZWZpbmVkKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6Ok51bGxTZXR0ZXJGdW5jdGlvbjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpj
YWxsUmV0dXJuVW5kZWZpbmVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1Byb21pc2VE
ZWZlcnJlZFRpbWVyLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvbWlzZURlZmVycmVkVGltZXI6OmRv
V29yayk6CisgICAgICAgIChKU0M6OlByb21pc2VEZWZlcnJlZFRpbWVyOjphZGRQZW5kaW5nUHJv
bWlzZSk6CisgICAgICAgIChKU0M6OlByb21pc2VEZWZlcnJlZFRpbWVyOjpjYW5jZWxQZW5kaW5n
UHJvbWlzZSk6CisgICAgICAgICogcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwOgorICAgICAgICAo
SlNDOjpUeXBlUHJvZmlsZXI6Omluc2VydE5ld0xvY2F0aW9uKToKKyAgICAgICAgKiBydW50aW1l
L1R5cGVQcm9maWxlckxvZy5jcHA6CisgICAgICAgIChKU0M6OlR5cGVQcm9maWxlckxvZzo6cHJv
Y2Vzc0xvZ0VudHJpZXMpOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpwYXJzZUFuZENvbXBpbGUpOgorICAgICAgICAqIHdhc20vV2Fz
bUJCUVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjptb3ZlVG9TdGF0ZSk6
CisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OnBhcnNlQW5kVmFsaWRhdGVNb2R1bGUpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpwcmVwYXJlKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9ucyk6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBs
YW46OmNvbXBsZXRlKToKKyAgICAgICAgKiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjp0cmFwSGFuZGxlcik6CisgICAgICAgICogd2FzbS9XYXNt
T01HUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok9NR1BsYW46Ok9NR1BsYW4pOgorICAg
ICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21QbGFu
LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGxhbjo6ZmFpbCk6CisgICAgICAgICogd2FzbS9X
YXNtU2lnbmF0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2lnbmF0dXJlSW5mb3JtYXRp
b246OmFkb3B0KToKKyAgICAgICAgKiB3YXNtL1dhc21Xb3JrbGlzdC5jcHA6CisgICAgICAgIChK
U0M6Oldhc206OldvcmtsaXN0OjplbnF1ZXVlKToKKwogMjAxNy0wOS0wMyAgWXVzdWtlIFN1enVr
aSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbREZHXSBPcHRpbWl6ZSBXZWFr
TWFwOjpnZXQgYnkgYWRkaW5nIGludHJpbnNpYyBhbmQgZml4dXAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODEzMDgzMGVhODg2
NGE3NGQxZmI3NGFiNTVlOGI3NTk3YjJhMTc0Ni4uYzg5YTk3YWViZjFmOTQ3OGRkMDZmMGYyZjkz
MjhlODJhYTFiNTk2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxNy0wOS0xMSAgS2VpdGggTWls
bGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBEbyB1bmlmaWVkIHNvdXJj
ZSBidWlsZHMgZm9yIEpTQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc2MDc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgc2NyaXB0IHRoYXQgd2lsbCBhdXRvbWF0aWNhbGx5
IGJ1bmRsZSBzb3VyY2UKKyAgICAgICAgZmlsZXMsIHdoaWNoIGlzIGN1cnJlbnRseSBvbmx5IHVz
ZWQgYnkgdGhlIENNYWtlIGJ1aWxkLiBJdCdzCisgICAgICAgIGltcG9ydGFudCB0aGF0IHdlIHVz
ZSB0aGUgc2FtZSBzY3JpcHQgdG8gZ2VuZXJhdGUgdGhlIHRoZSBidW5kbGVzCisgICAgICAgIGZv
ciB0aGUgQ01ha2UgYnVpbGQgYXMgdGhlIFhjb2RlIGJ1aWxkLiBJZiB3ZSBkaWRuJ3QgZG8gdGhp
cyB0aGVuCisgICAgICAgIGl0J3MgbGlrZWx5IHRoYXQgdGhlcmUgd291bGQgYmUgYnVpbGQgZXJy
b3JzIHRoYXQgb2NjdXIgaW4gb25seQorICAgICAgICBvbmUgYnVpbGQgc3lzdGVtLiBPbiB0aGUg
c2FtZSBub3RlLCB3ZSBhbHNvIG5lZWQgdG8gYmUgY2FyZWZ1bCB0bworICAgICAgICBub3QgYnVu
ZGxlIHBsYXRmb3JtIHNwZWNpZmljIHNvdXJjZSBmaWxlcyB3aXRoIHBsYXRmb3JtCisgICAgICAg
IGluZGVwZW5kZW50IG9uZXMuIFRoZXJlIGFyZSBhIGNvdXBsZSBvZiB0aGluZ3MgdGhlIHNjcmlw
dCBkb2VzIG5vdAorICAgICAgICBjdXJyZW50bHkgaGFuZGxlIGJ1dCBhcmUgbm90IGVzc2VudGlh
bCBmb3IgdGhlIENNYWtlIGJ1aWxkLiBGaXJzdCwKKyAgICAgICAgaXQgZG9lcyBub3QgaGFuZGxl
IHRoZSBtYXggYnVuZGxlIHNpemUgcmVzdHJpY3Rpb25zIHRoYXQgdGhlIFhjb2RlCisgICAgICAg
IGJ1aWxkIHdpbGwgcmVxdWlyZS4gSXQgYWxzbyBkb2VzIG5vdCBoYW5kbGUgQyBmaWxlcy4KKwor
ICAgICAgICBUaGUgdW5pZmllZCBzb3VyY2UgZ2VuZXJhdG9yIHNjcmlwdCB3b3JrcyBieSBjb2xs
ZWN0aW5nIGdyb3VwcyBvZgorICAgICAgICB1cCB0byA4IGZpbGVzIGZyb20gdGhlIHNhbWUgZGly
ZWN0b3J5LiBXZSBkb24ndCBidW5kbGUgZmlsZXMgZnJvbQorICAgICAgICBhY3Jvc3MgZGlyZWN0
b3JpZXMgc2luY2UgSSBkaWRuJ3Qgc2VlIGEgc3BlZWR1cCBmcm9tIGRvaW5nCisgICAgICAgIHNv
LiBBZGRpdGlvbmFsbHksIHNwbGl0dGluZyBhdCB0aGUgZGlyZWN0b3J5IGJvdW5kYXJ5IG1lYW5z
IHRoYXQKKyAgICAgICAgaXQgaXMgbGVzcyBsaWtlbHkgdGhhdCBhZGRpbmcgYSBuZXcgZmlsZSB3
aWxsIGZvcmNlIGEgImNsZWFuIgorICAgICAgICBidWlsZC4gVGhpcyB3b3VsZCBoYXBwZW4gYmVj
YXVzZSB0aGUgbmV3IGZpbGUgd2lsbCBzaGlmdCBldmVyeQorICAgICAgICBzdWJzZXF1ZW50IGZp
bGUgaW50byB0aGUgbmV4dCB1bmlmaWVkIHNvdXJjZSBidW5kbGUuCisKKyAgICAgICAgVXNpbmcg
dW5pZmllZCBzb3VyY2VzIGFwcGVhcnMgdG8gYmUgYSByb3VnaGx5IDMuNXggYnVpbGQgdGltZQor
ICAgICAgICBzcGVlZCB1cCBmb3IgY2xlYW4gYnVpbGRzIG9uIG15IE1CUCBhbmQgYXBwZWFycyB0
byBoYXZlIGEKKyAgICAgICAgbmVnbGlnaWJsZSBlZmZlY3QgaW4gaW5jcmVtZW50YWwgYnVpbGRz
LgorCisgICAgICAgICogZ2VuZXJhdGUtdW5pZmllZC1zb3VyY2UtYnVuZGxlcy5yYjogQWRkZWQu
CisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuaDoKKwogMjAxNy0wOS0xMSAgUnlhbiBIYWRkYWQg
IDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMjIxODU0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGRhMWJhMWQ5
YmUxNTdiNTgzYzgxMDc4YmFkYmVmZGVhZDViYjIwZmEuLmFkMDc4YmFjYzJhZTU3ZmY3NmJmNTcw
MjAyYjNlN2FlMmRjMTMzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTQ2LDcgKzQ2LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9S
SUVTCiAgICAgIiR7SUNVX0lOQ0xVREVfRElSU30iCiApCiAKLXNldChKYXZhU2NyaXB0Q29yZV9T
T1VSQ0VTCitzZXQoSmF2YVNjcmlwdENvcmVfT0dfU09VUkNFUwogICAgIEFQSS9KU0Jhc2UuY3Bw
CiAgICAgQVBJL0pTQ1Rlc3RSdW5uZXJVdGlscy5jcHAKICAgICBBUEkvSlNDYWxsYmFja0NvbnN0
cnVjdG9yLmNwcApAQCAtODc5LDcgKzg3OSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VT
CiAgICAgcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcAogICAgIHJ1bnRpbWUvUHJvdG90eXBlTWFw
LmNwcAogICAgIHJ1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAKLSAgICBydW50aW1lL1Byb3h5
T2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvUHJveHlSZXZva2UuY3BwCiAgICAgcnVudGltZS9SZWZs
ZWN0T2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvUmVnRXhwLmNwcApAQCAtMTAxNyw2ICsxMDE2LDMz
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgeWFyci9ZYXJyU3ludGF4Q2hlY2tl
ci5jcHAKICkKIAorCitmb3JlYWNoIChfc291cmNlRmlsZSBJTiBMSVNUUyBKYXZhU2NyaXB0Q29y
ZV9PR19TT1VSQ0VTKQorICAgIGlmIChOT1QgKCR7X3NvdXJjZUZpbGV9IE1BVENIRVMgIi4qYyQi
KSkKKyAgICAgICAgc2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzKCR7X3NvdXJjZUZpbGV9IFBS
T1BFUlRJRVMgSEVBREVSX0ZJTEVfT05MWSBPTikKKyAgICAgICAgbGlzdChBUFBFTkQgSmF2YVNj
cmlwdENvcmVfSEVBREVSUyAke19zb3VyY2VGaWxlfSkKKyAgICBlbmRpZiAoKQorZW5kZm9yZWFj
aCAoKQorCitleGVjdXRlX3Byb2Nlc3MoQ09NTUFORCAke1JVQllfRVhFQ1VUQUJMRX0gJHtDTUFL
RV9DVVJSRU5UX1NPVVJDRV9ESVJ9Ly4uL1dURi9nZW5lcmF0ZS11bmlmaWVkLXNvdXJjZS1idW5k
bGVzLnJiCisgICItLWRlcml2ZWQtc291cmNlcy1wYXRoIiAke0RFUklWRURfU09VUkNFU19KQVZB
U0NSSVBUQ09SRV9ESVJ9ICR7SmF2YVNjcmlwdENvcmVfT0dfU09VUkNFU30KKyAgUkVTVUxUX1ZB
UklBQkxFIGdlbmVyYXRlVW5pZmllZFNvdXJjZXNSZXN1bHQKKyAgT1VUUFVUX1ZBUklBQkxFIGdl
bmVyYXRlVW5pZmllZFNvdXJjZXNPdXRwdXQKKykKKworaWYgKCR7Z2VuZXJhdGVVbmlmaWVkU291
cmNlc1Jlc3VsdH0pCisgICAgbWVzc2FnZSgiV0FSTklORzogdW5pZmllZC1zb3VyY2UtYnVuZGxl
ci5yYiBleGl0ZWQgd2l0aCBub24temVybyBzdGF0dXMgbm90IGFwcGVuZGluZyByZXN1bHRzIikK
K2Vsc2UgKCkKKyAgICBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTICR7Z2VuZXJh
dGVVbmlmaWVkU291cmNlc091dHB1dH0pCitlbmRpZiAoKQorCittZXNzYWdlKCR7Z2VuZXJhdGVV
bmlmaWVkU291cmNlc091dHB1dH0pCisKKyMgVGhlc2UgYXJlIHNwZWNpYWwgZmlsZXMgdGhhdCB3
ZSBjYW4ndCBvciBkb24ndCB3YW50IHRvIHVuaWZpZWQgc291cmNlIGNvbXBpbGUKK2xpc3QoQVBQ
RU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKKyAgICBydW50aW1lL1Byb3h5T2JqZWN0LmNwcAor
KQorCiAjIEV4dHJhIGZsYWdzIGZvciBjb21waWxlIHNvdXJjZXMgY2FuIGdvIGhlcmUuCiBpZiAo
Tk9UIE1TVkMpCiAgICAgc2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzKHJ1bnRpbWUvUHJveHlP
YmplY3QuY3BwIFBST1BFUlRJRVMgQ09NUElMRV9GTEFHUyAtZm5vLW9wdGltaXplLXNpYmxpbmct
Y2FsbHMpCkBAIC0xMzM2LDYgKzEzNjIsNyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgTUFJ
Tl9ERVBFTkRFTkNZICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9jcmVhdGVfcmVnZXhfdGFi
bGVzCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vY3JlYXRlX3JlZ2V4X3RhYmxlcyA+ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vUmVnRXhwSml0VGFibGVzLmgKICAgICBWRVJCQVRJTSkKK2xpc3QoQVBQRU5E
IEphdmFTY3JpcHRDb3JlX0hFQURFUlMgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVf
RElSfS9SZWdFeHBKaXRUYWJsZXMuaCkKIFdFQktJVF9BRERfU09VUkNFX0RFUEVOREVOQ0lFUygk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0veWFyci9ZYXJyUGF0dGVybi5jcHAgJHtERVJJVkVE
X1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9SZWdFeHBKaXRUYWJsZXMuaCkKIAogYWRkX2N1
c3RvbV9jb21tYW5kKApAQCAtMTM1Niw2ICsxMzgzLDcgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAog
ICAgIERFUEVORFMgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3BhcnNlci9LZXl3b3Jkcy50
YWJsZQogICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5UX1NP
VVJDRV9ESVJ9L0tleXdvcmRMb29rdXBHZW5lcmF0b3IucHkgJHtDTUFLRV9DVVJSRU5UX1NPVVJD
RV9ESVJ9L3BhcnNlci9LZXl3b3Jkcy50YWJsZSA+ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vS2V5d29yZExvb2t1cC5oCiAgICAgVkVSQkFUSU0pCitsaXN0KEFQUEVORCBK
YXZhU2NyaXB0Q29yZV9IRUFERVJTICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vS2V5d29yZExvb2t1cC5oKQogV0VCS0lUX0FERF9TT1VSQ0VfREVQRU5ERU5DSUVTKCR7Q01B
S0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9wYXJzZXIvTGV4ZXIuY3BwICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vS2V5d29yZExvb2t1cC5oKQogCiAKQEAgLTE1MDMsNyArMTUz
MSw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9CiApCiAKLWxpc3QoQVBQRU5EIEphdmFTY3Jp
cHRDb3JlX1NPVVJDRVMKK2xpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMKICAgICAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0Fpck9wY29kZS5oCiAgICAgJHtE
RVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9BaXJPcGNvZGVHZW5lcmF0ZWQuaAog
KQpAQCAtMTU2NSw2ICsxNTkzLDggQEAgZWxzZSAoKQogICAgIG1lc3NhZ2UoRkFUQUxfRVJST1Ig
IlVua25vd24gQ1BVIikKIGVuZGlmICgpCiAKK21lc3NhZ2UoJHtKYXZhU2NyaXB0Q29yZV9TT1VS
Q0VTfSkKKwogV0VCS0lUX0ZSQU1FV09SS19ERUNMQVJFKEphdmFTY3JpcHRDb3JlKQogV0VCS0lU
X0lOQ0xVREVfQ09ORklHX0ZJTEVTX0lGX0VYSVNUUygpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNDaGVja1NwZWNpYWwuY3BwCmluZGV4IGJlYjg3OTI4NTg4ZmQ1YjZkNzMxMGY3ZjM0
ODViYzE3NWJhM2RiZmYuLjdjNTM3MmFjNWUyNzExNDE5OTNmNzhiZTE2ODNlMDkzMTg1M2M4OTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcApAQCAtMzYs
MTEgKzM2LDEzIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi11c2luZyBu
YW1lc3BhY2UgQWlyOwordXNpbmcgSW5zdCA9IEFpcjo6SW5zdDsKK3VzaW5nIEFyZyA9IEFpcjo6
QXJnOwordXNpbmcgR2VuZXJhdGlvbkNvbnRleHQgPSBBaXI6OkdlbmVyYXRpb25Db250ZXh0Owog
CiBuYW1lc3BhY2UgewogCi11bnNpZ25lZCBudW1CM0FyZ3MoQjM6OktpbmQga2luZCkKK3Vuc2ln
bmVkIG51bUIzQXJncyhLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7
CiAgICAgY2FzZSBDaGVja0FkZDoKQEAgLTEwOCw2ICsxMTAsNyBAQCBJbnN0IENoZWNrU3BlY2lh
bDo6aGlkZGVuQnJhbmNoKGNvbnN0IEluc3QmIGluc3QpIGNvbnN0CiAKIHZvaWQgQ2hlY2tTcGVj
aWFsOjpmb3JFYWNoQXJnKEluc3QmIGluc3QsIGNvbnN0IFNjb3BlZExhbWJkYTxJbnN0OjpFYWNo
QXJnQ2FsbGJhY2s+JiBjYWxsYmFjaykKIHsKKyAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAg
IHN0ZDo6b3B0aW9uYWw8V2lkdGg+IG9wdGlvbmFsRGVmQXJnV2lkdGg7CiAgICAgSW5zdCBoaWRk
ZW4gPSBoaWRkZW5CcmFuY2goaW5zdCk7CiAgICAgaGlkZGVuLmZvckVhY2hBcmcoCkBAIC0xNTYs
NiArMTU5LDcgQEAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gQ2hlY2tTcGVjaWFsOjpzaG91bGRU
cnlBbGlhc2luZ0RlZihJbnN0JiBpbnN0KQogCiBDQ2FsbEhlbHBlcnM6Okp1bXAgQ2hlY2tTcGVj
aWFsOjpnZW5lcmF0ZShJbnN0JiBpbnN0LCBDQ2FsbEhlbHBlcnMmIGppdCwgR2VuZXJhdGlvbkNv
bnRleHQmIGNvbnRleHQpCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICBDQ2FsbEhl
bHBlcnM6Okp1bXAgZmFpbCA9IGhpZGRlbkJyYW5jaChpbnN0KS5nZW5lcmF0ZShqaXQsIGNvbnRl
eHQpOwogICAgIEFTU0VSVChmYWlsLmlzU2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNEdXBsaWNhdGVUYWlscy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNEdXBsaWNhdGVUYWlscy5jcHAKaW5kZXggZmQ2NTc5MGU5OWMyZmVhZDRmNWZiYjll
YWY2MGMxYTc1YzkzMjI1NS4uY2ZmNDRhNGMxZTAwOTFlYmE0YTc4M2IzOGYzNWEzYmRjZWQxYmNm
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRHVwbGljYXRlVGFpbHMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0R1cGxpY2F0ZVRhaWxzLmNwcApA
QCAtNDQsNyArNDQsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogbmFtZXNw
YWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgQjNEdXBsaWNh
dGVUYWlsc0ludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30K
IAogY2xhc3MgRHVwbGljYXRlVGFpbHMgewogcHVibGljOgpAQCAtOTQsNyArOTYsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZGVtb3RlVmFsdWVzKG1fcHJv
YywgdmFsdWVzVG9EZW1vdGUpOwotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAo
QjNEdXBsaWNhdGVUYWlsc0ludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9n
KCJQcm9jZWR1cmUgYWZ0ZXIgdmFsdWUgZGVtb3Rpb246XG4iKTsKICAgICAgICAgICAgIGRhdGFM
b2cobV9wcm9jKTsKICAgICAgICAgfQpAQCAtMTE2LDcgKzExOCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIC8vIHBvaW50LgogICAgICAgICAgICAgY2FuZGlkYXRlcy5yZW1vdmUoYmxvY2spOwog
Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0R1cGxpY2F0ZVRh
aWxzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiRHVwbGljYXRp
bmcgIiwgKnRhaWwsICIgaW50byAiLCAqYmxvY2ssICJcbiIpOwogCiAgICAgICAgICAgICBibG9j
ay0+cmVtb3ZlTGFzdChtX3Byb2MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCmluZGV4IDFhZTQz
NTU2MTUxN2U5MWMwOWU2NjhjNjllYWZjMTU0YTc0OGJkZTYuLjlhMmU5OGFhNDM4NTYyODAwOWYx
MmE0NDUyNGE0ZDFhZmY1NWY5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAKQEAgLTUzLDcg
KzUzLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5hbWVzcGFjZSB7CiAK
LWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEIzRWxpbWluYXRlQ29tbW9u
U3ViZXhwcmVzc2lvbnNJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFs
c2U7Cit9CiAKIC8vIEZJWE1FOiBXZSBjb3VsZCB0cmVhdCBQYXRjaHBvaW50cyB3aXRoIGEgbm9u
LWVtcHR5IHNldCBvZiByZWFkcyBhcyBhICJtZW1vcnkgdmFsdWUiIGFuZCBzb21laG93CiAvLyBl
bGltaW5hdGUgcmVkdW5kYW50IG9uZXMuIFdlIHdvdWxkIG5lZWQgc29tZSB3YXkgb2YgZGV0ZXJt
aW5pbmcgaWYgdHdvIHBhdGNocG9pbnRzIGFyZSByZXBsYWNhYmxlLgpAQCAtMTYwLDcgKzE2Miw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQjMgYmVmb3JlIENTRTpcbiIsIG1fcHJvYyk7
CiAgICAgICAgIAogICAgICAgICBtX3Byb2MucmVzZXRWYWx1ZU93bmVycygpOwpAQCAtMTg4LDcg
KzE5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZW1vcnlWYWx1ZXNB
dFRhaWwuYWRkKG1lbW9yeSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJCbG9jayAiLCAqYmxvY2ss
ICI6ICIsIGRhdGEsICJcbiIpOwogICAgICAgICB9CiAKQEAgLTE5Niw3ICsxOTgsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gcG9zdE9yZGVyID0gbV9wcm9jLmJsb2Nr
c0luUG9zdE9yZGVyKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHBvc3RPcmRlci5zaXpl
KCk7IGktLTspIHsKICAgICAgICAgICAgIG1fYmxvY2sgPSBwb3N0T3JkZXJbaV07Ci0gICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1vblN1YmV4
cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiTG9v
a2luZyBhdCAiLCAqbV9ibG9jaywgIjpcbiIpOwogCiAgICAgICAgICAgICBtX2RhdGEgPSBJbXB1
cmVCbG9ja0RhdGEoKTsKQEAgLTIyMiw3ICsyMjQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBt
X2luc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQjMgYWZ0ZXIgQ1NFOlxuIiwgbV9w
cm9jKTsKIAogICAgICAgICByZXR1cm4gbV9jaGFuZ2VkOwpAQCAtNDg3LDcgKzQ4OSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIC8vIGV4cGVuc2l2ZSwgYnV0IGluIHRoZSBvdmVyd2hlbG1pbmcgbWFq
b3JpdHkgb2YgY2FzZXMgaXQgd2lsbCBhbG1vc3QgaW1tZWRpYXRlbHkgaGl0IGFuIAogICAgICAg
ICAvLyBvcGVyYXRpb24gdGhhdCBpbnRlcmZlcmVzLgogCi0gICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICAgICAgZGF0YUxvZygqbV92YWx1ZSwgIjogbG9va2luZyBmb3J3YXJkIGZv
ciBzdG9yZXMgdG8gIiwgKnB0ciwgIi4uLlxuIik7CiAKICAgICAgICAgLy8gRmlyc3Qgc2VhcmNo
IGZvcndhcmQgaW4gdGhpcyBiYXNpYyBibG9jay4KQEAgLTU1Nyw3ICs1NTksNyBAQCBwcml2YXRl
OgogICAgICAgICBpZiAobWF0Y2hlcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1v
blN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJF
bGltaW5hdGluZyAiLCAqbV92YWx1ZSwgIiBkdWUgdG8gIiwgcG9pbnRlckxpc3REdW1wKG1hdGNo
ZXMpLCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CkBAIC01NjYs
NyArNTY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBkb21pbmF0aW5n
TWF0Y2ggPSBtYXRjaGVzWzBdOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9kb21pbmF0
b3JzLmRvbWluYXRlcyhkb21pbmF0aW5nTWF0Y2gtPm93bmVyLCBtX2Jsb2NrKSk7CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzRWxpbWlu
YXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCIgICAgRWxpbWluYXRpbmcgdXNpbmcgIiwgKmRvbWluYXRpbmdNYXRjaCwgIlxu
Iik7CiAgICAgICAgICAgICBWZWN0b3I8VmFsdWUqPiBleHRyYVZhbHVlczsKICAgICAgICAgICAg
IGlmIChWYWx1ZSogdmFsdWUgPSByZXBsYWNlKGRvbWluYXRpbmdNYXRjaCwgZXh0cmFWYWx1ZXMp
KSB7CkBAIC01OTAsNyArNTkyLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBWYXJpYWJsZVZhbHVl
KiBnZXQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFyaWFibGVWYWx1ZT4oCiAgICAgICAgICAg
ICBtX2luZGV4LCBHZXQsIG1fdmFsdWUtPm9yaWdpbigpLCB2YXJpYWJsZSk7Ci0gICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0lu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEluc2VydGluZyBnZXQg
b2YgdmFsdWU6ICIsICpnZXQsICJcbiIpOwogICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElk
ZW50aXR5KGdldCk7CiAgICAgICAgICAgICAKQEAgLTYxNSwyMyArNjE3LDIzIEBAIHByaXZhdGU6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyPgogICAgIE1lbW9yeU1hdGNoZXMgZmluZE1l
bW9yeVZhbHVlKFZhbHVlKiBwdHIsIEhlYXBSYW5nZSByYW5nZSwgY29uc3QgRmlsdGVyJiBmaWx0
ZXIpCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEIzRWxpbWluYXRl
Q29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFM
b2coKm1fdmFsdWUsICI6IGxvb2tpbmcgYmFja3dhcmQgZm9yICIsICpwdHIsICIuLi5cbiIpOwog
ICAgICAgICAKICAgICAgICAgaWYgKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5j
ZSgpKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0VsaW1p
bmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiICAgIEdpdmluZyB1cCBiZWNhdXNlIGZlbmNlcy5cbiIpOwogICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKE1lbW9yeVZh
bHVlKiBtYXRjaCA9IG1fZGF0YS5tZW1vcnlWYWx1ZXNBdFRhaWwuZmluZChwdHIsIGZpbHRlcikp
IHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRl
Q29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgRm91bmQgIiwgKm1hdGNoLCAiIGxvY2FsbHkuXG4iKTsKICAgICAgICAgICAg
IHJldHVybiB7IG1hdGNoIH07CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9kYXRhLndyaXRl
cy5vdmVybGFwcyhyYW5nZSkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAg
ICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1c2Ugb2Ygd3JpdGVz
LlxuIik7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CkBAIC02NDIsMjcgKzY0
NCwyNyBAQCBwcml2YXRlOgogICAgICAgICBNZW1vcnlNYXRjaGVzIG1hdGNoZXM7CiAKICAgICAg
ICAgd2hpbGUgKEJhc2ljQmxvY2sqIGJsb2NrID0gd29ya2xpc3QucG9wKCkpIHsKLSAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhw
cmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
TG9va2luZyBhdCAiLCAqYmxvY2ssICJcbiIpOwogCiAgICAgICAgICAgICBJbXB1cmVCbG9ja0Rh
dGEmIGRhdGEgPSBtX2ltcHVyZUJsb2NrRGF0YVtibG9ja107CiAKICAgICAgICAgICAgIE1lbW9y
eVZhbHVlKiBtYXRjaCA9IGRhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmZpbmQocHRyLCBmaWx0ZXIp
OwogICAgICAgICAgICAgaWYgKG1hdGNoICYmIG1hdGNoICE9IG1fdmFsdWUpIHsKLSAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21t
b25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgRm91bmQgbWF0Y2g6ICIsICptYXRjaCwgIlxuIik7CiAgICAgICAgICAgICAg
ICAgbWF0Y2hlcy5hcHBlbmQobWF0Y2gpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoZGF0YS53cml0ZXMub3ZlcmxhcHMocmFuZ2Up
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEIz
RWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiICAgIEdpdmluZyB1cCBiZWNhdXNlIG9mIHdyaXRlcy5cbiIp
OwogICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmICghYmxvY2stPm51bVByZWRlY2Vzc29ycygpKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVz
c2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAg
IEdpdmluZyB1cCBiZWNhdXNlIGl0J3MgbGl2ZSBhdCByb290LlxuIik7CiAgICAgICAgICAgICAg
ICAgLy8gVGhpcyBlc3NlbnRpYWxseSBwcm92ZXMgdGhhdCB0aGlzIGlzIGxpdmUgYXQgdGhlIHBy
b2xvZ3VlLiBUaGF0IG1lYW5zIHRoYXQgd2UKICAgICAgICAgICAgICAgICAvLyBjYW5ub3QgcmVs
aWFibHkgb3B0aW1pemUgdGhpcyBjYXNlLgpAQCAtNjcyLDcgKzY3NCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICB3b3JrbGlzdC5wdXNoQWxsKGJsb2NrLT5wcmVkZWNlc3NvcnMoKSk7CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29t
bW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2co
IiAgICBHb3QgbWF0Y2hlczogIiwgcG9pbnRlckxpc3REdW1wKG1hdGNoZXMpLCAiXG4iKTsKICAg
ICAgICAgcmV0dXJuIG1hdGNoZXM7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzRml4U1NBLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZpeFNT
QS5jcHAKaW5kZXggZDIwMzgxZDIwMjJmYTA0ZjI2M2E4N2VmYjFiM2NkOTIwMmU2NzU4YS4uYjI4
ZjIxZjExMDdjODI2ZmFmNjJiM2Y4MzcwNjI1ODM2ODdlMzdmNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzRml4U1NBLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNGaXhTU0EuY3BwCkBAIC00OCw3ICs0OCw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgQjMgewogCiBuYW1lc3BhY2UgewogCi1jb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsK
K25hbWVzcGFjZSBCM0ZpeFNTQUludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2Ug
PSBmYWxzZTsKK30KIAogdm9pZCBraWxsRGVhZFZhcmlhYmxlcyhQcm9jZWR1cmUmIHByb2MpCiB7
CkBAIC0xNTcsNyArMTU5LDcgQEAgdm9pZCBmaXhTU0FHbG9iYWxseShQcm9jZWR1cmUmIHByb2Mp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIFZhbHVlKiBwaGkgPSBwcm9jLmFkZDxWYWx1ZT4oUGhpLCB2YXJpYWJs
ZS0+dHlwZSgpLCBibG9jay0+YXQoMCktPm9yaWdpbigpKTsKLSAgICAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkgeworICAgICAgICAgICAgICAgIGlmIChCM0ZpeFNTQUludGVybmFsOjp2ZXJib3Nl
KSB7CiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICAg
ICAiQWRkaW5nIFBoaSBmb3IgIiwgcG9pbnRlckR1bXAodmFyaWFibGUpLCAiIGF0ICIsICpibG9j
aywgIjogIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGRlZXBEdW1wKHByb2MsIHBoaSksICJc
biIpOwpAQCAtMjMxLDcgKzIzMyw3IEBAIHZvaWQgZml4U1NBR2xvYmFsbHkoUHJvY2VkdXJlJiBw
cm9jKQogICAgICAgICAgICAgICAgIFZhcmlhYmxlKiB2YXJpYWJsZSA9IGNhbGNWYXJUb1Zhcmlh
YmxlW2NhbGNWYXItPmluZGV4KCldOwogCiAgICAgICAgICAgICAgICAgVmFsdWUqIG1hcHBlZFZh
bHVlID0gZW5zdXJlTWFwcGluZyh2YXJpYWJsZSwgdXBzaWxvbkluc2VydGlvblBvaW50LCB1cHNp
bG9uT3JpZ2luKTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAg
ICAgIGlmIChCM0ZpeFNTQUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAiTWFwcGVkIHZhbHVlIGZvciAiLCAq
dmFyaWFibGUsICIgd2l0aCBzdWNjZXNzb3IgUGhpICIsICpwaGksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAiIGF0IGVuZCBvZiAiLCAqYmxvY2ssICI6ICIsIHBvaW50ZXJEdW1wKG1hcHBlZFZh
bHVlKSwgIlxuIik7CkBAIC0yNDUsNyArMjQ3LDcgQEAgdm9pZCBmaXhTU0FHbG9iYWxseShQcm9j
ZWR1cmUmIHByb2MpCiAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKICAgICB9
CiAKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChCM0ZpeFNTQUludGVybmFsOjp2ZXJib3Nl
KSB7CiAgICAgICAgIGRhdGFMb2coIkIzIGFmdGVyIFNTQSBjb252ZXJzaW9uOlxuIik7CiAgICAg
ICAgIGRhdGFMb2cocHJvYyk7CiAgICAgfQpAQCAtMjY2LDcgKzI2OCw3IEBAIHZvaWQgZGVtb3Rl
VmFsdWVzKFByb2NlZHVyZSYgcHJvYywgY29uc3QgSW5kZXhTZXQ8VmFsdWUqPiYgdmFsdWVzKQog
ICAgICAgICAgICAgcGhpTWFwLmFkZCh2YWx1ZSwgcHJvYy5hZGRWYXJpYWJsZSh2YWx1ZS0+dHlw
ZSgpKSk7CiAgICAgfQogCi0gICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoQjNGaXhTU0FJbnRl
cm5hbDo6dmVyYm9zZSkgewogICAgICAgICBkYXRhTG9nKCJEZW1vdGluZyB2YWx1ZXMgYXMgZm9s
bG93czpcbiIpOwogICAgICAgICBkYXRhTG9nKCIgICBtYXAgPSAiKTsKICAgICAgICAgQ29tbWFQ
cmludGVyIGNvbW1hOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRm9s
ZFBhdGhDb25zdGFudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRm9sZFBhdGhD
b25zdGFudHMuY3BwCmluZGV4IGI5YmRjOGQ0ZjI4OGI4MmM2MzMxZWYzMTBkMzMzZTNhNTY0N2Uw
NGQuLjIyMjUwY2JjN2YzNWM0Y2ZjZjk5MTZhNWFiMmVlNzI2YWZjNGFkNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZvbGRQYXRoQ29uc3RhbnRzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGb2xkUGF0aENvbnN0YW50cy5jcHAKQEAgLTQxLDcg
KzQxLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5hbWVzcGFjZSB7CiAK
LWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEIzRm9sZFBhdGhDb25zdGFu
dHNJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNs
YXNzIEZvbGRQYXRoQ29uc3RhbnRzIHsKIHB1YmxpYzoKQEAgLTU1LDcgKzU3LDcgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAKLSAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgIGlmIChCM0ZvbGRQYXRoQ29uc3RhbnRzSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICBkYXRhTG9nKCJCMyBiZWZvcmUgZm9sZGluZyBwYXRoIGNvbnN0YW50czog
XG4iLCBtX3Byb2MsICJcbiIpOwogICAgICAgICAKICAgICAgICAgLy8gRmluZCBhbGwgb2YgdGhl
IHZhbHVlcyB0aGF0IGFyZSB0aGUgc3ViamVjdCBvZiBhIGJyYW5jaCBvciBzd2l0Y2guIEZvciBh
bnkgc3VjY2Vzc29yCkBAIC04MCw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUX1VOVVNFRChvdGhlck92ZXJyaWRlLCBvdGhlck92ZXJyaWRlLmJsb2NrICE9IG92
ZXJyaWRlLmJsb2NrKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICBpZiAoQjNGb2xkUGF0aENvbnN0YW50c0ludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgICAgIGRhdGFMb2coIk92ZXJyaWRpbmcgIiwgKnZhbHVlLCAiIGZyb20gIiwg
KmZyb20sICI6ICIsIG92ZXJyaWRlLCAiXG4iKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
Zm9yVmFsdWUuYXBwZW5kKG92ZXJyaWRlKTsKQEAgLTE0OSw3ICsxNTEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG92ZXJyaWRlOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0ZvbGRQYXRoQ29uc3Rh
bnRzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiSW4gYmxvY2sg
IiwgKmJsb2NrLCAiIGdldHRpbmcgb3ZlcnJpZGUgZm9yICIsICp2YWx1ZSwgIjogIiwgcmVzdWx0
LCAiXG4iKTsKIAogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luZmVyU3dpdGNoZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzSW5mZXJTd2l0Y2hlcy5jcHAKaW5kZXggZjI5ZjRmMDk1NGIyYWU3MjAwNWEx
MzAyZWZmY2NkNGUzNGRmYjg3OC4uZWU2MTJmZWYyOGM2YTc3YWFjMTVjOThhOTdhYzkzOTJiMTNj
NWFkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5mZXJTd2l0Y2hl
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5mZXJTd2l0Y2hlcy5jcHAK
QEAgLTQyLDcgKzQyLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5hbWVz
cGFjZSB7CiAKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEIzSW5mZXJT
d2l0Y2hlc0ludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30K
IAogY2xhc3MgSW5mZXJTd2l0Y2hlcyB7CiBwdWJsaWM6CkBAIC01NSw3ICs1Nyw3IEBAIHB1Ymxp
YzoKICAgICAKICAgICBib29sIHJ1bigpCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ZGF0YUxvZygiQjMgYmVmb3JlIGluZmVyU3dpdGNoZXM6XG4iLCBtX3Byb2MpOwogICAgICAgICAK
ICAgICAgICAgYm9vbCBjaGFuZ2VkID0gdHJ1ZTsKQEAgLTYzLDcgKzY1LDcgQEAgcHVibGljOgog
ICAgICAgICB3aGlsZSAoY2hhbmdlZCkgewogICAgICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChC
M0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9n
KCJQZXJmb3JtaW5nIGZpeHBvaW50IGl0ZXJhdGlvbjpcbiIpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jKQpAQCAtNzgsNyArODAsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fcHJvYy5kZWxldGVPcnBoYW5z
KCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAg
aWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRh
dGFMb2coIkIzIGFmdGVyIGluZmVyU3dpdGNoZXM6XG4iLCBtX3Byb2MpOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTk2LDEwICs5OCwxMCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKICAgICAgICAgU3dpdGNoRGVzY3JpcHRp
b24gZGVzY3JpcHRpb24gPSBkZXNjcmliZShibG9jayk7Ci0gICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICBpZiAoQjNJbmZlclN3aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICBkYXRhTG9nKCJEZXNjcmlwdGlvbiBvZiBwcmltYXJ5IGJsb2NrICIsICpibG9jaywgIjogIiwg
ZGVzY3JpcHRpb24sICJcbiIpOwogICAgICAgICBpZiAoIWRlc2NyaXB0aW9uKSB7Ci0gICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGluZyBiZWNhdXNl
IG5vdCBzd2l0Y2gtbGlrZS5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CkBAIC0xMTUsMTcgKzExNywxNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgaWYgKHZhbHVlID09IGRlc2NyaXB0aW9uLmJyYW5jaCkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAg
ICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBCYWlsaW5nIGJlY2F1c2Ugb2YgIiwgZGVlcER1bXAobV9wcm9jLCB2YWx1
ZSksICJcbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGJsb2NrLT5wcmVkZWNlc3Nvcigw
KTsKICAgICAgICAgU3dpdGNoRGVzY3JpcHRpb24gcHJlZGVjZXNzb3JEZXNjcmlwdGlvbiA9IGRl
c2NyaWJlKHByZWRlY2Vzc29yKTsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChC
M0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICBEZXNjcmlwdGlvbiBvZiBwcmVkZWNlc3NvciBibG9jayAiLCAqcHJlZGVjZXNzb3IsICI6ICIs
IHByZWRlY2Vzc29yRGVzY3JpcHRpb24sICJcbiIpOwogICAgICAgICBpZiAoIXByZWRlY2Vzc29y
RGVzY3JpcHRpb24pIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYg
KEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFM
b2coIiAgICBCYWlsaW5nIGJlY2F1c2Ugbm90IHN3aXRjaC1saWtlLlxuIik7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTEzMyw3ICsxMzUsNyBAQCBwcml2YXRlOgog
ICAgICAgICAvLyBCb3RoIHVzIGFuZCB0aGUgcHJlZGVjZXNzb3IgYXJlIHN3aXRjaC1saWtlLCBi
dXQgdGhhdCBkb2Vzbid0IG1lYW4gdGhhdCB3ZSdyZSBjb21wYXRpYmxlLgogICAgICAgICAvLyBX
ZSBtYXkgYmUgc3dpdGNoaW5nIG9uIGRpZmZlcmVudCB2YWx1ZXMhCiAgICAgICAgIGlmIChkZXNj
cmlwdGlvbi5zb3VyY2UgIT0gcHJlZGVjZXNzb3JEZXNjcmlwdGlvbi5zb3VyY2UpIHsKLSAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBCYWlsaW5nIGJlY2F1
c2Ugc291cmNlcyBkb24ndCBtYXRjaC5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CkBAIC0xNDMsNyArMTQ1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8ganVzdCB0
b3RhbGx5IHJlZHVuZGFudCBhbmQgd2Ugc2hvdWxkIGJlIGdldHRpbmcgcmlkIG9mIGl0LiBCdXQg
d2UgZG9uJ3QgaGFuZGxlIHRoYXQgaGVyZSwKICAgICAgICAgLy8geWV0LgogICAgICAgICBpZiAo
cHJlZGVjZXNzb3JEZXNjcmlwdGlvbi5mYWxsVGhyb3VnaC5ibG9jaygpICE9IGJsb2NrKSB7Ci0g
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGluZyBi
ZWNhdXNlIGZhbGwtdGhyb3VnaCBvZiBwcmVkZWNlc3NvciBpcyBub3QgdGhlIHByaW1hcnkgYmxv
Y2suXG4iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMTUxLDE0
ICsxNTMsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlcmUgYWlu
J3Qgbm8gbG9vcHMuCiAgICAgICAgIGlmIChkZXNjcmlwdGlvbi5mYWxsVGhyb3VnaC5ibG9jaygp
ID09IGJsb2NrCiAgICAgICAgICAgICB8fCBkZXNjcmlwdGlvbi5mYWxsVGhyb3VnaC5ibG9jaygp
ID09IHByZWRlY2Vzc29yKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAg
IGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgQmFpbGluZyBiZWNhdXNlIG9mIGZhbGwtdGhyb3VnaCBsb29wLlxuIik7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgZm9yIChTd2l0Y2hD
YXNlIHN3aXRjaENhc2UgOiBkZXNjcmlwdGlvbi5jYXNlcykgewogICAgICAgICAgICAgaWYgKHN3
aXRjaENhc2UudGFyZ2V0QmxvY2soKSA9PSBibG9jawogICAgICAgICAgICAgICAgIHx8IHN3aXRj
aENhc2UudGFyZ2V0QmxvY2soKSA9PSBwcmVkZWNlc3NvcikgewotICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEJhaWxpbmcgYmVjYXVz
ZSBvZiBsb29wIGluIHByaW1hcnkgY2FzZXMuXG4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICB9CkBAIC0xNjYsMTMgKzE2OCwxMyBAQCBwcml2YXRlOgogICAg
ICAgICBmb3IgKFN3aXRjaENhc2Ugc3dpdGNoQ2FzZSA6IHByZWRlY2Vzc29yRGVzY3JpcHRpb24u
Y2FzZXMpIHsKICAgICAgICAgICAgIGlmIChzd2l0Y2hDYXNlLnRhcmdldEJsb2NrKCkgPT0gYmxv
Y2sKICAgICAgICAgICAgICAgICB8fCBzd2l0Y2hDYXNlLnRhcmdldEJsb2NrKCkgPT0gcHJlZGVj
ZXNzb3IpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBp
ZiAoQjNJbmZlclN3aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBCYWlsaW5nIGJlY2F1c2Ugb2YgbG9vcCBpbiBwcmVkZWNlc3NvciBjYXNl
cy5cbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCM0lu
ZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBE
b2luZyBpdCFcbiIpOwogICAgICAgICAvLyBXZSdyZSBjb21taXR0ZWQgdG8gZG9pbmcgdGhlIHRo
aW5nLgogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAppbmRleCA5NjNjMTBlZGM1ZTQ5
MzlmNWZiZTJlZDQyNTY0ZGQzZDdlMDc2M2RkLi4xNDU2N2ZjYzViZGFjOWUwZjhlNzE4MTY4ZDZm
ZjI3NzBjNjQ4ZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
ck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQWlyQXJnLmgiCiAjaW5jbHVkZSAi
QjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tJbnNlcnRpb25TZXQuaCIK
ICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKQEAgLTM5LDExICs0MCwxNSBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAordXNpbmcgQXJnID0gQWlyOjpBcmc7Cit1c2luZyBD
b2RlID0gQWlyOjpDb2RlOwordXNpbmcgVG1wID0gQWlyOjpUbXA7CisKIG5hbWVzcGFjZSB7CiAK
LWNsYXNzIExvd2VyTWFjcm9zIHsKK2NsYXNzIExvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25z
IHsKIHB1YmxpYzoKLSAgICBMb3dlck1hY3JvcyhQcm9jZWR1cmUmIHByb2MpCisgICAgTG93ZXJN
YWNyb3NBZnRlck9wdGltaXphdGlvbnMoUHJvY2VkdXJlJiBwcm9jKQogICAgICAgICA6IG1fcHJv
Yyhwcm9jKQogICAgICAgICAsIG1fYmxvY2tJbnNlcnRpb25TZXQocHJvYykKICAgICAgICAgLCBt
X2luc2VydGlvblNldChwcm9jKQpAQCAtMTgzLDcgKzE4OCw3IEBAIHByaXZhdGU6CiAKIGJvb2wg
bG93ZXJNYWNyb3NJbXBsKFByb2NlZHVyZSYgcHJvYykKIHsKLSAgICBMb3dlck1hY3JvcyBsb3dl
ck1hY3Jvcyhwcm9jKTsKKyAgICBMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucyBsb3dlck1h
Y3Jvcyhwcm9jKTsKICAgICByZXR1cm4gbG93ZXJNYWNyb3MucnVuKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggMTQ4OWMzMTFjNjNlZTAwMmZh
OTFhNzYxYjFkNjA2MGNhZjRlMjkzMS4uNzY0ZGI0Y2JkODY4ZGQ4NTBiZDhhM2FiZDE0ODJhZmE0
MjM4NDJkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fp
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAg
LTY5LDIxICs2OSwyNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAotdXNp
bmcgbmFtZXNwYWNlIEFpcjsKLQogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7CituYW1lc3BhY2UgQjNMb3dlclRvQWlySW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJv
b2wgdmVyYm9zZSA9IGZhbHNlOworfQorCit1c2luZyBBcmcgPSBBaXI6OkFyZzsKK3VzaW5nIElu
c3QgPSBBaXI6Okluc3Q7Cit1c2luZyBDb2RlID0gQWlyOjpDb2RlOwordXNpbmcgVG1wID0gQWly
OjpUbXA7CiAKIC8vIEZJWE1FOiBXZSB3b3VsZG4ndCBuZWVkIHRoaXMgaWYgQWlyIHN1cHBvcnRl
ZCBXaWR0aCBtb2RpZmllcnMgaW4gQWlyOjpLaW5kLgogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2OTI0NwogI2RlZmluZSBPUENPREVfRk9SX1dJRFRIKG9wY29k
ZSwgd2lkdGgpICggXAotICAgICh3aWR0aCkgPT0gV2lkdGg4ID8gb3Bjb2RlICMjIDggOiBcCi0g
ICAgKHdpZHRoKSA9PSBXaWR0aDE2ID8gb3Bjb2RlICMjIDE2IDogXAotICAgICh3aWR0aCkgPT0g
V2lkdGgzMiA/IG9wY29kZSAjIyAzMiA6IFwKLSAgICBvcGNvZGUgIyMgNjQpCisgICAgKHdpZHRo
KSA9PSBXaWR0aDggPyBBaXI6Om9wY29kZSAjIyA4IDogXAorICAgICh3aWR0aCkgPT0gV2lkdGgx
NiA/IEFpcjo6b3Bjb2RlICMjIDE2IDogICAgXAorICAgICh3aWR0aCkgPT0gV2lkdGgzMiA/IEFp
cjo6b3Bjb2RlICMjIDMyIDogICAgXAorICAgIEFpcjo6b3Bjb2RlICMjIDY0KQogI2RlZmluZSBP
UENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChvcGNvZGUsIHdpZHRoKSAoIFwKLSAgICAod2lkdGgp
ID09IFdpZHRoNjQgPyBvcGNvZGUgIyMgNjQgOiBvcGNvZGUgIyMgMzIpCisgICAgKHdpZHRoKSA9
PSBXaWR0aDY0ID8gQWlyOjpvcGNvZGUgIyMgNjQgOiBBaXI6Om9wY29kZSAjIyAzMikKIAogY2xh
c3MgTG93ZXJUb0FpciB7CiBwdWJsaWM6CkBAIC0xMDcsNiArMTEyLDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBydW4oKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAg
ICAgZm9yIChCMzo6QmFzaWNCbG9jayogYmxvY2sgOiBtX3Byb2NlZHVyZSkKICAgICAgICAgICAg
IG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXSA9IG1fY29kZS5hZGRCbG9jayhibG9jay0+ZnJlcXVlbmN5
KCkpOwogICAgICAgICAKQEAgLTExNCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBz
d2l0Y2ggKHZhbHVlLT5vcGNvZGUoKSkgewogICAgICAgICAgICAgY2FzZSBQaGk6IHsKICAgICAg
ICAgICAgICAgICBtX3BoaVRvVG1wW3ZhbHVlXSA9IG1fY29kZS5uZXdUbXAodmFsdWUtPnJlc3Vs
dEJhbmsoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAg
aWYgKEIzTG93ZXJUb0FpckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nKCJQaGkgdG1wIGZvciAiLCAqdmFsdWUsICI6ICIsIG1fcGhpVG9UbXBbdmFsdWVdLCAi
XG4iKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTE0Niw3ICsx
NTIsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgICAgIG1faXNSYXJlID0gIW1fZmFzdFdvcmtsaXN0
LnNhdyhibG9jayk7CiAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYg
KEIzTG93ZXJUb0FpckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2co
Ikxvd2VyaW5nIEJsb2NrICIsICpibG9jaywgIjpcbiIpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVwIGNvcnJlY3Rs
eS4KQEAgLTE2MywxMCArMTY5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBpZiAobV9s
b2NrZWQuY29udGFpbnMobV92YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgICAgIG1faW5zdHMuYXBwZW5kKFZlY3RvcjxJbnN0PigpKTsKLSAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQjNMb3dlclRvQWlySW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvd2VyaW5nICIs
IGRlZXBEdW1wKG1fcHJvY2VkdXJlLCBtX3ZhbHVlKSwgIjpcbiIpOwogICAgICAgICAgICAgICAg
IGxvd2VyKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoQjNMb3dlclRvQWlySW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICAg
ICAgZm9yIChJbnN0JiBpbnN0IDogbV9pbnN0cy5sYXN0KCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgIiwgaW5zdCwgIlxuIik7CiAgICAgICAgICAgICAgICAgfQpAQCAt
Mzc5LDcgKzM4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmVhbFRtcCA9IG1fY29k
ZS5uZXdUbXAodmFsdWUtPnJlc3VsdEJhbmsoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fcHJv
Y2VkdXJlLmlzRmFzdENvbnN0YW50KHZhbHVlLT5rZXkoKSkpCiAgICAgICAgICAgICAgICAgICAg
IG1fY29kZS5hZGRGYXN0VG1wKHJlYWxUbXApOwotICAgICAgICAgICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICAgICAgICAgIGlmIChCM0xvd2VyVG9BaXJJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygiVG1wIGZvciAiLCAqdmFsdWUsICI6ICIsIHJlYWxU
bXAsICJcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdG1wID0gcmVhbFRtcDsKQEAg
LTkwNiw2ICs5MTIsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPEFpcjo6T3Bjb2RlIG9wY29k
ZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2ND4KICAgICB2b2lkIGFwcGVuZFNoaWZ0KFZhbHVlKiB2
YWx1ZSwgVmFsdWUqIGFtb3VudCkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7
CiAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUob3Bjb2RlMzIsIG9w
Y29kZTY0LCB2YWx1ZS0+dHlwZSgpKTsKICAgICAgICAgCiAgICAgICAgIGlmIChpbW0oYW1vdW50
KSkgewpAQCAtMTAxOSw2ICsxMDI2LDcgQEAgcHJpdmF0ZToKIAogICAgIEluc3QgY3JlYXRlU3Rv
cmUoQWlyOjpLaW5kIG1vdmUsIFZhbHVlKiB2YWx1ZSwgY29uc3QgQXJnJiBkZXN0KQogICAgIHsK
KyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAgaWYgKGF1dG8gaW1tX3ZhbHVl
ID0gaW1tKHZhbHVlKSkgewogICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSAmJiBpbW1fdmFsdWUu
dmFsdWUoKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChtb3ZlLm9wY29kZSkgewpA
QCAtMTA0Myw2ICsxMDUxLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBBaXI6Ok9wY29kZSBzdG9y
ZU9wY29kZShXaWR0aCB3aWR0aCwgQmFuayBiYW5rKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFt
ZXNwYWNlIEFpcjsKICAgICAgICAgc3dpdGNoICh3aWR0aCkgewogICAgICAgICBjYXNlIFdpZHRo
ODoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0gR1ApOwpAQCAtMTA3Myw2ICsx
MDgyLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGFwcGVuZFN0b3JlKFZhbHVlKiB2YWx1
ZSwgY29uc3QgQXJnJiBkZXN0KQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsK
ICAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IHZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQobWVtb3J5LT5pc1N0b3JlKCkpOwogCkBAIC0xMTAwLDYg
KzExMTAsNyBAQCBwcml2YXRlOgogCiAgICAgQWlyOjpPcGNvZGUgbW92ZUZvclR5cGUoVHlwZSB0
eXBlKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAgc3dpdGNo
ICh0eXBlKSB7CiAgICAgICAgIGNhc2UgSW50MzI6CiAgICAgICAgICAgICByZXR1cm4gTW92ZTMy
OwpAQCAtMTExOSw2ICsxMTMwLDcgQEAgcHJpdmF0ZToKIAogICAgIEFpcjo6T3Bjb2RlIHJlbGF4
ZWRNb3ZlRm9yVHlwZShUeXBlIHR5cGUpCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2Ug
QWlyOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBJbnQzMjoKICAgICAg
ICAgY2FzZSBJbnQ2NDoKQEAgLTExNjIsOCArMTE3NCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBw
cmludChWYWx1ZSogb3JpZ2luLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewogICAg
ICAgICBhdXRvIHByaW50TGlzdCA9IFByaW50ZXI6Om1ha2VQcmludFJlY29yZExpc3QoYXJndW1l
bnRzLi4uKTsKLSAgICAgICAgYXV0byBwcmludFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxQcmludFNw
ZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPFByaW50U3BlY2lhbD4o
cHJpbnRMaXN0KSkpOwotICAgICAgICBJbnN0IGluc3QoUGF0Y2gsIG9yaWdpbiwgQXJnOjpzcGVj
aWFsKHByaW50U3BlY2lhbCkpOworICAgICAgICBhdXRvIHByaW50U3BlY2lhbCA9IHN0YXRpY19j
YXN0PEFpcjo6UHJpbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1
ZTxBaXI6OlByaW50U3BlY2lhbD4ocHJpbnRMaXN0KSkpOworICAgICAgICBJbnN0IGluc3QoQWly
OjpQYXRjaCwgb3JpZ2luLCBBcmc6OnNwZWNpYWwocHJpbnRTcGVjaWFsKSk7CiAgICAgICAgIFBy
aW50ZXI6OmFwcGVuZEFpckFyZ3MoaW5zdCwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1l
bnRzKS4uLik7CiAgICAgICAgIGFwcGVuZChXVEZNb3ZlKGluc3QpKTsKICAgICB9CkBAIC0xNzYy
LDYgKzE3NzQsNyBAQCBwcml2YXRlOgogCiAgICAgSW5zdCBjcmVhdGVCcmFuY2goVmFsdWUqIHZh
bHVlLCBib29sIGludmVydGVkID0gZmFsc2UpCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3Bh
Y2UgQWlyOwogICAgICAgICByZXR1cm4gY3JlYXRlR2VuZXJpY0NvbXBhcmUoCiAgICAgICAgICAg
ICB2YWx1ZSwKICAgICAgICAgICAgIFt0aGlzXSAoCkBAIC0xODQ1LDYgKzE4NTgsNyBAQCBwcml2
YXRlOgogCiAgICAgSW5zdCBjcmVhdGVDb21wYXJlKFZhbHVlKiB2YWx1ZSwgYm9vbCBpbnZlcnRl
ZCA9IGZhbHNlKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAg
cmV0dXJuIGNyZWF0ZUdlbmVyaWNDb21wYXJlKAogICAgICAgICAgICAgdmFsdWUsCiAgICAgICAg
ICAgICBbdGhpc10gKApAQCAtMTkyNCw2ICsxOTM4LDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAg
IEluc3QgY3JlYXRlU2VsZWN0KGNvbnN0IE1vdmVDb25kaXRpb25hbGx5Q29uZmlnJiBjb25maWcp
CiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICBhdXRvIGNyZWF0
ZVNlbGVjdEluc3RydWN0aW9uID0gWyZdIChBaXI6Ok9wY29kZSBvcGNvZGUsIGNvbnN0IEFyZyYg
Y29uZGl0aW9uLCBBcmdQcm9taXNlJiBsZWZ0LCBBcmdQcm9taXNlJiByaWdodCkgLT4gSW5zdCB7
CiAgICAgICAgICAgICBpZiAoaXNWYWxpZEZvcm0ob3Bjb2RlLCBjb25kaXRpb24ua2luZCgpLCBs
ZWZ0LmtpbmQoKSwgcmlnaHQua2luZCgpLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkg
ewogICAgICAgICAgICAgICAgIFRtcCByZXN1bHQgPSB0bXAobV92YWx1ZSk7CkBAIC0xOTg3LDYg
KzIwMDIsNyBAQCBwcml2YXRlOgogICAgIAogICAgIGJvb2wgdHJ5QXBwZW5kTGVhKCkKICAgICB7
CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAgIEFpcjo6T3Bjb2RlIGxlYU9w
Y29kZSA9IHRyeU9wY29kZUZvclR5cGUoTGVhMzIsIExlYTY0LCBtX3ZhbHVlLT50eXBlKCkpOwog
ICAgICAgICBpZiAoIWlzVmFsaWRGb3JtKGxlYU9wY29kZSwgQXJnOjpJbmRleCwgQXJnOjpUbXAp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjExNiw2ICsyMTMyLDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgYXBwZW5kWDg2RGl2KEIzOjpPcGNvZGUgb3ApCiAgICAgeworICAgICAg
ICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICBBaXI6Ok9wY29kZSBjb252ZXJ0VG9Eb3Vi
bGVXb3JkOwogICAgICAgICBBaXI6Ok9wY29kZSBkaXY7CiAgICAgICAgIHN3aXRjaCAobV92YWx1
ZS0+dHlwZSgpKSB7CkBAIC0yMTQzLDYgKzIxNjAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBh
cHBlbmRYODZVRGl2KEIzOjpPcGNvZGUgb3ApCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3Bh
Y2UgQWlyOwogICAgICAgICBBaXI6Ok9wY29kZSBkaXYgPSBtX3ZhbHVlLT50eXBlKCkgPT0gSW50
MzIgPyBYODZVRGl2MzIgOiBYODZVRGl2NjQ7CiAKICAgICAgICAgQVNTRVJUKG9wID09IFVEaXYg
fHwgb3AgPT0gVU1vZCk7CkBAIC0yMTc4LDYgKzIxOTYsNyBAQCBwcml2YXRlOgogICAgIC8vIGdl
bmVyYXRlZC4gSXQgYXNzdW1lcyB0aGF0IHlvdSd2ZSBjb25zdW1lZCBldmVyeXRoaW5nIHRoYXQg
bmVlZHMgdG8gYmUgY29uc3VtZWQuCiAgICAgdm9pZCBhcHBlbmRDQVMoVmFsdWUqIGF0b21pY1Zh
bHVlLCBib29sIGludmVydCkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAg
ICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBhdG9taWNWYWx1ZS0+YXM8QXRvbWljVmFsdWU+
KCk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGF0b21pYyk7CiAgICAgICAgIApAQCAtMjM0MCw2
ICsyMzU5LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGFwcGVuZEdlbmVyYWxBdG9taWMo
QWlyOjpPcGNvZGUgb3Bjb2RlLCBDb21tdXRhdGl2aXR5IGNvbW11dGF0aXZpdHkgPSBOb3RDb21t
dXRhdGl2ZSkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAgIEF0
b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsKICAgICAgICAg
CiAgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihtX3ZhbHVlKTsKQEAgLTI0MjQsNiArMjQ0NCw3
IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBsb3dlcigpCiAgICAgeworICAgICAgICB1c2lu
ZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPm9wY29kZSgpKSB7CiAg
ICAgICAgIGNhc2UgQjM6Ok5vcDogewogICAgICAgICAgICAgLy8gWWVzLCB3ZSB3aWxsIHRvdGFs
bHkgc2VlIE5vcCdzIGJlY2F1c2Ugc29tZSBwaGFzZXMgd2lsbCByZXBsYWNlV2l0aE5vcCgpIGlu
c3RlYWQgb2YKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9p
bnRTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRTcGVj
aWFsLmNwcAppbmRleCA0N2YwYWJkMmZmZjNiNTA1NzA4MmQ3MDNhNTE0MjNjOGNiMzhiMGIwLi5i
Mzc1Y2RkMGUwZmIwYmYwODYyMDRkMTI3NjNhYTBkNTJiMTgxMmEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwCkBAIC0zNCw3ICszNCw4
IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi11c2luZyBuYW1lc3BhY2Ug
QWlyOwordXNpbmcgQXJnID0gQWlyOjpBcmc7Cit1c2luZyBJbnN0ID0gQWlyOjpJbnN0OwogCiBQ
YXRjaHBvaW50U3BlY2lhbDo6UGF0Y2hwb2ludFNwZWNpYWwoKQogewpAQCAtMTM1LDggKzEzNiw3
IEBAIGJvb2wgUGF0Y2hwb2ludFNwZWNpYWw6OmFkbWl0c0V4dGVuZGVkT2Zmc2V0QWRkcihJbnN0
JiBpbnN0LCB1bnNpZ25lZCBhcmdJbmRleCkKICAgICByZXR1cm4gYWRtaXRzU3RhY2soaW5zdCwg
YXJnSW5kZXgpOwogfQogCi1DQ2FsbEhlbHBlcnM6Okp1bXAgUGF0Y2hwb2ludFNwZWNpYWw6Omdl
bmVyYXRlKAotICAgIEluc3QmIGluc3QsIENDYWxsSGVscGVycyYgaml0LCBHZW5lcmF0aW9uQ29u
dGV4dCYgY29udGV4dCkKK0NDYWxsSGVscGVyczo6SnVtcCBQYXRjaHBvaW50U3BlY2lhbDo6Z2Vu
ZXJhdGUoSW5zdCYgaW5zdCwgQ0NhbGxIZWxwZXJzJiBqaXQsIEFpcjo6R2VuZXJhdGlvbkNvbnRl
eHQmIGNvbnRleHQpCiB7CiAgICAgUGF0Y2hwb2ludFZhbHVlKiB2YWx1ZSA9IGluc3Qub3JpZ2lu
LT5hczxQYXRjaHBvaW50VmFsdWU+KCk7CiAgICAgQVNTRVJUKHZhbHVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAKaW5kZXggMWM3
YjBkMDAyYTFiOTE5ZTIzMGZlNjQ2YjAzMmU0YTRlOTljZDE2MS4uNmQzMWY3Y2JjMDQ2N2NiZGQ2
ZjZlM2M1OGM2MGNjM2U5MTdjY2ViYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAKQEAgLTM5LDcgKzM5LDkgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZh
bHNlOworbmFtZXNwYWNlIEIzUmVkdWNlRG91YmxlVG9GbG9hdEludGVybmFsIHsKK3N0YXRpYyBj
b25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIGJvb2wgcHJpbnRSZW1haW5pbmdDb252ZXJz
aW9ucyA9IGZhbHNlOwogCiBjbGFzcyBEb3VibGVUb0Zsb2F0UmVkdWN0aW9uIHsKQEAgLTEyOCw3
ICsxMzAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICB9IHdoaWxlIChjaGFu
Z2VkUGhpU3RhdGUpOwogCi0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChCM1Jl
ZHVjZURvdWJsZVRvRmxvYXRJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxv
ZygiQ29udmVyc2lvbiBjYW5kaWRhdGVzOlxuIik7CiAgICAgICAgICAgICBmb3IgKEJhc2ljQmxv
Y2sqIGJsb2NrIDogbV9wcm9jZWR1cmUpIHsKICAgICAgICAgICAgICAgICBmb3IgKFZhbHVlKiB2
YWx1ZSA6ICpibG9jaykgewpAQCAtMTkyLDcgKzE5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gd2hpbGUgKGNoYW5nZWRQaGlTdGF0ZSk7CiAKLSAgICAgICAgaWYgKHZl
cmJvc2UpIHsKKyAgICAgICAgaWYgKEIzUmVkdWNlRG91YmxlVG9GbG9hdEludGVybmFsOjp2ZXJi
b3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJQaGlzIGNvbnRhaW5pbmcgZmxvYXQgdmFsdWVz
OlxuIik7CiAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jZWR1cmUp
IHsKICAgICAgICAgICAgICAgICBmb3IgKFZhbHVlKiB2YWx1ZSA6ICpibG9jaykgewpAQCAtNDg5
LDEzICs0OTEsMTMgQEAgdm9pZCByZWR1Y2VEb3VibGVUb0Zsb2F0KFByb2NlZHVyZSYgcHJvY2Vk
dXJlKQogewogICAgIFBoYXNlU2NvcGUgcGhhc2VTY29wZShwcm9jZWR1cmUsICJyZWR1Y2VEb3Vi
bGVUb0Zsb2F0Iik7CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQjNSZWR1Y2VEb3VibGVU
b0Zsb2F0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkJlZm9yZSBEb3VibGVU
b0Zsb2F0UmVkdWN0aW9uOlxuIiwgcHJvY2VkdXJlLCAiXG4iKTsKIAogICAgIERvdWJsZVRvRmxv
YXRSZWR1Y3Rpb24gZG91YmxlVG9GbG9hdFJlZHVjdGlvbihwcm9jZWR1cmUpOwogICAgIGRvdWJs
ZVRvRmxvYXRSZWR1Y3Rpb24ucnVuKCk7CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQjNS
ZWR1Y2VEb3VibGVUb0Zsb2F0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkFm
dGVyIERvdWJsZVRvRmxvYXRSZWR1Y3Rpb246XG4iLCBwcm9jZWR1cmUsICJcbiIpOwogCiAgICAg
cHJpbnRHcmFwaElmQ29udmVydGluZyhwcm9jZWR1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCmluZGV4IGMyMmU5YjQ1M2QwOTUyOTY3ZjIyYTZm
ZmJhNjQ5MWZmZDAwZjljNmMuLjU1MDJkNWU0N2U1ODcwNjEwNjJiMTY4NmQ5YmIzYzI2OTM1OGI5
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3Ro
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAK
QEAgLTg4LDcgKzg4LDkgQEAgbmFtZXNwYWNlIHsKIC8vIGNvbnN0YW50cyB0aGVuIHRoZSBjYW5v
bmljYWwgZm9ybSBpbnZvbHZlcyB0aGUgbG93ZXItaW5kZXhlZCB2YWx1ZSBmaXJzdC4gR2l2ZW4g
QWRkKHgsIHkpLCBpdCdzCiAvLyBjYW5vbmljYWwgaWYgeC0+aW5kZXgoKSA8PSB5LT5pbmRleCgp
LgogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBCM1JlZHVjZVN0cmVuZ3RoSW50
ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiAvLyBGSVhN
RTogVGhpcyBJbnRSYW5nZSBzdHVmZiBzaG91bGQgYmUgcmVmYWN0b3JlZCBpbnRvIGEgZ2VuZXJh
bCBjb25zdGFudCBwcm9wYWdhdG9yLiBJdCdzIHdlaXJkCiAvLyB0aGF0IGl0J3MganVzdCBzaXR0
aW5nIGhlcmUgaW4gdGhpcyBmaWxlLgpAQCAtNDE0LDcgKzQxNiw3IEBAIHB1YmxpYzoKIAogICAg
ICAgICAgICAgaWYgKGZpcnN0KQogICAgICAgICAgICAgICAgIGZpcnN0ID0gZmFsc2U7Ci0gICAg
ICAgICAgICBlbHNlIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICBlbHNlIGlmIChCM1JlZHVj
ZVN0cmVuZ3RoSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJC
MyBhZnRlciBpdGVyYXRpb24gIyIsIGluZGV4IC0gMSwgIiBvZiByZWR1Y2VTdHJlbmd0aDpcbiIp
OwogICAgICAgICAgICAgICAgIGRhdGFMb2cobV9wcm9jKTsKICAgICAgICAgICAgIH0KQEAgLTQ1
Miw3ICs0NTQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbV9ibG9jayA9IGJsb2NrOwog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZvciAobV9pbmRleCA9IDA7IG1faW5k
ZXggPCBibG9jay0+c2l6ZSgpOyArK21faW5kZXgpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEIzUmVkdWNlU3RyZW5ndGhJbnRl
cm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiTG9va2luZyBhdCAiLCAqYmxvY2ssICIgIyIsIG1faW5k
ZXgsICI6ICIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVlcER1bXAobV9wcm9jLCBi
bG9jay0+YXQobV9pbmRleCkpLCAiXG4iKTsKQEAgLTIwMzUsNyArMjAzNyw3IEBAIHByaXZhdGU6
CiAgICAgLy8gZWFybHkuCiAgICAgdm9pZCBzcGVjaWFsaXplU2VsZWN0KFZhbHVlKiBzb3VyY2Up
CiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEIzUmVkdWNlU3RyZW5n
dGhJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIlNwZWNpYWxpemluZyBz
ZWxlY3Q6ICIsIGRlZXBEdW1wKG1fcHJvYywgc291cmNlKSwgIlxuIik7CiAKICAgICAgICAgLy8g
VGhpcyBtdXRhdGVzIHN0YXJ0SW5kZXggdG8gYWNjb3VudCBmb3IgdGhlIGZhY3QgdGhhdCBtX2Js
b2NrIGdvdCB0aGUgZnJvbnQgb2YgaXQKQEAgLTIyNzYsNyArMjI3OCw3IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIHNpbXBsaWZ5Q0ZHKCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKSB7Cisg
ICAgICAgIGlmIChCM1JlZHVjZVN0cmVuZ3RoSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAg
ICAgIGRhdGFMb2coIkJlZm9yZSBzaW1wbGlmeUNGRzpcbiIpOwogICAgICAgICAgICAgZGF0YUxv
ZyhtX3Byb2MpOwogICAgICAgICB9CkBAIC0yMzAxLDcgKzIzMDMsNyBAQCBwcml2YXRlOgogICAg
ICAgICAvLyBpdGVyYXRpb25zIG5lZWRlZCB0byBraWxsIGEgbG90IG9mIGNvZGUuCiAKICAgICAg
ICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fcHJvYykgewotICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICBpZiAoQjNSZWR1Y2VTdHJlbmd0aEludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIGJsb2NrICIsICpibG9jaywg
IjpcbiIpOwogCiAgICAgICAgICAgICBjaGVja1ByZWRlY2Vzc29yVmFsaWRpdHkoKTsKQEAgLTIz
MTcsNyArMjMxOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICYmIHN1Y2Nlc3Nv
ci0+bGFzdCgpLT5vcGNvZGUoKSA9PSBKdW1wKSB7CiAgICAgICAgICAgICAgICAgICAgIEJhc2lj
QmxvY2sqIG5ld1N1Y2Nlc3NvciA9IHN1Y2Nlc3Nvci0+c3VjY2Vzc29yQmxvY2soMCk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChuZXdTdWNjZXNzb3IgIT0gc3VjY2Vzc29yKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKEIzUmVkdWNlU3RyZW5ndGhJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJS
ZXBsYWNpbmcgIiwgcG9pbnRlckR1bXAoYmxvY2spLCAiLT4iLCBwb2ludGVyRHVtcChzdWNjZXNz
b3IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHdpdGggIiwgcG9pbnRlckR1
bXAoYmxvY2spLCAiLT4iLCBwb2ludGVyRHVtcChuZXdTdWNjZXNzb3IpLApAQCAtMjM0OCw3ICsy
MzUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAoYWxsU2FtZSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChCM1JlZHVjZVN0cmVuZ3RoSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hh
bmdpbmcgIiwgcG9pbnRlckR1bXAoYmxvY2spLCAiJ3MgdGVybWluYWwgdG8gYSBKdW1wLlxuIik7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0yMzg3LDcgKzIzODksNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIG5ld1N1Y2Nlc3NvciA6IGJs
b2NrLT5zdWNjZXNzb3JCbG9ja3MoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1N1Y2Nl
c3Nvci0+cmVwbGFjZVByZWRlY2Vzc29yKHN1Y2Nlc3NvciwgYmxvY2spOwogCi0gICAgICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChCM1JlZHVj
ZVN0cmVuZ3RoSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1lcmdlZCAiLCBwb2ludGVyRHVt
cChibG9jayksICItPiIsIHBvaW50ZXJEdW1wKHN1Y2Nlc3NvciksICJcbiIpOwogICAgICAgICAg
ICAgICAgICAgICB9CkBAIC0yMzk3LDcgKzIzOTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
fQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1fY2hhbmdlZENGRyAmJiB2ZXJib3NlKSB7Cisg
ICAgICAgIGlmIChtX2NoYW5nZWRDRkcgJiYgQjNSZWR1Y2VTdHJlbmd0aEludGVybmFsOjp2ZXJi
b3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJCMyBhZnRlciBzaW1wbGlmeUNGRzpcbiIpOwog
ICAgICAgICAgICAgZGF0YUxvZyhtX3Byb2MpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmNwcAppbmRl
eCBiYmE4NGNhZjhiNGJlMDljMjg4NjNjNDI5MDIwODUyZTcwNTExNjIyLi4zODllZjhiOWNhMmQ2
MTBlZmRhNTdiOWQ4MGVhOTNlYmI1ODJlMTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5jcHAKQEAgLTM0LDggKzM0
LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKLXVzaW5nIG5hbWVzcGFj
ZSBBaXI7Ci0KIGNvbnN0IFJlZ2lzdGVyU2V0JiBTdGFja21hcEdlbmVyYXRpb25QYXJhbXM6OnVz
ZWRSZWdpc3RlcnMoKSBjb25zdAogewogICAgIEFTU0VSVChtX2NvbnRleHQuY29kZS0+bmVlZHNV
c2VkUmVnaXN0ZXJzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
U3RhY2ttYXBTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFw
U3BlY2lhbC5jcHAKaW5kZXggNjAzNzBjNTc4ZGRmYzMyOTE4ZWZmYjVhMWJkZTg1NzhlOTNmMmY3
MC4uNWViNWI5YjBlNjdkMzczYzM5YmM3ZDk2ZDkzZWQ5ZjZhYzVkMTg0NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwCkBAIC0zNCw3ICszNCw5
IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi11c2luZyBuYW1lc3BhY2Ug
QWlyOwordXNpbmcgQXJnID0gQWlyOjpBcmc7Cit1c2luZyBJbnN0ID0gQWlyOjpJbnN0OwordXNp
bmcgVG1wID0gQWlyOjpUbXA7CiAKIFN0YWNrbWFwU3BlY2lhbDo6U3RhY2ttYXBTcGVjaWFsKCkK
IHsKQEAgLTIxMCw4ICsyMTIsNyBAQCBib29sIFN0YWNrbWFwU3BlY2lhbDo6YWRtaXRzU3RhY2tJ
bXBsKAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotVmVjdG9yPFZhbHVlUmVwPiBTdGFja21hcFNw
ZWNpYWw6OnJlcHNJbXBsKAotICAgIEdlbmVyYXRpb25Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25l
ZCBudW1JZ25vcmVkQjNBcmdzLCB1bnNpZ25lZCBudW1JZ25vcmVkQWlyQXJncywgSW5zdCYgaW5z
dCkKK1ZlY3RvcjxWYWx1ZVJlcD4gU3RhY2ttYXBTcGVjaWFsOjpyZXBzSW1wbChBaXI6OkdlbmVy
YXRpb25Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCBudW1JZ25vcmVkQjNBcmdzLCB1bnNpZ25l
ZCBudW1JZ25vcmVkQWlyQXJncywgSW5zdCYgaW5zdCkKIHsKICAgICBWZWN0b3I8VmFsdWVSZXA+
IHJlc3VsdDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5zdC5vcmlnaW4tPm51bUNo
aWxkcmVuKCkgLSBudW1JZ25vcmVkQjNBcmdzOyArK2kpCkBAIC0yNjcsNyArMjY4LDcgQEAgYm9v
bCBTdGFja21hcFNwZWNpYWw6OmlzQXJnVmFsaWRGb3JSZXAoQWlyOjpDb2RlJiBjb2RlLCBjb25z
dCBBaXI6OkFyZyYgYXJnLCBjb24KICAgICB9CiB9CiAKLVZhbHVlUmVwIFN0YWNrbWFwU3BlY2lh
bDo6cmVwRm9yQXJnKENvZGUmIGNvZGUsIGNvbnN0IEFyZyYgYXJnKQorVmFsdWVSZXAgU3RhY2tt
YXBTcGVjaWFsOjpyZXBGb3JBcmcoQWlyOjpDb2RlJiBjb2RlLCBjb25zdCBBcmcmIGFyZykKIHsK
ICAgICBzd2l0Y2ggKGFyZy5raW5kKCkpIHsKICAgICBjYXNlIEFyZzo6VG1wOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENv
bG9yaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVTdGFj
a0J5R3JhcGhDb2xvcmluZy5jcHAKaW5kZXggZTg2MGQ5Y2NjNWNiMGFlMWQ4N2MzYWZlZmRhYmY4
ODY2ZjMxN2QxYS4uZWQ2N2QxYzdjZDg5ZGIwOGMwZjk4Y2YxZjY2M2ExZjVhYmM1MmUzZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVN0YWNrQnlH
cmFwaENvbG9yaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFs
bG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcuY3BwCkBAIC00Miw3ICs0Miw5IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKIAogbmFtZXNwYWNlIHsKIAot
Y29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgQWlyQWxsb2NhdGVTdGFja0J5
R3JhcGhDb2xvcmluZ0ludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxz
ZTsKK30KIAogc3RydWN0IENvYWxlc2NhYmxlTW92ZSB7CiAgICAgQ29hbGVzY2FibGVNb3ZlKCkK
QEAgLTE1Myw3ICsxNTUsNyBAQCB2b2lkIGFsbG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcoQ29k
ZSYgY29kZSkKICAgICAgICAgU3RhY2tTbG90TGl2ZW5lc3M6OkxvY2FsQ2FsYyBsb2NhbENhbGMo
bGl2ZW5lc3MsIGJsb2NrKTsKIAogICAgICAgICBhdXRvIGludGVyZmVyZSA9IFsmXSAodW5zaWdu
ZWQgaW5zdEluZGV4KSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlm
IChBaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiSW50ZXJmZXJpbmc6ICIsIFdURjo6cG9pbnRlckxpc3REdW1w
KGxvY2FsQ2FsYy5saXZlKCkpLCAiXG4iKTsKIAogICAgICAgICAgICAgSW5zdCogcHJldkluc3Qg
PSBibG9jay0+Z2V0KGluc3RJbmRleCk7CkBAIC0xODUsNyArMTg3LDcgQEAgdm9pZCBhbGxvY2F0
ZVN0YWNrQnlHcmFwaENvbG9yaW5nKENvZGUmIGNvZGUpCiAgICAgICAgIH07CiAKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbnN0SW5kZXggPSBibG9jay0+c2l6ZSgpOyBpbnN0SW5kZXgtLTspIHsK
LSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEFpckFsbG9jYXRlU3Rh
Y2tCeUdyYXBoQ29sb3JpbmdJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRh
TG9nKCJBbmFseXppbmc6ICIsIGJsb2NrLT5hdChpbnN0SW5kZXgpLCAiXG4iKTsKIAogICAgICAg
ICAgICAgLy8gS2lsbCBkZWFkIHN0b3Jlcy4gRm9yIHNpbXBsaWNpdHkgd2Ugc2F5IHRoYXQgYSBz
dG9yZSBpcyBraWxsYWJsZSBpZiBpdCBoYXMgb25seSBsYXRlCkBAIC0yMzIsNyArMjM0LDcgQEAg
dm9pZCBhbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nKENvZGUmIGNvZGUpCiAgICAgICAgICAg
ICB9KTsKICAgICB9CiAKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChBaXJBbGxvY2F0ZVN0
YWNrQnlHcmFwaENvbG9yaW5nSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZm9yIChTdGFj
a1Nsb3QqIHNsb3QgOiBjb2RlLnN0YWNrU2xvdHMoKSkKICAgICAgICAgICAgIGRhdGFMb2coIklu
dGVyZmVyZW5jZSBvZiAiLCBwb2ludGVyRHVtcChzbG90KSwgIjogIiwgcG9pbnRlckxpc3REdW1w
KGludGVyZmVyZW5jZVtzbG90XSksICJcbiIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZmbGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJFbWl0U2h1ZmZsZS5jcHAKaW5kZXggNzNkNzEwZmY2OWU3MThlYjRi
ZTMwNjljMWMxZDgwYWZiOWM2NDk2Ny4uNzE2NmVkODY5NGVhM2YxODQyNGZkMjNlODAyMTA5ODA1
ZjYxMmJmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbWl0
U2h1ZmZsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbWl0U2h1
ZmZsZS5jcHAKQEAgLTM3LDcgKzM3LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7
IG5hbWVzcGFjZSBBaXIgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsK
K25hbWVzcGFjZSBBaXJFbWl0U2h1ZmZsZUludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZl
cmJvc2UgPSBmYWxzZTsKK30KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KIFRtcCBmaW5k
UG9zc2libGVTY3JhdGNoKENvZGUmIGNvZGUsIEJhbmsgYmFuaywgY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikgewpAQCAtMTI1LDcgKzEyNyw3IEBAIFZlY3RvcjxJbnN0PiBlbWl0U2h1ZmZsZSgKICAg
ICBDb2RlJiBjb2RlLCBWZWN0b3I8U2h1ZmZsZVBhaXI+IHBhaXJzLCBzdGQ6OmFycmF5PEFyZywg
Mj4gc2NyYXRjaGVzLCBCYW5rIGJhbmssCiAgICAgVmFsdWUqIG9yaWdpbikKIHsKLSAgICBpZiAo
dmVyYm9zZSkgeworICAgIGlmIChBaXJFbWl0U2h1ZmZsZUludGVybmFsOjp2ZXJib3NlKSB7CiAg
ICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAiRGVhbGluZyB3aXRoIHBhaXJzOiAiLCBsaXN0
RHVtcChwYWlycyksICIgYW5kIHNjcmF0Y2hlcyAiLCBzY3JhdGNoZXNbMF0sICIsICIsCiAgICAg
ICAgICAgICBzY3JhdGNoZXNbMV0sICJcbiIpOwpAQCAtMTg1LDcgKzE4Nyw3IEBAIFZlY3RvcjxJ
bnN0PiBlbWl0U2h1ZmZsZSgKICAgICAgICAgICAgIEFTU0VSVChjdXJyZW50UGFpcnMuaXNFbXB0
eSgpKTsKICAgICAgICAgICAgIEFyZyBvcmlnaW5hbFNyYyA9IG1hcHBpbmcuYmVnaW4oKS0+a2V5
OwogICAgICAgICAgICAgQVNTRVJUKCFzaGlmdHMuY29udGFpbnMob3JpZ2luYWxTcmMpKTsKLSAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEFpckVtaXRTaHVmZmxlSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiUHJvY2Vzc2luZyBmcm9t
ICIsIG9yaWdpbmFsU3JjLCAiXG4iKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgR3JhcGhO
b2RlV29ya2xpc3Q8QXJnPiB3b3JrbGlzdDsKQEAgLTE5NSw3ICsxOTcsNyBAQCBWZWN0b3I8SW5z
dD4gZW1pdFNodWZmbGUoCiAgICAgICAgICAgICAgICAgaWYgKGl0ZXIgPT0gbWFwcGluZy5lbmQo
KSkgewogICAgICAgICAgICAgICAgICAgICAvLyBXaXRoIGEgc2hpZnQgaXQncyBwb3NzaWJsZSB0
aGF0IHdlIHByZXZpb3VzbHkgYnVpbHQgdGhlIHRhaWwgb2YgdGhpcyBzaGlmdC4KICAgICAgICAg
ICAgICAgICAgICAgLy8gU2VlIGlmIHRoYXQncyB0aGUgY2FzZSBub3cuCi0gICAgICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoQWlyRW1pdFNodWZm
bGVJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIlRy
eWluZyB0byBhcHBlbmQgc2hpZnQgYXQgIiwgc3JjLCAiXG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgY3VycmVudFBhaXJzLmFwcGVuZFZlY3RvcihzaGlmdHMudGFrZShzcmMpKTsKICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CkBAIC0yMTMsNyArMjE1LDcgQEAgVmVjdG9yPEluc3Q+IGVt
aXRTaHVmZmxlKAogICAgICAgICAgICAgQVNTRVJUKGN1cnJlbnRQYWlycy5zaXplKCkpOwogICAg
ICAgICAgICAgQVNTRVJUKGN1cnJlbnRQYWlyc1swXS5zcmMoKSA9PSBvcmlnaW5hbFNyYyk7CiAK
LSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEFpckVtaXRTaHVmZmxl
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiY3VycmVudFBhaXJz
ID0gIiwgbGlzdER1bXAoY3VycmVudFBhaXJzKSwgIlxuIik7CiAKICAgICAgICAgICAgIGJvb2wg
aXNSb3RhdGUgPSBmYWxzZTsKQEAgLTIyNSw3ICsyMjcsNyBAQCBWZWN0b3I8SW5zdD4gZW1pdFNo
dWZmbGUoCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChpc1JvdGF0ZSkgewotICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChBaXJFbWl0U2h1
ZmZsZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJJdCdz
IGEgcm90YXRlLlxuIik7CiAgICAgICAgICAgICAgICAgUm90YXRlIHJvdGF0ZTsKIApAQCAtMjc3
LDE0ICsyNzksMTQgQEAgVmVjdG9yPEluc3Q+IGVtaXRTaHVmZmxlKAogICAgICAgICAgICAgICAg
IHJvdGF0ZXMuYXBwZW5kKFdURk1vdmUocm90YXRlKSk7CiAgICAgICAgICAgICAgICAgY3VycmVu
dFBhaXJzLnNocmluaygwKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEFpckVtaXRTaHVmZmxlSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkl0J3MgYSBzaGlmdC5cbiIp
OwogICAgICAgICAgICAgICAgIHNoaWZ0cy5hZGQob3JpZ2luYWxTcmMsIFdURk1vdmUoY3VycmVu
dFBhaXJzKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAodmVy
Ym9zZSkgeworICAgIGlmIChBaXJFbWl0U2h1ZmZsZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAg
ICAgIGRhdGFMb2coIlNoaWZ0czpcbiIpOwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogc2hp
ZnRzKQogICAgICAgICAgICAgZGF0YUxvZygiICAgICIsIGVudHJ5LmtleSwgIjogIiwgbGlzdER1
bXAoZW50cnkudmFsdWUpLCAiXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCmluZGV4IDljYjExMDFhMTFmMjM1MTdjMjk5
MzNiZmFiYTlhM2M5MjFhODY2YWUuLjYwYThjYzAzNWZmMTI5MDU5MTA1ZWQ2NWVjZjI1MzMyNmM4
ZTUzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2
aW91c1NwaWxscy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhP
YnZpb3VzU3BpbGxzLmNwcApAQCAtMzksNyArMzksOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9
IGZhbHNlOworbmFtZXNwYWNlIEFpckZpeE9idmlvdXNTcGlsbHNJbnRlcm5hbCB7CitzdGF0aWMg
Y29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIEZpeE9idmlvdXNTcGlsbHMg
ewogcHVibGljOgpAQCAtNTEsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJ1bigpCiAg
ICAgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEFpckZpeE9idmlvdXNTcGls
bHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkNvZGUgYmVmb3JlIGZp
eE9idmlvdXNTcGlsbHM6XG4iLCBtX2NvZGUpOwogICAgICAgICAKICAgICAgICAgY29tcHV0ZUFs
aWFzZXMoKTsKQEAgLTczLDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAo
IW1fc3RhdGUud2FzVmlzaXRlZCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQWlyRml4T2J2
aW91c1NwaWxsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KCJFeGVjdXRpbmcgYmxvY2sgIiwgKm1fYmxvY2ssICI6ICIsIG1fc3RhdGUsICJcbiIpOwogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZvciAobV9pbnN0SW5kZXggPSAwOyBtX2lu
c3RJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbV9pbnN0SW5kZXgpCkBAIC0xNjksMTMgKzE3MSwx
MyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgSW5zdCYgaW5zdCA9IG1fYmxvY2stPmF0KG1f
aW5zdEluZGV4KTsKIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEFpckZpeE9i
dmlvdXNTcGlsbHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBF
eGVjdXRpbmcgIiwgaW5zdCwgIjogIiwgbV9zdGF0ZSwgIlxuIik7CiAKICAgICAgICAgSW5zdDo6
Zm9yRWFjaERlZldpdGhFeHRyYUNsb2JiZXJlZFJlZ3M8QXJnPigKICAgICAgICAgICAgICZpbnN0
LCAmaW5zdCwKICAgICAgICAgICAgIFsmXSAoY29uc3QgQXJnJiBhcmcsIEFyZzo6Um9sZSwgQmFu
aywgV2lkdGgpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAg
ICBpZiAoQWlyRml4T2J2aW91c1NwaWxsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgICAgIENsb2JiZXJpbmcgIiwgYXJnLCAiXG4iKTsKICAgICAg
ICAgICAgICAgICBtX3N0YXRlLmNsb2JiZXIoYXJnKTsKICAgICAgICAgICAgIH0pOwpAQCAtMTkw
LDcgKzE5Miw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBJbnN0JiBpbnN0ID0gbV9ibG9j
ay0+YXQobV9pbnN0SW5kZXgpOwogCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAo
QWlyRml4T2J2aW91c1NwaWxsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxv
ZygiRml4aW5nIGluc3QgIiwgaW5zdCwgIjogIiwgbV9zdGF0ZSwgIlxuIik7CiAgICAgICAgIAog
ICAgICAgICAvLyBDaGVjayBpZiBhbGlhcyBhbmFseXNpcyBzYXlzIHRoYXQgdGhpcyBpcyB1bm5l
Y2Vzc2FyeS4KQEAgLTI2NywxMyArMjY5LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
Y2FzZSBXaWR0aDY0OgogICAgICAgICAgICAgICAgICAgICBpZiAoYWxpYXMtPm1vZGUgIT0gUmVn
U2xvdDo6QWxsQml0cykKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChBaXJGaXhP
YnZpb3VzU3BpbGxzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgUmVwbGFjaW5nICIsIGFyZywgIiB3aXRoICIsIGFsaWFzLT5yZWcsICJcbiIp
OwogICAgICAgICAgICAgICAgICAgICBhcmcgPSBUbXAoYWxpYXMtPnJlZyk7CiAgICAgICAgICAg
ICAgICAgICAgIGRpZFRoaW5ncyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgICAgICBjYXNlIFdpZHRoMzI6Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoQWlyRml4T2J2aW91c1NwaWxsc0ludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIFJlcGxh
Y2luZyAiLCBhcmcsICIgd2l0aCAiLCBhbGlhcy0+cmVnLCAiIChzdWJ3aWR0aCBjYXNlKVxuIik7
CiAgICAgICAgICAgICAgICAgICAgIGFyZyA9IFRtcChhbGlhcy0+cmVnKTsKICAgICAgICAgICAg
ICAgICAgICAgZGlkVGhpbmdzID0gdHJ1ZTsKQEAgLTI4NSw3ICsyODcsNyBAQCBwcml2YXRlOgog
CiAgICAgICAgICAgICAvLyBSZXZlcnQgdG8gaW1tZWRpYXRlIGlmIHRoYXQgZGlkbid0IHdvcmsu
CiAgICAgICAgICAgICBpZiAoY29uc3QgU2xvdENvbnN0KiBhbGlhcyA9IG1fc3RhdGUuZ2V0U2xv
dENvbnN0KGFyZy5zdGFja1Nsb3QoKSkpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgICAgICBpZiAoQWlyRml4T2J2aW91c1NwaWxsc0ludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgUmVwbGFjaW5nICIsIGFyZywgIiB3
aXRoIGNvbnN0YW50ICIsIGFsaWFzLT5jb25zdGFudCwgIlxuIik7CiAgICAgICAgICAgICAgICAg
aWYgKEFyZzo6aXNWYWxpZEltbUZvcm0oYWxpYXMtPmNvbnN0YW50KSkKICAgICAgICAgICAgICAg
ICAgICAgYXJnID0gQXJnOjppbW0oYWxpYXMtPmNvbnN0YW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcAppbmRleCAx
ZmEwNTNkYjljYTdmYzRjMzg2ZmIxOTM3MTUyMjU1YmVlZDcxMzliLi5iZmVmM2IzZjRmMTFhNTlh
MjFkMmI4MWNjZTE5MjViY2Q4MWU1NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpckxvd2VyQWZ0ZXJSZWdBbGxvYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwCkBAIC00Niw3ICs0Niw5IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKIAogbmFtZXNw
YWNlIHsKIAotYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgQWlyTG93ZXJBZnRlclJl
Z0FsbG9jSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQog
ICAgIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKQEAgLTU0LDcgKzU2LDcgQEAgdm9pZCBs
b3dlckFmdGVyUmVnQWxsb2MoQ29kZSYgY29kZSkKIHsKICAgICBQaGFzZVNjb3BlIHBoYXNlU2Nv
cGUoY29kZSwgImxvd2VyQWZ0ZXJSZWdBbGxvYyIpOwogCi0gICAgaWYgKHZlcmJvc2UpCisgICAg
aWYgKEFpckxvd2VyQWZ0ZXJSZWdBbGxvY0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRh
TG9nKCJDb2RlIGJlZm9yZSBsb3dlckFmdGVyUmVnQWxsb2M6XG4iLCBjb2RlKTsKICAgICAKICAg
ICBhdXRvIGlzUmVsZXZhbnQgPSBbXSAoSW5zdCYgaW5zdCkgLT4gYm9vbCB7CkBAIC0yMjEsNyAr
MjIzLDcgQEAgdm9pZCBsb3dlckFmdGVyUmVnQWxsb2MoQ29kZSYgY29kZSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YWNrU2xvdHMuYXBwZW5kKHN0YWNrU2xvdCk7CiAgICAgICAgICAgICAg
ICAgICAgIH0pOwogCi0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAg
ICAgaWYgKEFpckxvd2VyQWZ0ZXJSZWdBbGxvY0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJQcmUtY2FsbCBwYWlycyBmb3IgIiwgaW5zdCwgIjogIiwgbGlz
dER1bXAocGFpcnMpLCAiXG4iKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBp
bnNlcnRpb25TZXQuaW5zZXJ0SW5zdHMoCkBAIC0yNzMsNyArMjc1LDcgQEAgdm9pZCBsb3dlckFm
dGVyUmVnQWxsb2MoQ29kZSYgY29kZSkKICAgICAgICAgICAgIH0pOwogICAgIH0KIAotICAgIGlm
ICh2ZXJib3NlKQorICAgIGlmIChBaXJMb3dlckFmdGVyUmVnQWxsb2NJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgZGF0YUxvZygiQ29kZSBhZnRlciBsb3dlckFmdGVyUmVnQWxsb2M6XG4iLCBj
b2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJT
dGFja0FsbG9jYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTdGFj
a0FsbG9jYXRpb24uY3BwCmluZGV4IDM5MjIyM2NhODg1ODA1YzVmOTZkMmZiYjg4MzlkMTIwMzlj
NjZjY2YuLjZiNmEyNmFlN2VmYmI3ZDlmM2YyZWExYmVhNjZiYWUzNGQ1OGI2ZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3RhY2tBbGxvY2F0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclN0YWNrQWxsb2NhdGlvbi5jcHAK
QEAgLTM4LDcgKzM4LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFj
ZSBBaXIgewogCiBuYW1lc3BhY2UgewogCi1jb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK25h
bWVzcGFjZSBBaXJTdGFja0FsbG9jYXRpb25JbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2
ZXJib3NlID0gZmFsc2U7Cit9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbGxlY3Rpb24+CiB2b2lk
IHVwZGF0ZUZyYW1lU2l6ZUJhc2VkT25TdGFja1Nsb3RzSW1wbChDb2RlJiBjb2RlLCBjb25zdCBD
b2xsZWN0aW9uJiBjb2xsZWN0aW9uKQpAQCAtNTQsNyArNTYsNyBAQCB2b2lkIHVwZGF0ZUZyYW1l
U2l6ZUJhc2VkT25TdGFja1Nsb3RzSW1wbChDb2RlJiBjb2RlLCBjb25zdCBDb2xsZWN0aW9uJiBj
b2xsZWN0aQogYm9vbCBhdHRlbXB0QXNzaWdubWVudCgKICAgICBTdGFja1Nsb3QqIHNsb3QsIGlu
dHB0cl90IG9mZnNldEZyb21GUCwgY29uc3QgVmVjdG9yPFN0YWNrU2xvdCo+JiBvdGhlclNsb3Rz
KQogewotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChBaXJTdGFja0FsbG9jYXRpb25JbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQXR0ZW1wdGluZyB0byBhc3NpZ24gIiwgcG9p
bnRlckR1bXAoc2xvdCksICIgdG8gIiwgb2Zmc2V0RnJvbUZQLCAiIHdpdGggaW50ZXJmZXJlbmNl
ICIsIHBvaW50ZXJMaXN0RHVtcChvdGhlclNsb3RzKSwgIlxuIik7CiAKICAgICAvLyBOZWVkIHRv
IGFsaWduIGl0IHRvIHRoZSBzbG90J3MgZGVzaXJlZCBhbGlnbm1lbnQuCkBAIC03Miw3ICs3NCw3
IEBAIGJvb2wgYXR0ZW1wdEFzc2lnbm1lbnQoCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEFpclN0YWNrQWxsb2NhdGlvbkludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJBc3NpZ25lZCAiLCBwb2ludGVyRHVtcChz
bG90KSwgIiB0byAiLCBvZmZzZXRGcm9tRlAsICJcbiIpOwogICAgIHNsb3QtPnNldE9mZnNldEZy
b21GUChvZmZzZXRGcm9tRlApOwogICAgIHJldHVybiB0cnVlOwpAQCAtODAsNyArODIsNyBAQCBi
b29sIGF0dGVtcHRBc3NpZ25tZW50KAogCiB2b2lkIGFzc2lnbihTdGFja1Nsb3QqIHNsb3QsIGNv
bnN0IFZlY3RvcjxTdGFja1Nsb3QqPiYgb3RoZXJTbG90cykKIHsKLSAgICBpZiAodmVyYm9zZSkK
KyAgICBpZiAoQWlyU3RhY2tBbGxvY2F0aW9uSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRh
dGFMb2coIkF0dGVtcHRpbmcgdG8gYXNzaWduICIsIHBvaW50ZXJEdW1wKHNsb3QpLCAiIHdpdGgg
aW50ZXJmZXJlbmNlICIsIHBvaW50ZXJMaXN0RHVtcChvdGhlclNsb3RzKSwgIlxuIik7CiAgICAg
CiAgICAgaWYgKGF0dGVtcHRBc3NpZ25tZW50KHNsb3QsIC1zdGF0aWNfY2FzdDxpbnRwdHJfdD4o
c2xvdC0+Ynl0ZVNpemUoKSksIG90aGVyU2xvdHMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IDM1ZmZiZjFhYmFiODJlZDdmNDQ2YjU2YjRl
ZGMxNTVhNDlmZWQ4ZDAuLjQxOTg2NTUwNDc0NDM4NzdlY2E2MTMwY2NmZmE3YTVhYTIzZjg0YTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAg
LTUxLDcgKzUxLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK25hbWVzcGFjZSBBY2Nlc3NDYXNl
SW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBBY2Nl
c3NDYXNlOjpBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBl
LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0KQogICAgIDogbV90eXBlKHR5cGUp
CkBAIC00MDgsNyArNDEwLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZShBY2Nlc3NHZW5l
cmF0aW9uU3RhdGUmIHN0YXRlKQogdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNz
R2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNh
bXBsZXJTY29wZShmYWxzZSk7Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEFjY2Vzc0Nhc2VJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiXG5cbkdlbmVyYXRpbmcgY29kZSBm
b3I6ICIsICp0aGlzLCAiXG4iKTsKIAogICAgIEFTU0VSVChtX3N0YXRlID09IEdlbmVyYXRlZCk7
IC8vIFdlIHJlbHkgb24gdGhlIGNhbGxlcnMgc2V0dGluZyB0aGlzIGZvciB1cy4KQEAgLTc5MCwx
MSArNzkyLDExIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRp
b25TdGF0ZSYgc3RhdGUpCiAKICAgICBjYXNlIFJlcGxhY2U6IHsKICAgICAgICAgaWYgKEluZmVy
cmVkVHlwZSogdHlwZSA9IHN0cnVjdHVyZSgpLT5pbmZlcnJlZFR5cGVGb3IoaWRlbnQuaW1wbCgp
KSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQWNjZXNzQ2Fz
ZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkhhdmUgdHlwZTog
IiwgdHlwZS0+ZGVzY3JpcHRvcigpLCAiXG4iKTsKICAgICAgICAgICAgIHN0YXRlLmZhaWxBbmRS
ZXBhdGNoLmFwcGVuZCgKICAgICAgICAgICAgICAgICBqaXQuYnJhbmNoSWZOb3RUeXBlKHZhbHVl
UmVncywgc2NyYXRjaEdQUiwgdHlwZS0+ZGVzY3JpcHRvcigpKSk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAodmVyYm9zZSkKKyAgICAgICAgfSBlbHNlIGlmIChBY2Nlc3NDYXNlSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJEb24ndCBoYXZlIHR5cGUuXG4iKTsKIAogICAgICAg
ICBpZiAoaXNJbmxpbmVPZmZzZXQobV9vZmZzZXQpKSB7CkBAIC04MjAsMTEgKzgyMiwxMSBAQCB2
b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRl
KQogICAgICAgICBSRUxFQVNFX0FTU0VSVChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA+PSA2
IHx8ICFzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCBzdHJ1Y3R1cmUoKS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSA9PSBuZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7
CiAKICAgICAgICAgaWYgKEluZmVycmVkVHlwZSogdHlwZSA9IG5ld1N0cnVjdHVyZSgpLT5pbmZl
cnJlZFR5cGVGb3IoaWRlbnQuaW1wbCgpKSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgICAgICBpZiAoQWNjZXNzQ2FzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkhhdmUgdHlwZTogIiwgdHlwZS0+ZGVzY3JpcHRvcigpLCAiXG4iKTsKICAg
ICAgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZCgKICAgICAgICAgICAgICAgICBq
aXQuYnJhbmNoSWZOb3RUeXBlKHZhbHVlUmVncywgc2NyYXRjaEdQUiwgdHlwZS0+ZGVzY3JpcHRv
cigpKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAodmVyYm9zZSkKKyAgICAgICAgfSBlbHNlIGlmIChB
Y2Nlc3NDYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJEb24ndCBo
YXZlIHR5cGUuXG4iKTsKIAogICAgICAgICAvLyBOT1RFOiBUaGlzIGxvZ2ljIGlzIGR1cGxpY2F0
ZWQgaW4gQWNjZXNzQ2FzZTo6ZG9lc0NhbGxzKCkuIEl0J3MgaW1wb3J0YW50IHRoYXQgZG9lc0Nh
bGxzKCkga25vd3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua1N0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtTdGF0dXMuY3BwCmluZGV4IGYzNGMyNzQyMDUzY2IyOTNkYWE1YzE2Mzg2NmJmYWM0YTAyMjU2
OTguLjUzYjg0ZDljMDM3ZTE3ZjZhZTkzZGM4NTUxOTI3ODhiNjNlNjdhZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcApAQCAtMzgs
NyArMzgsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFtZXNwYWNlIENhbGxMaW5rU3RhdHVz
SW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBDYWxs
TGlua1N0YXR1czo6Q2FsbExpbmtTdGF0dXMoSlNWYWx1ZSB2YWx1ZSkKICAgICA6IG1fY291bGRU
YWtlU2xvd1BhdGgoZmFsc2UpCkBAIC0yODksNyArMjkxLDcgQEAgdm9pZCBDYWxsTGlua1N0YXR1
czo6Y29tcHV0ZURGR1N0YXR1c2VzKAogICAgIFVOVVNFRF9QQVJBTShkZmdDb2RlQmxvY2spOwog
I2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQogICAgIAotICAgIGlmICh2ZXJib3NlKSB7CisgICAg
aWYgKENhbGxMaW5rU3RhdHVzSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZGF0YUxvZygi
Q29udGV4dCBtYXA6XG4iKTsKICAgICAgICAgQ29udGV4dE1hcDo6aXRlcmF0b3IgaXRlciA9IG1h
cC5iZWdpbigpOwogICAgICAgICBDb250ZXh0TWFwOjppdGVyYXRvciBlbmQgPSBtYXAuZW5kKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0
dGVyQWNjZXNzQ2FzZS5jcHAKaW5kZXggYzRkYTgwZWNjMTljMjE0N2UyZmE3YjVkOTk2ODRjZGZl
YjJlNDc4MC4uNjA2NjkxYjNiMjAzYWVlMWFjYmEyNzRmNDU1YzRiNGVlYzc3ZjdlYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlLmNwcApAQCAtMzgsNyArMzgsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFt
ZXNwYWNlIEdldHRlclNldHRlckFjY2Vzc0Nhc2VJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9v
bCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OkdldHRlclNl
dHRlckFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5
cGUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIGJvb2wgdmlhUHJveHksIFdh
dGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSkKICAg
ICA6IEJhc2Uodm0sIG93bmVyLCBhY2Nlc3NUeXBlLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0
aW9uU2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCkKQEAgLTE4NSw3ICsxODcsNyBAQCB2b2lk
IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlv
blN0YXRlJiBzdGF0ZSwgY29ucwogICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2Vy
dmVkU3RhdGUgcHJlc2VydmVkU3RhdGUgPQogICAgIGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJl
Z2lzdGVyc0J5UHVzaGluZyhqaXQsIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6RXh0cmFTdGFj
a1NwYWNlOjpTcGFjZUZvckNDYWxsKTsKIAotICAgIGlmICh2ZXJib3NlKSB7CisgICAgaWYgKEdl
dHRlclNldHRlckFjY2Vzc0Nhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICBkYXRhTG9n
KCJiYXNlR1BSID0gIiwgYmFzZUdQUiwgIlxuIik7CiAgICAgICAgIGRhdGFMb2coInZhbHVlUmVn
cyA9ICIsIHZhbHVlUmVncywgIlxuIik7CiAgICAgICAgIGRhdGFMb2coInNjcmF0Y2hHUFIgPSAi
LCBzY3JhdGNoR1BSLCAiXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCmluZGV4IDYxOWVh
NWQ5Y2I0N2IxZjE5NWIwZThiNDdkNTk5NmNhODU5YzM0ZWYuLjk2Nzk1MjM3Nzg4Y2MxOTY1MDc0
MWJkY2Y2OWFlNDdjZDI4ZGE0YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcApAQCAtMTgy
LDEzICsxODIsMTUgQEAgYm9vbCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aXNWYWxpZEFu
ZFdhdGNoYWJsZSgpIGNvbnN0CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNl
OworbmFtZXNwYWNlIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWwgeworc3RhdGlj
IGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
biBnZW5lcmF0ZUNvbmRpdGlvbigKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0
KiBvYmplY3QsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIFByb3BlcnR5Q29uZGl0aW9uOjpLaW5k
IGNvbmRpdGlvbktpbmQpCiB7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvYmplY3QtPnN0
cnVjdHVyZSgpOwotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJDcmVhdGluZyBjb25k
aXRpb24gIiwgY29uZGl0aW9uS2luZCwgIiBmb3IgIiwgcG9pbnRlckR1bXAoc3RydWN0dXJlKSwg
IlxuIik7CiAKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiByZXN1bHQ7CkBAIC0yMjYsMTIg
KzIyOCwxMiBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBnZW5lcmF0ZUNvbmRpdGlvbigKICAg
ICB9CiAKICAgICBpZiAoIXJlc3VsdC5pc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5
V2F0Y2hwb2ludCgpKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoT2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFM
b2coIkZhaWxlZCB0byBjcmVhdGUgY29uZGl0aW9uOiAiLCByZXN1bHQsICJcbiIpOwogICAgICAg
ICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRpb24oKTsKICAgICB9CiAKLSAgICBpZiAodmVy
Ym9zZSkKKyAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgZGF0YUxvZygiTmV3IGNvbmRpdGlvbjogIiwgcmVzdWx0LCAiXG4iKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjQ4LDExICsyNTAsMTEgQEAgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQgZ2VuZXJhdGVDb25kaXRpb25zKAogICAgIFZlY3RvcjxPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvbj4gY29uZGl0aW9uczsKICAgICAKICAgICBmb3IgKDs7KSB7Ci0gICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIHN0cnVjdHVyZTog
IiwgcG9pbnRlckR1bXAoc3RydWN0dXJlKSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICBpZiAo
c3RydWN0dXJlLT5pc1Byb3h5KCkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiSXQncyBhIHByb3h5LCBzbyBpbnZhbGlkLlxuIik7CiAg
ICAgICAgICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmludmFsaWQoKTsK
ICAgICAgICAgfQpAQCAtMjYxLDExICsyNjMsMTEgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQgZ2VuZXJhdGVDb25kaXRpb25zKAogICAgICAgICAKICAgICAgICAgaWYgKHZhbHVlLmlzTnVs
bCgpKSB7CiAgICAgICAgICAgICBpZiAoIXByb3RvdHlwZSkgewotICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJSZWFjaGVk
IGVuZCBvZiBwcm90b3R5cGUgY2hhaW4gYXMgZXhwZWN0ZWQsIGRvbmUuXG4iKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiVW5leHBlY3RlZGx5IHJlYWNoZWQgZW5kIG9m
IHByb3RvdHlwZSBjaGFpbiwgc28gaW52YWxpZC5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjppbnZhbGlkKCk7CiAgICAgICAgIH0KQEAgLTI3Niwz
NSArMjc4LDM1IEBAIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRlQ29uZGl0aW9u
cygKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgICAg
IGlmIChjb25jdXJyZW5jeSA9PSBNYWluVGhyZWFkKSB7CiAgICAgICAgICAgICAgICAgaWYgKHN0
cnVjdHVyZS0+aGFzQmVlbkZsYXR0ZW5lZEJlZm9yZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIkRpY3Rpb25hcnkgaGFzIGJlZW4gZmxhdHRlbmVkIGJlZm9yZSwgc28gaW52YWxpZC5cbiIp
OwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6
OmludmFsaWQoKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiRmxhdHRlbmluZyAi
LCBwb2ludGVyRHVtcChzdHJ1Y3R1cmUpKTsKICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmZs
YXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKHZtLCBvYmplY3QpOwogICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiQ2Fubm90IGZsYXR0ZW4gZGljdGlvbmFyeSB3aGVuIG5vdCBvbiBtYWlu
IHRocmVhZCwgc28gaW52YWxpZC5cbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldDo6aW52YWxpZCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCFmdW5jdG9yKGNvbmRpdGlvbnMsIG9iamVjdCkpIHsKLSAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiRnVuY3RvciBm
YWlsZWQsIGludmFsaWQuXG4iKTsKICAgICAgICAgICAgIHJldHVybiBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldDo6aW52YWxpZCgpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAo
b2JqZWN0ID09IHByb3RvdHlwZSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCJSZWFjaGVkIGRlc2lyZWQgcHJvdG90eXBlLCBkb25lLlxu
Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICh2ZXJi
b3NlKQorICAgIGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmcgY29uZGl0aW9uczogIiwgbGlzdER1bXAoY29u
ZGl0aW9ucyksICJcbiIpOwogICAgIHJldHVybiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6
Y3JlYXRlKGNvbmRpdGlvbnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggZmIwYjZhOWQ4YzJkZGM4ZmMzZjlj
OTE5MWRiZjIyYjliZDQwMjk4OC4uNDIyODBjNWFlNmY3NmRiNjcwM2E2MDE2ZDU4M2MxYjBhMDFk
YzM1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3Jw
aGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1v
cnBoaWNBY2Nlc3MuY3BwCkBAIC00NCw3ICs0NCw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitu
YW1lc3BhY2UgUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2
ZXJib3NlID0gZmFsc2U7Cit9CiAKIHZvaWQgQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAogewpAQCAtMjQ3LDcgKzI0OSw3IEBAIEFjY2Vzc0dlbmVy
YXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKAogICAgICAgICBjYXNlc1Rv
QWRkLmFwcGVuZChXVEZNb3ZlKG15Q2FzZSkpOwogICAgIH0KIAotICAgIGlmICh2ZXJib3NlKQor
ICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRh
TG9nKCJjYXNlc1RvQWRkOiAiLCBsaXN0RHVtcChjYXNlc1RvQWRkKSwgIlxuIik7CiAKICAgICAv
LyBJZiB0aGVyZSBhcmVuJ3QgYW55IGNhc2VzIHRvIGFkZCwgdGhlbiBmYWlsIG9uIHRoZSBncm91
bmRzIHRoYXQgdGhlcmUncyBubyBwb2ludCB0byBnZW5lcmF0aW5nIGEKQEAgLTI2Myw3ICsyNjUs
NyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcygK
ICAgICAgICAgbV9saXN0LmFwcGVuZChXVEZNb3ZlKGNhc2VUb0FkZCkpOwogICAgIH0KICAgICAK
LSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgZGF0YUxvZygiQWZ0ZXIgYWRkQ2FzZXM6IG1fbGlzdDogIiwgbGlzdER1
bXAobV9saXN0KSwgIlxuIik7CiAKICAgICByZXR1cm4gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6
QnVmZmVyZWQ7CkBAIC0zMzQsNyArMzM2LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5
bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSgKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBl
clNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKFBv
bHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIlJlZ2Vu
ZXJhdGUgd2l0aCBtX2xpc3Q6ICIsIGxpc3REdW1wKG1fbGlzdCksICJcbiIpOwogICAgIAogICAg
IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSBzdGF0ZSh2bSk7CkBAIC00MDIsNyArNDA0LDcgQEAgQWNj
ZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSgKICAgICB9
CiAgICAgbV9saXN0LnJlc2l6ZShkc3RJbmRleCk7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisg
ICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFM
b2coIk9wdGltaXplZCBjYXNlczogIiwgbGlzdER1bXAoY2FzZXMpLCAiXG4iKTsKICAgICAKICAg
ICAvLyBBdCB0aGlzIHBvaW50IHdlJ3JlIGNvbnZpbmNlZCB0aGF0ICdjYXNlcycgY29udGFpbnMg
dGhlIGNhc2VzIHRoYXQgd2Ugd2FudCB0byBKSVQgbm93IGFuZCB3ZQpAQCAtNTE3LDcgKzUxOSw3
IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUo
CiAKICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0
aW9uQ2FuRmFpbCk7CiAgICAgaWYgKGxpbmtCdWZmZXIuZGlkRmFpbFRvQWxsb2NhdGUoKSkgewot
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJEaWQgZmFpbCB0byBhbGxvY2F0ZS5c
biIpOwogICAgICAgICByZXR1cm4gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6R2F2ZVVwOwogICAg
IH0KQEAgLTUyOCw3ICs1MzAsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGlj
QWNjZXNzOjpyZWdlbmVyYXRlKAogCiAgICAgbGlua0J1ZmZlci5saW5rKGZhaWx1cmUsIHN0dWJJ
bmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbigpKTsKICAgICAKLSAgICBpZiAodmVyYm9zZSkKKyAg
ICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxv
ZyhGdWxsQ29kZU9yaWdpbihjb2RlQmxvY2ssIHN0dWJJbmZvLmNvZGVPcmlnaW4pLCAiOiBHZW5l
cmF0aW5nIHBvbHltb3JwaGljIGFjY2VzcyBzdHViIGZvciAiLCBsaXN0RHVtcChjYXNlcyksICJc
biIpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGUgPSBGSU5BTElaRV9DT0RFX0ZP
UigKQEAgLTU0NCw3ICs1NDYsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGlj
QWNjZXNzOjpyZWdlbmVyYXRlKAogICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0YXRlLndh
dGNocG9pbnRzKTsKICAgICBpZiAoIXN0YXRlLndlYWtSZWZlcmVuY2VzLmlzRW1wdHkoKSkKICAg
ICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFdyaXRlQmFy
cmllcjxKU0NlbGw+Pj4oV1RGTW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOwotICAgIGlmICh2
ZXJib3NlKQorICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6ICIsIGNvZGUuY29kZSgpLCAiXG4iKTsKICAgICAKICAg
ICBtX2xpc3QgPSBXVEZNb3ZlKGNhc2VzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uY3BwCmluZGV4IDQyM2JjMjEwZWQ0ODNjYTEx
OTdlMzk5YjU5NTU0NjY2Y2RmMzk1YzkuLjA3NjQ0YTMwN2Y5Y2Y0ZTljNWYzMmE3MWMxODFjMmJm
ODM5OTU1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9w
ZXJ0eUNvbmRpdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1By
b3BlcnR5Q29uZGl0aW9uLmNwcApAQCAtMzIsNyArMzIsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAorbmFtZXNwYWNlIFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWwgewogc3RhdGljIGJvb2wgdmVy
Ym9zZSA9IGZhbHNlOworfQogCiB2b2lkIFByb3BlcnR5Q29uZGl0aW9uOjpkdW1wSW5Db250ZXh0
KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogewpAQCAtNjUs
MjAgKzY3LDIwIEBAIHZvaWQgUHJvcGVydHlDb25kaXRpb246OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKIGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1w
dXJlUHJvcGVydHlXYXRjaHBvaW50KAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVj
dCogYmFzZSkgY29uc3QKIHsKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChQcm9wZXJ0eUNv
bmRpdGlvbkludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAg
ICAiRGV0ZXJtaW5pbmcgdmFsaWRpdHkgb2YgIiwgKnRoaXMsICIgd2l0aCBzdHJ1Y3R1cmUgIiwg
cG9pbnRlckR1bXAoc3RydWN0dXJlKSwgIiBhbmQgYmFzZSAiLAogICAgICAgICAgICAgSlNWYWx1
ZShiYXNlKSwgIiBhc3N1bWluZyBpbXB1cmUgcHJvcGVydHkgd2F0Y2hwb2ludHMgYXJlIHNldC5c
biIpOwogICAgIH0KICAgICAKICAgICBpZiAoISp0aGlzKSB7Ci0gICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgIGRhdGFMb2coIkludmFsaWQgYmVjYXVzZSB1bnNldC5cbiIpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIGlmICghc3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vz
c2VzQXJlQ2FjaGVhYmxlKCkpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChQ
cm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygi
SW52YWxpZCBiZWNhdXNlIGFjY2Vzc2VzIGFyZSBub3QgY2FjaGVhYmxlLlxuIik7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CkBAIC04OCw3ICs5MCw3IEBAIGJvb2wgUHJvcGVydHlDb25k
aXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KAogICAg
ICAgICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKICAgICAgICAgUHJvcGVydHlPZmZzZXQg
Y3VycmVudE9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCgpLCBjdXJyZW50
QXR0cmlidXRlcyk7CiAgICAgICAgIGlmIChjdXJyZW50T2Zmc2V0ICE9IG9mZnNldCgpIHx8IGN1
cnJlbnRBdHRyaWJ1dGVzICE9IGF0dHJpYnV0ZXMoKSkgewotICAgICAgICAgICAgaWYgKHZlcmJv
c2UpIHsKKyAgICAgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3Nl
KSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgIkludmFs
aWQgYmVjYXVzZSB3ZSBuZWVkIG9mZnNldCwgYXR0cmlidXRlcyB0byBiZSAiLCBvZmZzZXQoKSwg
IiwgIiwgYXR0cmlidXRlcygpLAogICAgICAgICAgICAgICAgICAgICAiIGJ1dCB0aGV5IGFyZSAi
LCBjdXJyZW50T2Zmc2V0LCAiLCAiLCBjdXJyZW50QXR0cmlidXRlcywgIlxuIik7CkBAIC0xMDAs
MjAgKzEwMiwyMCBAQCBib29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1bWlu
Z0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgKICAgICAgICAgCiAgICAgY2FzZSBBYnNlbmNlOiB7
CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7Ci0gICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkludmFsaWQgYmVjYXVzZSBpdCdzIGEg
ZGljdGlvbmFyeS5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAK
ICAgICAgICAgUHJvcGVydHlPZmZzZXQgY3VycmVudE9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29u
Y3VycmVudGx5KHVpZCgpKTsKICAgICAgICAgaWYgKGN1cnJlbnRPZmZzZXQgIT0gaW52YWxpZE9m
ZnNldCkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoUHJvcGVy
dHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJJ
bnZhbGlkIGJlY2F1c2UgdGhlIHByb3BlcnR5IGV4aXN0cyBhdCBvZmZzZXQ6ICIsIGN1cnJlbnRP
ZmZzZXQsICJcbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBpZiAoc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSAhPSBw
cm90b3R5cGUoKSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGlm
IChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAg
ZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgYmVjYXVzZSB0aGUgcHJvdG90
eXBlIGlzICIsIHN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCksICIgZXZlbiB0aG91Z2ggIgog
ICAgICAgICAgICAgICAgICAgICAiaXQgc2hvdWxkIGhhdmUgYmVlbiAiLCBKU1ZhbHVlKHByb3Rv
dHlwZSgpKSwgIlxuIik7CkBAIC0xMjYsNyArMTI4LDcgQEAgYm9vbCBQcm9wZXJ0eUNvbmRpdGlv
bjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoCiAgICAgCiAg
ICAgY2FzZSBBYnNlbmNlT2ZTZXRFZmZlY3Q6IHsKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNE
aWN0aW9uYXJ5KCkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYg
KFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0
YUxvZygiSW52YWxpZCBiZWNhdXNlIGl0J3MgYSBkaWN0aW9uYXJ5LlxuIik7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTEzNSw3ICsxMzcsNyBAQCBib29sIFByb3Bl
cnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2lu
dCgKICAgICAgICAgUHJvcGVydHlPZmZzZXQgY3VycmVudE9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0
Q29uY3VycmVudGx5KHVpZCgpLCBjdXJyZW50QXR0cmlidXRlcyk7CiAgICAgICAgIGlmIChjdXJy
ZW50T2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChjdXJyZW50QXR0
cmlidXRlcyAmIChSZWFkT25seSB8IEFjY2Vzc29yIHwgQ3VzdG9tQWNjZXNzb3IpKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHJvcGVydHlD
b25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KAogICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgYmVjYXVzZSB3ZSBleHBlY3RlZCBu
b3QgdG8gaGF2ZSBhIHNldHRlciwgYnV0IHdlIGhhdmUgb25lIGF0IG9mZnNldCAiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgY3VycmVudE9mZnNldCwgIiB3aXRoIGF0dHJpYnV0ZXMgIiwgY3Vy
cmVudEF0dHJpYnV0ZXMsICJcbiIpOwpAQCAtMTQ1LDcgKzE0Nyw3IEBAIGJvb2wgUHJvcGVydHlD
b25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KAog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5
cGVPYmplY3QoKSAhPSBwcm90b3R5cGUoKSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsK
KyAgICAgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKSB7CiAg
ICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgYmVj
YXVzZSB0aGUgcHJvdG90eXBlIGlzICIsIHN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCksICIg
ZXZlbiB0aG91Z2ggIgogICAgICAgICAgICAgICAgICAgICAiaXQgc2hvdWxkIGhhdmUgYmVlbiAi
LCBKU1ZhbHVlKHByb3RvdHlwZSgpKSwgIlxuIik7CkBAIC0xNjAsNyArMTYyLDcgQEAgYm9vbCBQ
cm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNo
cG9pbnQoCiAgICAgICAgIGlmICghYmFzZSB8fCBiYXNlLT5zdHJ1Y3R1cmUoKSAhPSBzdHJ1Y3R1
cmUpIHsKICAgICAgICAgICAgIC8vIENvbnNlcnZhdGl2ZWx5IHJldHVybiBmYWxzZSwgc2luY2Ug
d2UgY2Fubm90IHZlcmlmeSB0aGlzIG9uZSB3aXRob3V0IGhhdmluZyB0aGUKICAgICAgICAgICAg
IC8vIG9iamVjdC4KLSAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICBpZiAo
UHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgIGRh
dGFMb2coCiAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2
ZSBhIGJhc2Ugb3IgdGhlIGJhc2UgaGFzIHRoZSB3cm9uZyBzdHJ1Y3R1cmU6ICIsCiAgICAgICAg
ICAgICAgICAgICAgIFJhd1BvaW50ZXIoYmFzZSksICJcbiIpOwpAQCAtMTczLDcgKzE3NSw3IEBA
IGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVy
dHlXYXRjaHBvaW50KAogICAgICAgICAKICAgICAgICAgUHJvcGVydHlPZmZzZXQgY3VycmVudE9m
ZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCgpKTsKICAgICAgICAgaWYgKGN1
cnJlbnRPZmZzZXQgPT0gaW52YWxpZE9mZnNldCkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2Up
IHsKKyAgICAgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKSB7
CiAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQg
YmVjYXVzZSB0aGUgYmFzZSBubyBsb25nIGFwcGVhcnMgdG8gaGF2ZSAiLCB1aWQoKSwgIiBvbiBp
dHMgc3RydWN0dXJlOiAiLAogICAgICAgICAgICAgICAgICAgICAgICAgUmF3UG9pbnRlcihiYXNl
KSwgIlxuIik7CkBAIC0xODMsNyArMTg1LDcgQEAgYm9vbCBQcm9wZXJ0eUNvbmRpdGlvbjo6aXNT
dGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoCiAKICAgICAgICAgSlNW
YWx1ZSBjdXJyZW50VmFsdWUgPSBiYXNlLT5nZXREaXJlY3QoY3VycmVudE9mZnNldCk7CiAgICAg
ICAgIGlmIChjdXJyZW50VmFsdWUgIT0gcmVxdWlyZWRWYWx1ZSgpKSB7Ci0gICAgICAgICAgICBp
ZiAodmVyYm9zZSkgeworICAgICAgICAgICAgaWYgKFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWw6
OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAg
ICAiSW52YWxpZCBiZWNhdXNlIHRoZSB2YWx1ZSBpcyAiLCBjdXJyZW50VmFsdWUsICIgYnV0IHdl
IHJlcXVpcmUgIiwgcmVxdWlyZWRWYWx1ZSgpLAogICAgICAgICAgICAgICAgICAgICAiXG4iKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
SW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uY3BwCmluZGV4IDIxODc3NTE3NmYyNzdlMzY2OGRjMTJkZWI2NjY1ZGExNGU0N2QxYjcuLjNl
M2JmMjQzYWE5NWEyOTNlYjI2YWRjMjg1YWE5OTYwNjBlODlkNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtMzUs
NyArMzUsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCiAKK25hbWVzcGFj
ZSBTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2Ug
PSBmYWxzZTsKK30KIAogU3RydWN0dXJlU3R1YkluZm86OlN0cnVjdHVyZVN0dWJJbmZvKEFjY2Vz
c1R5cGUgYWNjZXNzVHlwZSkKICAgICA6IGNhbGxTaXRlSW5kZXgoVUlOVF9NQVgpCkBAIC0xMTUs
NyArMTE3LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRk
QWNjZXNzQ2FzZSgKIHsKICAgICBWTSYgdm0gPSAqY29kZUJsb2NrLT52bSgpOwogICAgIAotICAg
IGlmICh2ZXJib3NlKQorICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICBkYXRhTG9nKCJBZGRpbmcgYWNjZXNzIGNhc2U6ICIsIGFjY2Vzc0Nhc2UsICJc
biIpOwogICAgIAogICAgIGlmICghYWNjZXNzQ2FzZSkKQEAgLTEyNiw3ICsxMjgsNyBAQCBBY2Nl
c3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAogICAg
IGlmIChjYWNoZVR5cGUgPT0gQ2FjaGVUeXBlOjpTdHViKSB7CiAgICAgICAgIHJlc3VsdCA9IHUu
c3R1Yi0+YWRkQ2FzZShsb2NrZXIsIHZtLCBjb2RlQmxvY2ssICp0aGlzLCBpZGVudCwgV1RGTW92
ZShhY2Nlc3NDYXNlKSk7CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
aWYgKFN0cnVjdHVyZVN0dWJJbmZvSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRh
TG9nKCJIYWQgc3R1YiwgcmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOwogCiAgICAgICAgIGlmICgh
cmVzdWx0LmJ1ZmZlcmVkKCkpIHsKQEAgLTE0Nyw3ICsxNDksNyBAQCBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAogICAgICAgICAKICAgICAg
ICAgcmVzdWx0ID0gYWNjZXNzLT5hZGRDYXNlcyhsb2NrZXIsIHZtLCBjb2RlQmxvY2ssICp0aGlz
LCBpZGVudCwgV1RGTW92ZShhY2Nlc3NDYXNlcykpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgZGF0YUxvZygiQ3JlYXRlZCBzdHViLCByZXN1bHQ6ICIsIHJlc3VsdCwgIlxu
Iik7CiAKICAgICAgICAgaWYgKCFyZXN1bHQuYnVmZmVyZWQoKSkgewpAQCAtMTY0LDcgKzE2Niw3
IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nh
c2UoCiAgICAgLy8gSWYgd2UgZGlkbid0IGJ1ZmZlciBhbnkgY2FzZXMgdGhlbiBiYWlsLiBJZiB0
aGlzIG1hZGUgbm8gY2hhbmdlcyB0aGVuIHdlJ2xsIGp1c3QgdHJ5IGFnYWluCiAgICAgLy8gc3Vi
amVjdCB0byBjb29sLWRvd24uCiAgICAgaWYgKCFyZXN1bHQuYnVmZmVyZWQoKSkgewotICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJEaWRuJ3QgYnVmZmVyIGFueXRoaW5nLCBiYWls
aW5nLlxuIik7CiAgICAgICAgIGJ1ZmZlcmVkU3RydWN0dXJlcy5jbGVhcigpOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwpAQCAtMTcyLDcgKzE3NCw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
U3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAgICAgCiAgICAgLy8gVGhlIGJ1ZmZl
cmluZyBjb3VudGRvd24gdGVsbHMgdXMgaWYgd2Ugc2hvdWxkIGJlIHJlcGF0Y2hpbmcgbm93Lgog
ICAgIGlmIChidWZmZXJpbmdDb3VudGRvd24pIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ZGF0YUxvZygiQ291bnRkb3duIGlzIHRvbyBoaWdoOiAiLCBidWZmZXJpbmdDb3VudGRvd24sICIu
XG4iKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0xODMsNyArMTg1LDcgQEAg
QWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgK
ICAgICAKICAgICByZXN1bHQgPSB1LnN0dWItPnJlZ2VuZXJhdGUobG9ja2VyLCB2bSwgY29kZUJs
b2NrLCAqdGhpcywgaWRlbnQpOwogICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTdHJ1
Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJSZWdlbmVy
YXRpb24gcmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOwogICAgIAogICAgIFJFTEVBU0VfQVNTRVJU
KCFyZXN1bHQuYnVmZmVyZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SGVhcC5jcHAKaW5kZXggY2Q2OTRiYmViYWM4MDdkNTE4ZjY2YzQ3Y2FhYWI2ZTc4ZTkx
ZDIzYy4uYjgzZmVlMGQzYzA5ZDE0OTdhYTdlYTFkZTNlMDQ5MDYyZjIyNmMxNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmNwcApAQCAtNjIsNyArNjIs
NyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQWJzdHJhY3RIZWFwS2lu
ZCBraW5kKQogewogICAgIHN3aXRjaCAoa2luZCkgewogI2RlZmluZSBBQlNUUkFDVF9IRUFQX0RV
TVAobmFtZSkgICAgICAgICAgICBcCi0gICAgY2FzZSBuYW1lOiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBjYXNlIEFic3RyYWN0SGVhcEtpbmQ6Om5hbWU6ICAgICAgICAgICAg
XAogICAgICAgICBvdXQucHJpbnQoI25hbWUpOyAgICAgICAgICAgICAgICAgICBcCiAgICAgICAg
IHJldHVybjsKICAgICBGT1JfRUFDSF9BQlNUUkFDVF9IRUFQX0tJTkQoQUJTVFJBQ1RfSEVBUF9E
VU1QKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNF
bGltaW5hdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1l
bnRzRWxpbWluYXRpb25QaGFzZS5jcHAKaW5kZXggNTE2NTBmNTg1ZDRlOGVhNmEzMzllN2Y2MzAy
OGVhMDhlZDU4ZWE0Zi4uYTQ1N2Y4ZjU3ZDQ5Y2MzZTI3MzM5NzZiODBiMmZkOTg2M2E0NjBhZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5h
dGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50
c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC01MCw3ICs1MCw5IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAotYm9vbCB2ZXJib3NlID0gZmFsc2U7Citu
YW1lc3BhY2UgREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZUludGVybmFsIHsKK3N0YXRpYyBj
b25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogY2xhc3MgQXJndW1lbnRzRWxpbWluYXRp
b25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJsaWM6CkBAIC02NSw3ICs2Nyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgLy8gdmVyc2lvbiBvdmVyIExvYWRTdG9yZS4KICAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwogICAgICAgICAKLSAg
ICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0aW9u
UGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVm
b3JlIGFyZ3VtZW50cyBlbGltaW5hdGlvbjpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1w
KCk7CiAgICAgICAgIH0KQEAgLTE1Nyw3ICsxNTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYg
KERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgIGRhdGFMb2coIkNhbmRpZGF0ZXM6ICIsIGxpc3REdW1wKG1fY2FuZGlkYXRlcyksICJcbiIp
OwogICAgIH0KIApAQCAtMjEwLDcgKzIxMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cmFuc2l0
aXZlbHlSZW1vdmVDYW5kaWRhdGUoTm9kZSogbm9kZSwgTm9kZSogc291cmNlID0gbnVsbHB0cikK
ICAgICB7CiAgICAgICAgIGJvb2wgcmVtb3ZlZCA9IG1fY2FuZGlkYXRlcy5yZW1vdmUobm9kZSk7
Ci0gICAgICAgIGlmIChyZW1vdmVkICYmIHZlcmJvc2UgJiYgc291cmNlKQorICAgICAgICBpZiAo
cmVtb3ZlZCAmJiBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2Ug
JiYgc291cmNlKQogICAgICAgICAgICAgZGF0YUxvZygiZWxpbWluYXRpbmcgY2FuZGlkYXRlOiAi
LCBub2RlLCAiIGJlY2F1c2UgaXQgZXNjYXBlcyBmcm9tOiAiLCBzb3VyY2UsICJcbiIpOwogCiAg
ICAgICAgIGlmIChyZW1vdmVkKQpAQCAtNDE4LDcgKzQyMCw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERG
R0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
IGRhdGFMb2coIkFmdGVyIGVzY2FwZSBhbmFseXNpczogIiwgbGlzdER1bXAobV9jYW5kaWRhdGVz
KSwgIlxuIik7CiAgICAgfQogCkBAIC01MTksNyArNTIxLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgLy8gZm9yIHRoaXMgYXJndW1lbnRzIGFsbG9jYXRpb24sIGFuZCB3ZSdkIGhh
dmUgdG8gZXhhbWluZSBldmVyeSBub2RlIGluIHRoZSBibG9jaywKICAgICAgICAgICAgICAgICAg
ICAgLy8gdGhlbiB3ZSBjYW4ganVzdCBlbGltaW5hdGUgdGhlIGNhbmRpZGF0ZS4KICAgICAgICAg
ICAgICAgICAgICAgaWYgKG5vZGVJbmRleCA9PSBibG9jay0+c2l6ZSgpICYmIGNhbmRpZGF0ZS0+
b3duZXIgIT0gYmxvY2spIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJl
bGltaW5hdGluZyBjYW5kaWRhdGU6ICIsIGNhbmRpZGF0ZSwgIiBiZWNhdXNlIGl0IGlzIGNsb2Ji
ZXJlZCBieTogIiwgYmxvY2stPmF0KG5vZGVJbmRleCksICJcbiIpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgdHJhbnNpdGl2ZWx5UmVtb3ZlQ2FuZGlkYXRlKGNhbmRpZGF0ZSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01NDYsNyArNTQ4LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOb09wQ2xvYmJlcml6ZSgpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiZWxpbWluYXRpbmcg
Y2FuZGlkYXRlOiAiLCBjYW5kaWRhdGUsICIgYmVjYXVzZSBpdCBpcyBjbG9iYmVyZWQgYnkgIiwg
YmxvY2stPmF0KG5vZGVJbmRleCksICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRyYW5zaXRpdmVseVJlbW92ZUNhbmRpZGF0ZShjYW5kaWRhdGUpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTU2OCw3ICs1NzAsNyBAQCBwcml2YXRlOgogICAgICAg
ICAvLyBzaW5jZSB0aG9zZSBhdmFpbGFiaWxpdGllcyBzcGVhayBvZiB0aGUgc3RhY2sgYmVmb3Jl
IHRoZSBvcHRpbWl6aW5nIGNvbXBpbGVyIHN0YWNrIGZyYW1lIGlzCiAgICAgICAgIC8vIHRvcm4g
ZG93bi4KIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0FyZ3VtZW50c0Vs
aW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkFm
dGVyIGludGVyZmVyZW5jZSBhbmFseXNpczogIiwgbGlzdER1bXAobV9jYW5kaWRhdGVzKSwgIlxu
Iik7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAppbmRleCBiNDlmMmU5Y2NhY2NjZjhkYjUyNmUyNWMzNDY4ZjQyM2IwNmE1
NzA2Li5jOGUwOTZlZDRlNjAzOGI1MTQzNTIzZWJlMGNkZGM3ZDhkZGRkYmUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNzAsMjIg
KzcwLDE4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsK
IAotTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBORVZFUl9JTkxJTkUgdm9pZCBjcmFzaCgpCi17Ci0g
ICAgQ1JBU0goKTsKLX0KLQotI3VuZGVmIFJFTEVBU0VfQVNTRVJUCi0jZGVmaW5lIFJFTEVBU0Vf
QVNTRVJUKGFzc2VydGlvbikgZG8geyBcCisjZGVmaW5lIFBBUlNFUl9BU1NFUlQoYXNzZXJ0aW9u
LCAuLi4pIGRvIHsgICAgICAgICAgXAogICAgIGlmIChVTkxJS0VMWSghKGFzc2VydGlvbikpKSB7
IFwKICAgICAgICAgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShfX0ZJTEVfXywgX19MSU5FX18s
IFdURl9QUkVUVFlfRlVOQ1RJT04sICNhc3NlcnRpb24pOyBcCi0gICAgICAgIGNyYXNoKCk7IFwK
KyAgICAgICAgQ1JBU0hfV0lUSF9JTkZPKF9fVkFfQVJHU19fKTsgXAogICAgIH0gXAogfSB3aGls
ZSAoMCkKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKK25hbWVzcGFjZSBERkdCeXRlQ29k
ZVBhcnNlckludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30K
IAogY2xhc3MgQ29uc3RhbnRCdWZmZXJLZXkgewogcHVibGljOgpAQCAtMTIwNyw3ICsxMjAzLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICAgICAgICAgICwg
bV9zZXRNb2RlKHNldE1vZGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG9wZXJhbmQuaXNWYWxpZCgpKTsKKyAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQob3BlcmFuZC5p
c1ZhbGlkKCkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBOb2RlKiBleGVjdXRlKEJ5
dGVDb2RlUGFyc2VyKiBwYXJzZXIpCkBAIC0xNDMwLDE4ICsxNDI2LDE4IEBAIHVuc2lnbmVkIEJ5
dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQsIElubGlu
ZUNhbGxGcmFtZTo6CiB7CiAgICAgQ2FsbE1vZGUgY2FsbE1vZGUgPSBJbmxpbmVDYWxsRnJhbWU6
OmNhbGxNb2RlRm9yKGtpbmQpOwogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6
YXRpb25LaW5kID0gc3BlY2lhbGl6YXRpb25LaW5kRm9yKGNhbGxNb2RlKTsKLSAgICBpZiAodmVy
Ym9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgZGF0YUxvZygiQ29uc2lkZXJpbmcgaW5saW5pbmcgIiwgY2FsbGVlLCAiIGludG8gIiwgY3Vy
cmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgCiAgICAgaWYgKG1faGFzRGVidWdnZXJFbmFi
bGVkKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJz
ZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJl
Y2F1c2UgdGhlIGRlYnVnZ2VyIGlzIGluIHVzZS5cbiIpOwogICAgICAgICByZXR1cm4gVUlOVF9N
QVg7CiAgICAgfQogCiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVl
LmZ1bmN0aW9uRXhlY3V0YWJsZSgpOwogICAgIGlmICghZXhlY3V0YWJsZSkgewotICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZXJlIGlzIG5v
IGZ1bmN0aW9uIGV4ZWN1dGFibGUuXG4iKTsKICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAg
IH0KQEAgLTE0NTUsMTQgKzE0NTEsMTQgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGlu
aW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCwgSW5saW5lQ2FsbEZyYW1lOjoKICAgICAv
LyBpdCdzIGEgcmFyZSBjYXNlIGJlY2F1c2Ugd2UgZXhwZWN0IHRoYXQgYW55IGhvdCBjYWxsZWVz
IHdvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNvbXBpbGVkLgogICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5k
KTsKICAgICBpZiAoIWNvZGVCbG9jaykgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
aWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIG5vIGNvZGUgYmxvY2sgYXZhaWxhYmxlLlxuIik7CiAg
ICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAKICAgICBDYXBhYmlsaXR5TGV2ZWwgY2Fw
YWJpbGl0eUxldmVsID0gaW5saW5lRnVuY3Rpb25Gb3JDYXBhYmlsaXR5TGV2ZWwoCiAgICAgICAg
IGNvZGVCbG9jaywgc3BlY2lhbGl6YXRpb25LaW5kLCBjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKTsK
LSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2
ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2coIiAgICBDYWxsIG1vZGU6ICIsIGNhbGxNb2RlLCAi
XG4iKTsKICAgICAgICAgZGF0YUxvZygiICAgIElzIGNsb3N1cmUgY2FsbDogIiwgY2FsbGVlLmlz
Q2xvc3VyZUNhbGwoKSwgIlxuIik7CiAgICAgICAgIGRhdGFMb2coIiAgICBDYXBhYmlsaXR5IGxl
dmVsOiAiLCBjYXBhYmlsaXR5TGV2ZWwsICJcbiIpOwpAQCAtMTQ3Miw3ICsxNDY4LDcgQEAgdW5z
aWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGlu
dCwgSW5saW5lQ2FsbEZyYW1lOjoKICAgICAgICAgZGF0YUxvZygiICAgIElzIGlubGluaW5nIGNh
bmRpZGF0ZTogIiwgY29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+aXNJbmxpbmlu
Z0NhbmRpZGF0ZSgpLCAiXG4iKTsKICAgICB9CiAgICAgaWYgKCFjYW5JbmxpbmUoY2FwYWJpbGl0
eUxldmVsKSkgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVDb2Rl
UGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGlu
ZyBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyBub3QgaW5saW5lYWJsZS5cbiIpOwogICAgICAgICBy
ZXR1cm4gVUlOVF9NQVg7CiAgICAgfQpAQCAtMTQ4Miw3ICsxNDc4LDcgQEAgdW5zaWduZWQgQnl0
ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCwgSW5saW5l
Q2FsbEZyYW1lOjoKICAgICAvLyBwdXJwb3NlIG9mIHVuc2V0dGluZyBTQUJJLgogICAgIGlmICgh
aXNTbWFsbEVub3VnaFRvSW5saW5lQ29kZUludG8obV9jb2RlQmxvY2spKSB7CiAgICAgICAgIGNv
ZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKLSAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGUgY2FsbGVyIGlzIHRv
byBsYXJnZS5cbiIpOwogICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQpAQCAtMTUwNiw3
ICsxNTAyLDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFy
aWFudCBjYWxsZWUsIGludCwgSW5saW5lQ2FsbEZyYW1lOjoKICAgICBmb3IgKElubGluZVN0YWNr
RW50cnkqIGVudHJ5ID0gbV9pbmxpbmVTdGFja1RvcDsgZW50cnk7IGVudHJ5ID0gZW50cnktPm1f
Y2FsbGVyKSB7CiAgICAgICAgICsrZGVwdGg7CiAgICAgICAgIGlmIChkZXB0aCA+PSBPcHRpb25z
OjptYXhpbXVtSW5saW5pbmdEZXB0aCgpKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgZGVwdGggZXhjZWVkZWQuXG4i
KTsKICAgICAgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICAgICAgfQpAQCAtMTUxNCwxNCAr
MTUxMCwxNCBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KENhbGxWYXJp
YW50IGNhbGxlZSwgaW50LCBJbmxpbmVDYWxsRnJhbWU6OgogICAgICAgICBpZiAoZW50cnktPmV4
ZWN1dGFibGUoKSA9PSBleGVjdXRhYmxlKSB7CiAgICAgICAgICAgICArK3JlY3Vyc2lvbjsKICAg
ICAgICAgICAgIGlmIChyZWN1cnNpb24gPj0gT3B0aW9uczo6bWF4aW11bUlubGluaW5nUmVjdXJz
aW9uKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBp
ZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSByZWN1cnNpb24gZGV0ZWN0ZWQuXG4iKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0J5dGVDb2RlUGFy
c2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgICBJbmxpbmluZyBzaG91
bGQgYmUgcG9zc2libGUuXG4iKTsKICAgICAKICAgICAvLyBJdCBtaWdodCBiZSBwb3NzaWJsZSB0
byBpbmxpbmUuCkBAIC0xNjE4LDExICsxNjE0LDExIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6Omlu
bGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFy
CiAgICAgaW5saW5lVmFyaWFibGVEYXRhLmFyZ3VtZW50UG9zaXRpb25TdGFydCA9IGFyZ3VtZW50
UG9zaXRpb25TdGFydDsKICAgICBpbmxpbmVWYXJpYWJsZURhdGEuY2FsbGVlVmFyaWFibGUgPSAw
OwogICAgIAotICAgIFJFTEVBU0VfQVNTRVJUKAorICAgIFBBUlNFUl9BU1NFUlQoCiAgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsCiAgICAg
ICAgID09IGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpOwogICAgIGlmIChjYWxsZWUuaXNDbG9zdXJl
Q2FsbCgpKSB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxlZVZhcmlhYmxlKTsKKyAgICAg
ICAgUEFSU0VSX0FTU0VSVChjYWxsZWVWYXJpYWJsZSk7CiAgICAgICAgIGlubGluZVZhcmlhYmxl
RGF0YS5jYWxsZWVWYXJpYWJsZSA9IGNhbGxlZVZhcmlhYmxlOwogICAgIH0KICAgICAKQEAgLTE2
NjksNyArMTY2NSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2Fs
bFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyCiAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiICAgICAgICBSZXB1cnBvc2luZyBsYXN0IGJsb2NrIGZyb20gIiwgbGFzdEJsb2Nr
LT5ieXRlY29kZUJlZ2luLCAiIHRvICIsIG1fY3VycmVudEluZGV4LCAiXG4iKTsKICAgICAgICAg
ICAgIGxhc3RCbG9jay0+Ynl0ZWNvZGVCZWdpbiA9IG1fY3VycmVudEluZGV4OwogICAgICAgICAg
ICAgaWYgKGNhbGxlckxpbmthYmlsaXR5ID09IENhbGxlckRvZXNOb3JtYWxMaW5raW5nKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR0J5dGVD
b2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
IkFkZGluZyB1bmxpbmtlZCBibG9jayAiLCBSYXdQb2ludGVyKG1fZ3JhcGgubGFzdEJsb2NrKCkp
LCAiIChvbmUgcmV0dXJuKVxuIik7CiAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+
bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2sobV9ncmFwaC5s
YXN0QmxvY2soKSkpOwogICAgICAgICAgICAgfQpAQCAtMTY5OSwxNCArMTY5NSwxNCBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVz
dWx0T3BlcmFuZCwgQ2FsbFZhcgogICAgICAgICBBU1NFUlQoIW5vZGUtPnRhcmdldEJsb2NrKCkp
OwogICAgICAgICBub2RlLT50YXJnZXRCbG9jaygpID0gYmxvY2sucHRyKCk7CiAgICAgICAgIGlu
bGluZVN0YWNrRW50cnkubV91bmxpbmtlZEJsb2Nrc1tpXS5tX25lZWRzRWFybHlSZXR1cm5MaW5r
aW5nID0gZmFsc2U7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHQnl0ZUNv
ZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIk1hcmtpbmcg
IiwgUmF3UG9pbnRlcihibG9ja1RvTGluayksICIgYXMgbGlua2VkIChqdW1wcyB0byByZXR1cm4p
XG4iKTsKICAgICAgICAgYmxvY2tUb0xpbmstPmRpZExpbmsoKTsKICAgICB9CiAgICAgCiAgICAg
bV9jdXJyZW50QmxvY2sgPSBibG9jay5wdHIoKTsKICAgICBBU1NFUlQobV9pbmxpbmVTdGFja1Rv
cC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5pc0VtcHR5KCkgfHwgbV9pbmxpbmVT
dGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5sYXN0KCktPmJ5dGVjb2Rl
QmVnaW4gPCBuZXh0T2Zmc2V0KTsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0ZUNv
ZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQWRkaW5nIHVubGlu
a2VkIGJsb2NrICIsIFJhd1BvaW50ZXIoYmxvY2sucHRyKCkpLCAiIChtYW55IHJldHVybnMpXG4i
KTsKICAgICBpZiAoY2FsbGVyTGlua2FiaWxpdHkgPT0gQ2FsbGVyRG9lc05vcm1hbExpbmtpbmcp
IHsKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3Mu
YXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2sucHRyKCkpKTsKQEAgLTE3NDIsNyArMTczOCw3IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lubGluZUNhbGwoTm9kZSogY2FsbFRhcmdl
dE5vZGUsIGludCByZXN1bHRPcGVyYW5kCiAgICAgaWYgKCFpbmxpbmluZ0JhbGFuY2UpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0
ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiICAgIENvbnNp
ZGVyaW5nIGNhbGxlZSAiLCBjYWxsZWUsICJcbiIpOwogICAgIAogICAgIC8vIEludHJpbnNpY3Mg
YW5kIGludGVybmFsIGZ1bmN0aW9ucyBjYW4gb25seSBiZSBpbmxpbmVkIGlmIHdlJ3JlIG5vdCBk
b2luZyB2YXJhcmdzLiBUaGlzIGlzIGJlY2F1c2UKQEAgLTE3NjIsNDAgKzE3NTgsNDAgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9k
ZSwgaW50IHJlc3VsdE9wZXJhbmQKICAgICAKICAgICAgICAgaWYgKEludGVybmFsRnVuY3Rpb24q
IGZ1bmN0aW9uID0gY2FsbGVlLmludGVybmFsRnVuY3Rpb24oKSkgewogICAgICAgICAgICAgaWYg
KGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3Bl
cmFuZCwgZnVuY3Rpb24sIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgc3BlY2lhbGl6YXRpb25LaW5kLCBwcmVkaWN0aW9uLCBpbnNlcnRDaGVja3NXaXRoQWNjb3Vu
dGluZykpIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChkaWRJbnNlcnRDaGVja3Mp
OworICAgICAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKICAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXROb2RlKTsKICAgICAgICAg
ICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpOwogICAgICAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZS0tOwogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CisgICAgICAgICAgICBQQVJTRVJfQVNTRVJU
KCFkaWRJbnNlcnRDaGVja3MpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgCiAgICAgICAgIEludHJpbnNpYyBpbnRyaW5zaWMgPSBjYWxsZWUuaW50cmluc2ljRm9y
KHNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAgICAgIGlmIChpbnRyaW5zaWMgIT0gTm9JbnRyaW5z
aWMpIHsKICAgICAgICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWNDYWxsKGNhbGxUYXJnZXROb2Rl
LCByZXN1bHRPcGVyYW5kLCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7
Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKKyAgICAg
ICAgICAgICAgICBQQVJTRVJfQVNTRVJUKGRpZEluc2VydENoZWNrcyk7CiAgICAgICAgICAgICAg
ICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7CiAgICAgICAgICAgICAgICAg
ZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKTsKICAgICAgICAgICAgICAgICBpbmxpbmluZ0JhbGFuY2UtLTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoIWRpZEluc2VydENoZWNrcyk7CisgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKCFkaWRJ
bnNlcnRDaGVja3MpOwogICAgICAgICAgICAgLy8gV2UgbWlnaHQgc3RpbGwgdHJ5IHRvIGlubGlu
ZSB0aGUgSW50cmluc2ljIGJlY2F1c2UgaXQgbWlnaHQgYmUgYSBidWlsdGluIEpTIGZ1bmN0aW9u
LgogICAgICAgICB9CiAKICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZURPTUpJVCgpKSB7CiAgICAg
ICAgICAgICBpZiAoY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IGNhbGxlZS5z
aWduYXR1cmVGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKSkgewogICAgICAgICAgICAgICAgIGlmICho
YW5kbGVET01KSVRDYWxsKGNhbGxUYXJnZXROb2RlLCByZXN1bHRPcGVyYW5kLCBzaWduYXR1cmUs
IHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbiwg
aW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGRpZEluc2VydENoZWNrcyk7CisgICAgICAgICAgICAgICAgICAgIFBBUlNFUl9B
U1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQ
aGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRBcmd1bWVu
dFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CiAg
ICAgICAgICAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZS0tOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CisgICAgICAgICAgICAgICAgUEFSU0VSX0FTU0VS
VCghZGlkSW5zZXJ0Q2hlY2tzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAg
LTE4MTcsMjEgKzE4MTMsMjEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmco
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50c0FyZ3VtZW50LCB1bnNpZ25lZCBhcmd1bWVu
dHNPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywKICAgICB1bnNpZ25lZCBu
ZXh0T2Zmc2V0LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogewotICAgIGlmICh2ZXJib3NlKSB7CisgICAgaWYg
KERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZGF0YUxvZygi
SGFuZGxpbmcgaW5saW5pbmcuLi5cbiIpOwogICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3Vy
cmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgfQogICAgIENvZGVTcGVjaWFsaXphdGlvbktp
bmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFsaXphdGlvbktp
bmRGb3Ioa2luZCk7CiAgICAgCiAgICAgaWYgKCFjYWxsTGlua1N0YXR1cy5zaXplKCkpIHsKLSAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQmFpbGluZyBpbmxpbmluZy5cbiIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIGlmIChJbmxpbmVDYWxsRnJh
bWU6OmlzVmFyYXJncyhraW5kKQogICAgICAgICAmJiBjYWxsTGlua1N0YXR1cy5tYXhOdW1Bcmd1
bWVudHMoKSA+IE9wdGlvbnM6Om1heGltdW1WYXJhcmdzRm9ySW5saW5pbmcoKSkgewotICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJCYWlsaW5nIGlubGluaW5nIGJlY2F1c2Ugb2Yg
dmFyYXJncy5cbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTk1MCw3ICsx
OTQ2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9KTsKLSAgICAgICAg
aWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZl
cmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkRvbmUgaW5saW5pbmcgKHNpbXBsZSkuXG4i
KTsKICAgICAgICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAi
XG4iKTsKICAgICAgICAgICAgIGRhdGFMb2coIlJlc3VsdDogIiwgcmVzdWx0LCAiXG4iKTsKQEAg
LTE5NjYsNyArMTk2Miw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAog
ICAgIC8vIGFsc28uCiAgICAgaWYgKCFpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSB8fCAhT3B0
aW9uczo6dXNlUG9seW1vcnBoaWNDYWxsSW5saW5pbmcoKQogICAgICAgICB8fCBJbmxpbmVDYWxs
RnJhbWU6OmlzVmFyYXJncyhraW5kKSkgewotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAg
ICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAg
ZGF0YUxvZygiQmFpbGluZyBpbmxpbmluZyAoaGFyZCkuXG4iKTsKICAgICAgICAgICAgIGRhdGFM
b2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICAgICAgfQpAQCAt
MTk3OCw3ICsxOTc0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAg
ICAgLy8gaXQgaGFzIG5vIGlkZWEuCiAgICAgaWYgKCFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0Nh
bGxJbmxpbmluZ0Zvck5vblN0dWJTdGF0dXMoKQogICAgICAgICAmJiAhY2FsbExpbmtTdGF0dXMu
aXNCYXNlZE9uU3R1YigpKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChE
RkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9n
KCJCYWlsaW5nIGlubGluaW5nIChub24tc3R1YiBwb2x5bW9ycGhpc20pLlxuIik7CiAgICAgICAg
ICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAg
ICAgIH0KQEAgLTIwMDYsMTQgKzIwMDIsMTQgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW5saW5pbmcoCiAgICAgICAgIC8vIHdoZXJlIGl0IHdvdWxkIGJlIGJlbmVmaWNpYWwuIEl0IG1p
Z2h0IGJlIGJlc3QgdG8gaGFuZGxlIHRoZXNlIGNhc2VzIGFzIGlmIGFsbCBjYWxscyB3ZXJlCiAg
ICAgICAgIC8vIGNsb3N1cmUgY2FsbHMuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYwMjAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAg
ICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAg
IGRhdGFMb2coIkJhaWxpbmcgaW5saW5pbmcgKG1peCkuXG4iKTsKICAgICAgICAgICAgIGRhdGFM
b2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICAgICAgfQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAotICAgIGlmICh2ZXJib3NlKSB7CisgICAg
aWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZGF0YUxv
ZygiRG9pbmcgaGFyZCBpbmxpbmluZy4uLlxuIik7CiAgICAgICAgIGRhdGFMb2coIlN0YWNrOiAi
LCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICB9CkBAIC0yMDI0LDExICsyMDIwLDEx
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgIC8vIHN0b3JlIHRo
ZSBjYWxsZWUgc28gdGhhdCBpdCB3aWxsIGJlIGFjY2Vzc2libGUgdG8gYWxsIG9mIHRoZSBibG9j
a3Mgd2UncmUgYWJvdXQgdG8gY3JlYXRlLiBXZQogICAgIC8vIGdldCBhd2F5IHdpdGggZG9pbmcg
YW4gaW1tZWRpYXRlLXNldCBoZXJlIGJlY2F1c2Ugd2Ugd291bGRuJ3QgaGF2ZSBwZXJmb3JtZWQg
YW55IHNpZGUgZWZmZWN0cwogICAgIC8vIHlldC4KLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAo
REZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiUmVn
aXN0ZXIgb2Zmc2V0OiAiLCByZWdpc3Rlck9mZnNldCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGNh
bGxlZVJlZyhyZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7CiAgICAgY2Fs
bGVlUmVnID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKGNhbGxlZVJlZyk7Ci0gICAg
aWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgIGRhdGFMb2coIkNhbGxlZSBpcyBnb2luZyB0byBiZSAiLCBjYWxsZWVSZWcsICJc
biIpOwogICAgIHNldERpcmVjdChjYWxsZWVSZWcsIGNhbGxUYXJnZXROb2RlLCBJbW1lZGlhdGVT
ZXRXaXRoRmx1c2gpOwogCkBAIC0yMDQyLDcgKzIwMzgsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbmxpbmluZygKICAgICBhZGRUb0dyYXBoKFN3aXRjaCwgT3BJbmZvKCZkYXRhKSwg
dGhpbmdUb1N3aXRjaE9uKTsKICAgICAKICAgICBCYXNpY0Jsb2NrKiBvcmlnaW5CbG9jayA9IG1f
Y3VycmVudEJsb2NrOwotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNl
ckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50
ZXIob3JpZ2luQmxvY2spLCAiIGFzIGxpbmtlZCAob3JpZ2luIG9mIHBvbHkgaW5saW5lKVxuIik7
CiAgICAgb3JpZ2luQmxvY2stPmRpZExpbmsoKTsKICAgICBjYW5jZWxMaW5raW5nRm9yQmxvY2so
bV9pbmxpbmVTdGFja1RvcCwgb3JpZ2luQmxvY2spOwpAQCAtMjA1NCw3ICsyMDUwLDcgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgLy8gV2UgbWF5IGZvcmNlIHRo
aXMgdHJ1ZSBpZiB3ZSBnaXZlIHVwIG9uIGlubGluaW5nIGFueSBvZiB0aGUgZWRnZXMuCiAgICAg
Ym9vbCBjb3VsZFRha2VTbG93UGF0aCA9IGNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRo
KCk7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkFib3V0IHRvIGxvb3Agb3ZlciBmdW5j
dGlvbnMgYXQgIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIi5cbiIpOwogICAgIAogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsTGlua1N0YXR1cy5zaXplKCk7ICsraSkgewpAQCAtMjEw
MSwxMSArMjA5NywxMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCk7CiAgICAgICAgICAgICBsYW5kaW5nQmxvY2tzLmFw
cGVuZChtX2N1cnJlbnRCbG9jayk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgZGF0YUxvZygiTWFya2luZyAiLCBSYXdQb2ludGVyKG1fY3VycmVudEJsb2NrKSwgIiBhcyBs
aW5rZWQgKHRhaWwgb2YgcG9seSBpbmxpbmVlKVxuIik7CiAgICAgICAgIG1fY3VycmVudEJsb2Nr
LT5kaWRMaW5rKCk7CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdCeXRl
Q29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiRmluaXNo
ZWQgaW5saW5pbmcgIiwgY2FsbExpbmtTdGF0dXNbaV0sICIgYXQgIiwgY3VycmVudENvZGVPcmln
aW4oKSwgIi5cbiIpOwogICAgIH0KICAgICAKQEAgLTIxMTUsNyArMjExMSw3IEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgIG1fZXhpdE9LID0gdHJ1ZTsKICAgICBk
YXRhLmZhbGxUaHJvdWdoID0gQnJhbmNoVGFyZ2V0KHNsb3dQYXRoQmxvY2sucHRyKCkpOwogICAg
IG1fZ3JhcGguYXBwZW5kQmxvY2soc2xvd1BhdGhCbG9jay5jb3B5UmVmKCkpOwotICAgIGlmICh2
ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIoc2xvd1BhdGhCbG9jay5wdHIoKSks
ICIgYXMgbGlua2VkIChzbG93IHBhdGggYmxvY2spXG4iKTsKICAgICBzbG93UGF0aEJsb2NrLT5k
aWRMaW5rKCk7CiAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOwpAQCAtMjE0Niw3ICsyMTQyLDcg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgUmVmPEJhc2ljQmxv
Y2s+IGNvbnRpbnVhdGlvbkJsb2NrID0gYWRvcHRSZWYoCiAgICAgICAgICpuZXcgQmFzaWNCbG9j
ayhVSU5UX01BWCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCAxKSk7CiAgICAgbV9ncmFw
aC5hcHBlbmRCbG9jayhjb250aW51YXRpb25CbG9jay5jb3B5UmVmKCkpOwotICAgIGlmICh2ZXJi
b3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICBkYXRhTG9nKCJBZGRpbmcgdW5saW5rZWQgYmxvY2sgIiwgUmF3UG9pbnRlcihjb250aW51YXRp
b25CbG9jay5wdHIoKSksICIgKGNvbnRpbnVhdGlvbilcbiIpOwogICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soY29udGludWF0aW9uQmxv
Y2sucHRyKCkpKTsKICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CkBAIC0yMTU4LDcgKzIxNTQs
NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICBtX2N1cnJlbnRJ
bmRleCA9IG9sZE9mZnNldDsKICAgICBtX2V4aXRPSyA9IHRydWU7CiAgICAgCi0gICAgaWYgKHZl
cmJvc2UpIHsKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkgewog
ICAgICAgICBkYXRhTG9nKCJEb25lIGlubGluaW5nIChoYXJkKS5cbiIpOwogICAgICAgICBkYXRh
TG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgfQpAQCAtMzQ4
MywxNCArMzQ3OSwxNCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpuZWVkc0R5bmFtaWNMb29rdXAo
UmVzb2x2ZVR5cGUgdHlwZSwgT3Bjb2RlSUQgb3Bjb2RlKQogCiBHZXRCeU9mZnNldE1ldGhvZCBC
eXRlQ29kZVBhcnNlcjo6cGxhbkxvYWQoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGNv
bmRpdGlvbikKIHsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiUGxhbm5pbmcgYSBsb2FkOiAiLCBj
b25kaXRpb24sICJcbiIpOwogICAgIAogICAgIC8vIFdlIG1pZ2h0IHByb21vdGUgdGhpcyB0byBF
cXVpdmFsZW5jZSwgYW5kIGEgbGF0ZXIgREZHIHBhc3MgbWlnaHQgYWxzbyBkbyBzdWNoIHByb21v
dGlvbgogICAgIC8vIGV2ZW4gaWYgd2UgZmFpbCwgYnV0IGZvciBzaW1wbGljaXR5IHRoaXMgY2Fu
bm90IGJlIGFza2VkIHRvIGxvYWQgYW4gZXF1aXZhbGVuY2UgY29uZGl0aW9uLgogICAgIC8vIE5v
bmUgb2YgdGhlIGNsaWVudHMgb2YgdGhpcyBtZXRob2Qgd2lsbCByZXF1ZXN0IGEgbG9hZCBvZiBh
biBFcXVpdmFsZW5jZSBjb25kaXRpb24gYW55d2F5LAogICAgIC8vIGFuZCBzdXBwb3J0aW5nIGl0
IHdvdWxkIGNvbXBsaWNhdGUgdGhlIGhldXJpc3RpY3MgYmVsb3cuCi0gICAgUkVMRUFTRV9BU1NF
UlQoY29uZGl0aW9uLmtpbmQoKSA9PSBQcm9wZXJ0eUNvbmRpdGlvbjo6UHJlc2VuY2UpOworICAg
IFBBUlNFUl9BU1NFUlQoY29uZGl0aW9uLmtpbmQoKSA9PSBQcm9wZXJ0eUNvbmRpdGlvbjo6UHJl
c2VuY2UpOwogICAgIAogICAgIC8vIEhlcmUncyB0aGUgcmFua2luZyBvZiBob3cgdG8gaGFuZGxl
IHRoaXMsIGZyb20gbW9zdCBwcmVmZXJyZWQgdG8gbGVhc3QgcHJlZmVycmVkOgogICAgIC8vCkBA
IC0zNTkzLDE0ICszNTg5LDE0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmNoZWNrKGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQpCiAKIEdldEJ5T2Zmc2V0TWV0
aG9kIEJ5dGVDb2RlUGFyc2VyOjpwbGFuTG9hZChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCYgY29uZGl0aW9uU2V0KQogewotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChERkdCeXRl
Q29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJjb25kaXRpb25T
ZXQgPSAiLCBjb25kaXRpb25TZXQsICJcbiIpOwogICAgIAogICAgIEdldEJ5T2Zmc2V0TWV0aG9k
IHJlc3VsdDsKICAgICBmb3IgKGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBjb25kaXRp
b24gOiBjb25kaXRpb25TZXQpIHsKICAgICAgICAgc3dpdGNoIChjb25kaXRpb24ua2luZCgpKSB7
CiAgICAgICAgIGNhc2UgUHJvcGVydHlDb25kaXRpb246OlByZXNlbmNlOgotICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIXJlc3VsdCk7IC8vIFNob3VsZCBvbmx5IHNlZSBleGFjdGx5IG9uZSBv
ZiB0aGVzZS4KKyAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoIXJlc3VsdCk7IC8vIFNob3VsZCBv
bmx5IHNlZSBleGFjdGx5IG9uZSBvZiB0aGVzZS4KICAgICAgICAgICAgIHJlc3VsdCA9IHBsYW5M
b2FkKGNvbmRpdGlvbik7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgICAg
ICByZXR1cm4gR2V0QnlPZmZzZXRNZXRob2QoKTsKQEAgLTM3NzAsNyArMzc2Niw3IEBAIE5vZGUq
IEJ5dGVDb2RlUGFyc2VyOjpsb2FkKAogCiBOb2RlKiBCeXRlQ29kZVBhcnNlcjo6c3RvcmUoTm9k
ZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllciwgY29uc3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlh
bnQsIE5vZGUqIHZhbHVlKQogewotICAgIFJFTEVBU0VfQVNTRVJUKHZhcmlhbnQua2luZCgpID09
IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlKTsKKyAgICBQQVJTRVJfQVNTRVJUKHZhcmlhbnQua2lu
ZCgpID09IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlKTsKIAogICAgIGNoZWNrUHJlc2VuY2VMaWtl
KGJhc2UsIG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyXSwgdmFyaWFudC5vZmZzZXQo
KSwgdmFyaWFudC5zdHJ1Y3R1cmUoKSk7CiAgICAgcmV0dXJuIGhhbmRsZVB1dEJ5T2Zmc2V0KGJh
c2UsIGlkZW50aWZpZXIsIHZhcmlhbnQub2Zmc2V0KCksIHZhcmlhbnQucmVxdWlyZWRUeXBlKCks
IHZhbHVlKTsKQEAgLTQxNjksNyArNDE2NSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgLy8gb3Bwb3NlZCB0byB1c2luZyBhIHZhbHVlIHdl
IHNldCBleHBsaWNpdGx5LgogICAgIGlmIChtX2N1cnJlbnRCbG9jayA9PSBtX2dyYXBoLmJsb2Nr
KDApICYmICFpbmxpbmVDYWxsRnJhbWUoKSkgewogICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
Z3JhcGgubV9yb290VG9Bcmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBBcmd1bWVudHNWZWN0
b3IoKSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAg
ICAgICAgUEFSU0VSX0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgICAgIEFyZ3Vt
ZW50c1ZlY3RvciYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7CiAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsK
IApAQCAtNTI2Niw3ICs1MjYyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYXRjaCk7CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2N1cnJlbnRCbG9j
ay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoIW1fY3VycmVudEJsb2NrLT5z
aXplKCkpOwogCiAgICAgICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZm
ZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudElu
c3RydWN0aW9uWzNdLnUucG9pbnRlcik7CiAKQEAgLTUyOTEsOCArNTI4Nyw4IEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAg
ICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2Fs
UHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOwogICAgICAgICAgICAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wZXJhbmQuaXNBcmd1
bWVudCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRpY19j
YXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJndW1lbnQoKSkgPCBhcmd1bWVudFByZWRpY3Rpb25z
LnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKG9wZXJhbmQu
aXNBcmd1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KG9wZXJhbmQudG9Bcmd1bWVudCgpKSA8IGFyZ3VtZW50UHJlZGlj
dGlvbnMuc2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uRW5h
YmxlZCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZW5Bcmd1bWVudHMuYWRkKG9w
ZXJhbmQudG9Bcmd1bWVudCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50UHJl
ZGljdGlvbnNbb3BlcmFuZC50b0FyZ3VtZW50KCldID0gcHJlZGljdGlvbjsKQEAgLTUzMDEsNyAr
NTI5Nyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQp
CiAKICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgewogICAgICAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBtX251bUFy
Z3VtZW50czsgKythcmd1bWVudCkKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHNlZW5Bcmd1bWVudHMuY29udGFpbnMoYXJndW1lbnQpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFBBUlNFUl9BU1NFUlQoc2VlbkFyZ3VtZW50cy5jb250YWlucyhhcmd1bWVudCkpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApAQCAtNTM0Miw3ICs1MzM4LDcgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKIAogICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5tX3Jvb3RU
b0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIEFyZ3VtZW50c1ZlY3RvcigpKTsKLSAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgICAg
ICAgICAgICAgUEFSU0VSX0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgICAgICAg
ICAgICAgQXJndW1lbnRzVmVjdG9yJiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzLnJlc2l6
ZShtX251bUFyZ3VtZW50cyk7CiAKQEAgLTU0ODcsOCArNTQ4Myw4IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBjYXNlIEdsb2Jh
bExleGljYWxWYXI6CiAgICAgICAgICAgICBjYXNlIEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzOiB7CiAgICAgICAgICAgICAgICAgSlNTY29wZSogY29uc3RhbnRTY29wZSA9
IEpTU2NvcGU6OmNvbnN0YW50U2NvcGVGb3JDb2RlQmxvY2socmVzb2x2ZVR5cGUsIG1faW5saW5l
U3RhY2tUb3AtPm1fY29kZUJsb2NrKTsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChj
b25zdGFudFNjb3BlKTsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2Fz
dDxKU1Njb3BlKj4oY3VycmVudEluc3RydWN0aW9uWzZdLnUucG9pbnRlcikgPT0gY29uc3RhbnRT
Y29wZSk7CisgICAgICAgICAgICAgICAgUEFSU0VSX0FTU0VSVChjb25zdGFudFNjb3BlKTsKKyAg
ICAgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKHN0YXRpY19jYXN0PEpTU2NvcGUqPihjdXJyZW50
SW5zdHJ1Y3Rpb25bNl0udS5wb2ludGVyKSA9PSBjb25zdGFudFNjb3BlKTsKICAgICAgICAgICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRzdCksIHdlYWtKU0NvbnN0YW50KGNvbnN0YW50U2Nv
cGUpKTsKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdldChWaXJ0dWFsUmVn
aXN0ZXIoc2NvcGUpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01ODI5LDcgKzU4MjUs
NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAg
ICAgICAgICAgLy8gQmFzZWxpbmUtPkRGRyBPU1IganVtcHMgYmV0d2VlbiBsb29wIGhpbnRzLiBU
aGUgREZHIGFzc3VtZXMgdGhhdCBCYXNlbGluZS0+REZHCiAgICAgICAgICAgICAvLyBPU1IgY2Fu
IG9ubHkgaGFwcGVuIGF0IGJhc2ljIGJsb2NrIGJvdW5kYXJpZXMuIEFzc2VydCB0aGF0IHRoZXNl
IHR3byBzdGF0ZW1lbnRzCiAgICAgICAgICAgICAvLyBhcmUgY29tcGF0aWJsZS4KLSAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKG1fY3VycmVudEluZGV4ID09IGJsb2NrQmVnaW4pOworICAgICAg
ICAgICAgUEFSU0VSX0FTU0VSVChtX2N1cnJlbnRJbmRleCA9PSBibG9ja0JlZ2luKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgLy8gV2UgbmV2ZXIgZG8gT1NSIGludG8gYW4gaW5saW5lZCBj
b2RlIGJsb2NrLiBUaGF0IGNvdWxkIG5vdCBoYXBwZW4sIHNpbmNlIE9TUgogICAgICAgICAgICAg
Ly8gbG9va3MgdXAgdGhlIGNvZGUgYmxvY2sgdGhhdCBpcyB0aGUgcmVwbGFjZW1lbnQgZm9yIHRo
ZSBiYXNlbGluZSBKSVQgY29kZQpAQCAtNjE3OSw3ICs2MTc1LDcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6bGlua0Jsb2NrKEJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8QmFzaWNCbG9jayo+JiBw
b3NzaWJsZVQKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIGlmICh2ZXJib3NlKQor
ICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRh
TG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIoYmxvY2spLCAiIGFzIGxpbmtlZCAoYWN0dWFsbHkg
ZGlkIGxpbmtpbmcpXG4iKTsKICAgICBibG9jay0+ZGlkTGluaygpOwogfQpAQCAtNjE4NywxMCAr
NjE4MywxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2soQmFzaWNCbG9jayogYmxv
Y2ssIFZlY3RvcjxCYXNpY0Jsb2NrKj4mIHBvc3NpYmxlVAogdm9pZCBCeXRlQ29kZVBhcnNlcjo6
bGlua0Jsb2NrcyhWZWN0b3I8VW5saW5rZWRCbG9jaz4mIHVubGlua2VkQmxvY2tzLCBWZWN0b3I8
QmFzaWNCbG9jayo+JiBwb3NzaWJsZVRhcmdldHMpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB1bmxpbmtlZEJsb2Nrcy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICBkYXRhTG9nKCJBdHRlbXB0aW5nIHRvIGxpbmsgIiwgUmF3UG9pbnRlcih1bmxpbmtlZEJs
b2Nrc1tpXS5tX2Jsb2NrKSwgIlxuIik7CiAgICAgICAgIGlmICh1bmxpbmtlZEJsb2Nrc1tpXS5t
X25lZWRzTm9ybWFsTGlua2luZykgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgRG9lcyBuZWVkIG5vcm1hbCBsaW5raW5nLlxuIik7CiAgICAgICAg
ICAgICBsaW5rQmxvY2sodW5saW5rZWRCbG9ja3NbaV0ubV9ibG9jaywgcG9zc2libGVUYXJnZXRz
KTsKICAgICAgICAgICAgIHVubGlua2VkQmxvY2tzW2ldLm1fbmVlZHNOb3JtYWxMaW5raW5nID0g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCmluZGV4IDU3
ZWM0YTgwZTRiMjlkMmNiZDQ5NmVlYWMzOGQxYjI5MzliODYxNzMuLmViZDFiOGVmZWY3YzI1MzBl
MjhmOTI3MTdjZjcwZGFjMjcwZWQzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ1NFUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q1NFUGhhc2UuY3BwCkBAIC00OCw3ICs0OCw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKIAogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1l
c3BhY2UgREZHQ1NFUGhhc2VJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7Cit9CiAKIGNsYXNzIEltcHVyZURhdGFTbG90IHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShJbXB1cmVEYXRhU2xvdCk7CkBAIC02MjcsNyArNjI5LDcgQEAgcHVibGljOgogICAgIAog
ICAgIGJvb2wgaXRlcmF0ZSgpCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
aWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJQ
ZXJmb3JtaW5nIGl0ZXJhdGlvbi5cbiIpOwogICAgICAgICAKICAgICAgICAgbV9jaGFuZ2VkID0g
ZmFsc2U7CkBAIC02MzgsMTMgKzY0MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2ltcHVy
ZURhdGEgPSAmbV9pbXB1cmVEYXRhTWFwW21fYmxvY2tdOwogICAgICAgICAgICAgbV93cml0ZXNT
b0Zhci5jbGVhcigpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgIGlmIChERkdDU0VQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2coIlByb2Nlc3NpbmcgYmxvY2sgIiwgKm1fYmxvY2ssICI6XG4iKTsKIAogICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXggPSAwOyBub2RlSW5kZXggPCBtX2Jsb2Nr
LT5zaXplKCk7ICsrbm9kZUluZGV4KSB7CiAgICAgICAgICAgICAgICAgbV9ub2RlSW5kZXggPSBu
b2RlSW5kZXg7CiAgICAgICAgICAgICAgICAgbV9ub2RlID0gbV9ibG9jay0+YXQobm9kZUluZGV4
KTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZH
Q1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
ICBMb29raW5nIGF0IG5vZGUgIiwgbV9ub2RlLCAiOlxuIik7CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5wZXJmb3JtU3Vic3RpdHV0aW9uKG1fbm9kZSk7CkBAIC03
MDcsNyArNzA5LDcgQEAgcHVibGljOgogICAgICAgICAvLyBhIGdsb2JhbCBzZWFyY2guCiAgICAg
ICAgIExhenlOb2RlIG1hdGNoID0gbV9pbXB1cmVEYXRhLT5hdmFpbGFibGVBdFRhaWwuZ2V0KGxv
Y2F0aW9uKTsKICAgICAgICAgaWYgKCEhbWF0Y2gpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiICAgICAgRm91bmQgbG9jYWwgbWF0Y2g6ICIsIG1hdGNoLCAiXG4i
KTsKICAgICAgICAgICAgIHJldHVybiBtYXRjaDsKICAgICAgICAgfQpAQCAtNzE1LDcgKzcxNyw3
IEBAIHB1YmxpYzoKICAgICAgICAgLy8gSWYgaXQncyBub3QgYXZhaWxhYmxlIGF0IHRoaXMgcG9p
bnQgaW4gdGhlIGJsb2NrLCBhbmQgYXQgc29tZSBwcmlvciBwb2ludCBpbiB0aGUgYmxvY2sKICAg
ICAgICAgLy8gd2UgaGF2ZSBjbG9iYmVyZWQgdGhpcyBoZWFwIGxvY2F0aW9uLCB0aGVuIHRoZXJl
IGlzIG5vIHBvaW50IGluIGRvaW5nIGEgZ2xvYmFsIHNlYXJjaC4KICAgICAgICAgaWYgKG1fd3Jp
dGVzU29GYXIub3ZlcmxhcHMobG9jYXRpb24uaGVhcCgpKSkgewotICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBOb3QgbG9va2luZyBnbG9iYWxseSBiZWNhdXNl
IG9mIGxvY2FsIGNsb2JiZXI6ICIsIG1fd3JpdGVzU29GYXIsICJcbiIpOwogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KQEAgLTc3Miw3ICs3NzQsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAg
ICAgICAgICBzZWVuTGlzdC5hcHBlbmQoYmxvY2spOwogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdDU0VQaGFzZUludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFNlYXJjaGluZyBpbiBibG9jayAi
LCAqYmxvY2ssICJcbiIpOwogICAgICAgICAgICAgSW1wdXJlQmxvY2tEYXRhJiBkYXRhID0gbV9p
bXB1cmVEYXRhTWFwW2Jsb2NrXTsKICAgICAgICAgICAgIApAQCAtNzgwLDEyICs3ODIsMTIgQEAg
cHVibGljOgogICAgICAgICAgICAgLy8gdGhleSBjYW1lICphZnRlciogb3VyIHBvc2l0aW9uIGlu
IHRoZSBibG9jay4gQ2xlYXJseSwgd2hpbGUgb3VyIGJsb2NrIGRvbWluYXRlcwogICAgICAgICAg
ICAgLy8gaXRzZWxmLCB0aGUgdGhpbmdzIGluIHRoZSBibG9jayBhZnRlciB1cyBkb24ndCBkb21p
bmF0ZSB1cy4KICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+c3RyaWN0
bHlEb21pbmF0ZXMoYmxvY2ssIG1fYmxvY2spKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgSXQgc3RyaWN0bHkgZG9taW5hdGVz
LlxuIik7CiAgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIGRhdGEu
ZGlkVmlzaXQpOwogICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCAh
bWF0Y2gpOwogICAgICAgICAgICAgICAgIG1hdGNoID0gZGF0YS5hdmFpbGFibGVBdFRhaWwuZ2V0
KGxvY2F0aW9uKTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAg
ICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiICAgICAgICBBdmFpbGFiaWxpdHk6ICIsIG1hdGNoLCAiXG4iKTsKICAgICAgICAg
ICAgICAgICBpZiAoISFtYXRjaCkgewogICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBleGFt
aW5lIHRoZSBwcmVkZWNlc3NvcnMgb2YgYSBtYXRjaC4gQXQgdGhpcyBwb2ludCB3ZSBqdXN0IHdh
bnQgdG8KQEAgLTc5NSwxMCArNzk3LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiICAgICAgICBEZWFsaW5nIHdpdGggd3JpdGUgc2V0ICIsIGRhdGEud3JpdGVz
LCAiXG4iKTsKICAgICAgICAgICAgIGlmIChkYXRhLndyaXRlcy5vdmVybGFwcyhsb2NhdGlvbi5o
ZWFwKCkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAg
aWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2coIiAgICAgICAgQ2xvYmJlcmVkLlxuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgICAgICB9CkBAIC04MzAsMTYgKzgzMiwxNiBAQCBwdWJsaWM6CiAgICAg
CiAgICAgdm9pZCBkZWYoSGVhcExvY2F0aW9uIGxvY2F0aW9uLCBMYXp5Tm9kZSB2YWx1ZSkKICAg
ICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBHb3QgaGVhcCBsb2NhdGlvbiBk
ZWY6ICIsIGxvY2F0aW9uLCAiIC0+ICIsIHZhbHVlLCAiXG4iKTsKICAgICAgICAgCiAgICAgICAg
IExhenlOb2RlIG1hdGNoID0gZmluZFJlcGxhY2VtZW50KGxvY2F0aW9uKTsKICAgICAgICAgCi0g
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIEdvdCBtYXRjaDogIiwgbWF0Y2gsICJc
biIpOwogICAgICAgICAKICAgICAgICAgaWYgKCFtYXRjaCkgewotICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBBZGRpbmcgYXQtdGFpbCBtYXBwaW5nOiAiLCBs
b2NhdGlvbiwgIiAtPiAiLCB2YWx1ZSwgIlxuIik7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IG1faW1wdXJlRGF0YS0+YXZhaWxhYmxlQXRUYWlsLmFkZChsb2NhdGlvbiwgdmFsdWUpOwogICAg
ICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsICFyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAppbmRleCBi
MGM1NWJlOTlhMjA1MzE4ODFlMTQ2MmJlODcxZGU4YTBkYjcxZjIwLi5iNDljYjRjZDk2MjM0YTky
NzFjY2FiODJjNGU2NzhiYTkzZDc4MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcApAQCAtMzcsNyArMzcsOSBAQAog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKK25hbWVzcGFjZSBERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZUludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxz
ZTsKK30KIAogSW5QbGFjZUFic3RyYWN0U3RhdGU6OkluUGxhY2VBYnN0cmFjdFN0YXRlKEdyYXBo
JiBncmFwaCkKICAgICA6IG1fZ3JhcGgoZ3JhcGgpCkBAIC0yNzYsNyArMjc4LDcgQEAgdm9pZCBJ
blBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VTdGF0ZUF0VGFpbChBYnN0cmFjdFZhbHVlJiBkZXN0
aW5hdGlvbiwgQWJzdHJhY3QKIAogYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UoQmFz
aWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pCiB7Ci0gICAgaWYgKHZlcmJvc2UpCisgICAg
aWYgKERGR0luUGxhY2VBYnN0cmFjdFN0YXRlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRh
dGFMb2coIiAgIE1lcmdpbmcgZnJvbSAiLCBwb2ludGVyRHVtcChmcm9tKSwgIiB0byAiLCBwb2lu
dGVyRHVtcCh0byksICJcbiIpOwogICAgIEFTU0VSVChmcm9tLT52YXJpYWJsZXNBdFRhaWwubnVt
YmVyT2ZBcmd1bWVudHMoKSA9PSB0by0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRz
KCkpOwogICAgIEFTU0VSVChmcm9tLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKSA9
PSB0by0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCkpOwpAQCAtMzA3LDcgKzMwOSw3
IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKEJhc2ljQmxvY2sqIGZyb20sIEJh
c2ljQmxvY2sqIHRvKQogCiAgICAgICAgIGZvciAoTm9kZUFic3RyYWN0VmFsdWVQYWlyJiBlbnRy
eSA6IHRvLT5zc2EtPnZhbHVlc0F0SGVhZCkgewogICAgICAgICAgICAgTm9kZUZsb3dQcm9qZWN0
aW9uIG5vZGUgPSBlbnRyeS5ub2RlOwotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICBpZiAoREZHSW5QbGFjZUFic3RyYWN0U3RhdGVJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgICBNZXJnaW5nIGZvciAiLCBub2RlLCAiOiBmcm9tICIs
IGZvck5vZGUobm9kZSksICIgdG8gIiwgZW50cnkudmFsdWUsICJcbiIpOwogI2lmbmRlZiBOREVC
VUcKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlQ291bnRJbkZyb21CbG9jayA9IDA7CkBAIC0z
MjIsNyArMzI0LDcgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbG9j
ayogZnJvbSwgQmFzaWNCbG9jayogdG8pCiAKICAgICAgICAgICAgIGNoYW5nZWQgfD0gZW50cnku
dmFsdWUubWVyZ2UoZm9yTm9kZShub2RlKSk7CiAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgaWYgKERGR0luUGxhY2VBYnN0cmFjdFN0YXRlSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICAgUmVzdWx0OiAiLCBlbnRyeS52YWx1
ZSwgIlxuIik7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC0zMzYsNyArMzM4LDcgQEAg
Ym9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNC
bG9jayogdG8pCiAgICAgaWYgKCF0by0+Y2ZhSGFzVmlzaXRlZCkKICAgICAgICAgY2hhbmdlZCA9
IHRydWU7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0luUGxhY2VBYnN0cmFj
dFN0YXRlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgICAgIFdpbGwgcmV2
aXNpdDogIiwgY2hhbmdlZCwgIlxuIik7CiAgICAgdG8tPmNmYVNob3VsZFJldmlzaXQgfD0gY2hh
bmdlZDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50
ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAKaW5kZXggNWQxY2JjNzZjNGVlMjUyYTMz
NzI5ZmJlMTg1ZDk5MmIyYWZlZWNkYi4uOThlMGY2ZmRmMjg4MTQ3YTgxZTljYjdmOWYxYjg5OTY1
NmZkOTFlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2Vy
Q2hlY2tDb21iaW5pbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAKQEAgLTQxLDcgKzQxLDkgQEAgbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3BhY2UgewogCituYW1lc3BhY2UgREZH
SW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2VJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2
ZXJib3NlID0gZmFsc2U7Cit9CiAKIGVudW0gUmFuZ2VLaW5kIHsKICAgICBJbnZhbGlkUmFuZ2VL
aW5kLApAQCAtMjAzLDEzICsyMDUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIGZv
ciAoYXV0byogbm9kZSA6ICpibG9jaykgewogICAgICAgICAgICAgUmFuZ2VLZXlBbmRBZGRlbmQg
ZGF0YSA9IHJhbmdlS2V5QW5kQWRkZW5kKG5vZGUpOwotICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICBpZiAoREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2VJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJGb3IgIiwgbm9kZSwgIjogIiwgZGF0
YSwgIlxuIik7CiAgICAgICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJhbmdlJiByYW5nZSA9IG1fbWFwW2RhdGEu
bV9rZXldOwotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHSW50
ZWdlckNoZWNrQ29tYmluaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCIgICAgUmFuZ2U6ICIsIHJhbmdlLCAiXG4iKTsKICAgICAgICAgICAgIGlmIChy
YW5nZS5tX2NvdW50KSB7CiAgICAgICAgICAgICAgICAgaWYgKGRhdGEubV9hZGRlbmQgPiByYW5n
ZS5tX21heEJvdW5kKSB7CkBAIC0yMjYsNyArMjI4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICByYW5nZS5tX21heE9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHJhbmdlLm1fY291bnQrKzsKLSAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgaWYgKERGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIE5ldyByYW5nZTogIiwg
cmFuZ2UsICJcbiIpOwogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNl
LmNwcAppbmRleCAwN2I2YWMzNDgyZmQwZTdmMzJlZjg0ZWY4MmIzMTE1MTI3N2JkMjEyLi40YTM4
MzFlYjE2MGRjNDk3NjRlODczOTBlODhhZjVhYTk1ZTg2ZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlv
blBoYXNlLmNwcApAQCAtNDIsNyArNDIsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAKIG5hbWVzcGFjZSB7CiAKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNw
YWNlIERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWwgeworc3RhdGljIGNv
bnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogY29uc3QgdW5zaWduZWQgZ2l2ZVVwVGhyZXNo
b2xkID0gNTA7CiAKIGludDY0X3QgY2xhbXBlZFN1bUltcGwoKSB7IHJldHVybiAwOyB9CkBAIC0x
MDE5LDcgKzEwMjEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2luc2VydGlvblNldC5leGVj
dXRlKG1fZ3JhcGguYmxvY2soMCkpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAo
dmVyYm9zZSkgeworICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJ
bnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIGlu
dGVnZXIgcmFuZ2Ugb3B0aW1pemF0aW9uOlxuIik7CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAo
KTsKICAgICAgICAgfQpAQCAtMTExMCw3ICsxMTEyLDcgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgIG1fcmVsYXRpb25zaGlwcyA9IG1fcmVsYXRpb25zaGlwc0F0SGVhZFtibG9ja107CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIG5vZGUgOiAqYmxvY2spIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChE
RkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQW5hbHlzaXM6IGF0ICIsIG5vZGUsICI6ICIsIGxp
c3REdW1wKHNvcnRlZFJlbGF0aW9uc2hpcHMoKSksICJcbiIpOwogICAgICAgICAgICAgICAgICAg
ICBleGVjdXRlTm9kZShub2RlKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xMTk1LDExICsxMTk3
LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aW9uc2hpcE1hcCBm
b3JUcnVlID0gbV9yZWxhdGlvbnNoaXBzOwogICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRp
b25zaGlwTWFwIGZvckZhbHNlID0gbV9yZWxhdGlvbnNoaXBzOwogICAgICAgICAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZUludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkRlYWxpbmcg
d2l0aCB0cnVlOlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZWxhdGlvbnNoaXAo
Zm9yVHJ1ZSwgcmVsYXRpb25zaGlwRm9yVHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoUmVsYXRpb25zaGlwIHJlbGF0aW9uc2hpcEZvckZhbHNlID0gcmVsYXRpb25zaGlwRm9yVHJ1
ZS5pbnZlcnNlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0
aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiRGVhbGluZyB3aXRoIGZhbHNlOlxuIik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0UmVsYXRpb25zaGlwKGZvckZhbHNlLCByZWxhdGlvbnNoaXBGb3JGYWxzZSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0xMjIzLDcgKzEyMjUsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBtX3JlbGF0aW9uc2hpcHMgPSBtX3JlbGF0aW9uc2hpcHNBdEhlYWRbYmxv
Y2tdOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXggPSAwOyBub2RlSW5kZXgg
PCBibG9jay0+c2l6ZSgpOyArK25vZGVJbmRleCkgewogICAgICAgICAgICAgICAgIE5vZGUqIG5v
ZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiVHJhbnNmb3JtYXRp
b246IGF0ICIsIG5vZGUsICI6ICIsIGxpc3REdW1wKHNvcnRlZFJlbGF0aW9uc2hpcHMoKSksICJc
biIpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIC8vIFRoaXMgZW5kcyB1cCBi
ZWluZyBwcmV0dHkgYXdrd2FyZCB0byB3cml0ZSBiZWNhdXNlIHdlIG5lZWQgdG8gZGVjaWRlIGlm
IHdlCkBAIC0xMjg3LDE0ICsxMjg5LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAg
ICAgIG1heFZhbHVlID0gc3RkOjptaW4obWF4VmFsdWUsIHJlbGF0aW9uc2hpcC5tYXhWYWx1ZU9m
TGVmdCgpKTsKICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1p
emF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2coIiAgICBtaW5WYWx1ZSA9ICIsIG1pblZhbHVlLCAiLCBtYXhWYWx1ZSA9ICIsIG1heFZh
bHVlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlm
IChzdW1PdmVyZmxvd3M8aW50PihtaW5WYWx1ZSwgbm9kZS0+Y2hpbGQyKCktPmFzSW50MzIoKSkg
fHwKICAgICAgICAgICAgICAgICAgICAgICAgIHN1bU92ZXJmbG93czxpbnQ+KG1heFZhbHVlLCBu
b2RlLT5jaGlsZDIoKS0+YXNJbnQzMigpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogCi0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAg
ICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBJdCdzIGluIGJvdW5kcy5cbiIp
OwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZU5vZGUo
YmxvY2stPmF0KG5vZGVJbmRleCkpOwpAQCAtMTU0OCw3ICsxNTUwLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgaWYgKCFyZWxhdGlvbnNoaXApCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAot
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXph
dGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgU2V0
dGluZzogIiwgcmVsYXRpb25zaGlwLCAiICh0dGwgPSAiLCB0aW1lVG9MaXZlLCAiKVxuIik7CiAK
ICAgICAgICAgYXV0byByZXN1bHQgPSByZWxhdGlvbnNoaXBNYXAuYWRkKApAQCAtMTYwMiw3ICsx
NjA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgaWYgKG90aGVyUmVsYXRpb25z
aGlwLnZhZ3VlbmVzcygpIDwgcmVsYXRpb25zaGlwLnZhZ3VlbmVzcygpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAmJiBvdGhlclJlbGF0aW9uc2hpcC5yaWdodCgpLT5pc0ludDMyQ29uc3RhbnQo
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpb25zaGlwIG5ld1JlbGF0aW9uc2hp
cCA9IHJlbGF0aW9uc2hpcC5maWx0ZXJDb25zdGFudChvdGhlclJlbGF0aW9uc2hpcCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSAmJiBuZXdSZWxhdGlvbnNoaXAgIT0gcmVs
YXRpb25zaGlwKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR0ludGVnZXJSYW5nZU9w
dGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UgJiYgbmV3UmVsYXRpb25zaGlwICE9IHJl
bGF0aW9uc2hpcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBS
ZWZpbmVkIHRvOiAiLCBuZXdSZWxhdGlvbnNoaXAsICIgYmFzZWQgb24gIiwgb3RoZXJSZWxhdGlv
bnNoaXAsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwID0gbmV3
UmVsYXRpb25zaGlwOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNjE2LDcgKzE2MTgsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXJSZWxhdGlvbnNoaXAudmFn
dWVuZXNzKCkgPiByZWxhdGlvbnNoaXAudmFndWVuZXNzKCkKICAgICAgICAgICAgICAgICAgICAg
ICAgICYmIG90aGVyUmVsYXRpb25zaGlwLnJpZ2h0KCktPmlzSW50MzJDb25zdGFudCgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGlvbnNoaXAgbmV3UmVsYXRpb25zaGlwID0gb3Ro
ZXJSZWxhdGlvbnNoaXAuZmlsdGVyQ29uc3RhbnQocmVsYXRpb25zaGlwKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlICYmIG5ld1JlbGF0aW9uc2hpcCAhPSBvdGhlclJlbGF0
aW9uc2hpcCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRp
bWl6YXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlICYmIG5ld1JlbGF0aW9uc2hpcCAhPSBvdGhl
clJlbGF0aW9uc2hpcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
ICBSZWZpbmVkICIsIG90aGVyUmVsYXRpb25zaGlwLCAiIHRvOiAiLCBuZXdSZWxhdGlvbnNoaXAs
ICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJSZWxhdGlvbnNoaXAgPSBuZXdS
ZWxhdGlvbnNoaXA7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTE2MzksNyArMTY0MSw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAvLyBAeCA9PSBAYyBhbmQgQHggIT0gQGQsIHdoZXJlIEBk
ID4gQGMsIHRoZW4gd2Ugd2FudCB0byB0dXJuIEB4ICE9IEBkIGludG8gQHggPCBAZC4KICAgICAg
ICAgICAgIAogICAgICAgICAgICAgaWYgKHRpbWVUb0xpdmUgJiYgb3RoZXJSZWxhdGlvbnNoaXAu
a2luZCgpID09IFJlbGF0aW9uc2hpcDo6RXF1YWwpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhh
c2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAg
Q29uc2lkZXJpbmc6ICIsIG90aGVyUmVsYXRpb25zaGlwLCAiXG4iKTsKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlOgpAQCAtMTY3NSw3ICsxNjc3LDcgQEAgcHJp
dmF0ZToKICAgICAKICAgICBib29sIG1lcmdlVG8oUmVsYXRpb25zaGlwTWFwJiByZWxhdGlvbnNo
aXBNYXAsIEJhc2ljQmxvY2sqIHRhcmdldCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKSB7
CisgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZUludGVybmFsOjp2
ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJNZXJnaW5nIHRvICIsIHBvaW50ZXJEdW1w
KHRhcmdldCksICI6XG4iKTsKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBJbmNvbWluZzogIiwg
bGlzdER1bXAoc29ydGVkUmVsYXRpb25zaGlwcyhyZWxhdGlvbnNoaXBNYXApKSwgIlxuIik7CiAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgQXQgaGVhZDogIiwgbGlzdER1bXAoc29ydGVkUmVsYXRp
b25zaGlwcyhtX3JlbGF0aW9uc2hpcHNBdEhlYWRbdGFyZ2V0XSkpLCAiXG4iKTsKQEAgLTE2OTcs
NyArMTY5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZm9yIChSZWxhdGlvbnNoaXAg
cmVsYXRpb25zaGlwIDogZW50cnkudmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KHJlbGF0aW9uc2hpcC5sZWZ0KCkgPT0gZW50cnkua2V5KTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKGlzTGl2ZShyZWxhdGlvbnNoaXAucmlnaHQoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR0ludGVnZXJS
YW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiICBQcm9wYWdhdGluZyAiLCByZWxhdGlvbnNoaXAsICJcbiIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChyZWxhdGlvbnNoaXApOwog
ICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNzM0LDEyICsxNzM2LDEyIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBWZWN0b3I8UmVsYXRpb25zaGlwPiBtZXJnZWRSZWxhdGlvbnNoaXBzOwogICAg
ICAgICAgICAgZm9yIChSZWxhdGlvbnNoaXAgdGFyZ2V0UmVsYXRpb25zaGlwIDogZW50cnkudmFs
dWUpIHsKICAgICAgICAgICAgICAgICBmb3IgKFJlbGF0aW9uc2hpcCBzb3VyY2VSZWxhdGlvbnNo
aXAgOiBpdGVyLT52YWx1ZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgIE1lcmdp
bmcgIiwgdGFyZ2V0UmVsYXRpb25zaGlwLCAiIGFuZCAiLCBzb3VyY2VSZWxhdGlvbnNoaXAsICI6
XG4iKTsKICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UmVsYXRpb25zaGlwLm1lcmdlKAogICAg
ICAgICAgICAgICAgICAgICAgICAgc291cmNlUmVsYXRpb25zaGlwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgWyZdIChSZWxhdGlvbnNoaXAgbmV3UmVsYXRpb25zaGlwKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBHb3QgIiwgbmV3
UmVsYXRpb25zaGlwLCAiXG4iKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChu
ZXdSZWxhdGlvbnNoaXAucmlnaHQoKS0+aXNJbnQzMkNvbnN0YW50KCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTW92SGludFJlbW92YWxQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01vdkhpbnRSZW1vdmFsUGhhc2UuY3BwCmluZGV4
IDlmMzQ0YjM3ZGNkODdmYzE0YzBhMTJkZTRmMTA3MDhiNmQ3NDhmODYuLjFhZWQyYzE4NTZlMmJm
NjJjZWY3YTNjNDZkYTI0MjE5MzJmNWY3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTW92SGludFJlbW92YWxQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdNb3ZIaW50UmVtb3ZhbFBoYXNlLmNwcApAQCAtNDIsNyArNDIsOSBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVy
Ym9zZSA9IGZhbHNlOworbmFtZXNwYWNlIERGR01vdkhpbnRSZW1vdmFsUGhhc2VJbnRlcm5hbCB7
CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIE1vdkhpbnRS
ZW1vdmFsUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogcHVibGljOgpAQCAtNTUsNyArNTcsNyBAQCBw
dWJsaWM6CiAgICAgCiAgICAgYm9vbCBydW4oKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2Up
IHsKKyAgICAgICAgaWYgKERGR01vdkhpbnRSZW1vdmFsUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkg
ewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIE1vdkhpbnQgcmVtb3ZhbDpcbiIp
OwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KQEAgLTY5LDcgKzcxLDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZUJsb2NrKEJhc2ljQmxvY2sqIGJs
b2NrKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdNb3ZIaW50
UmVtb3ZhbFBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJIYW5k
aW5nIGJsb2NrICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIlxuIik7CiAgICAgICAgIAogICAgICAg
ICAvLyBBIE1vdkhpbnQgaXMgdW5uZWNlc3NhcnkgaWYgdGhlIGxvY2FsIGRpZXMgYmVmb3JlIGl0
IGlzIHVzZWQuIFdlIGFuc3dlciB0aGlzIHF1ZXN0aW9uIGJ5CkBAIC04Nyw3ICs4OSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgbV9zdGF0ZS5vcGVyYW5kKHJlZykgPSBjdXJyZW50RXBv
Y2g7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICBpZiAoREZHTW92SGludFJlbW92YWxQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgZGF0YUxvZygiICAgIExvY2FsczogIiwgbV9zdGF0ZSwgIlxuIik7CiAgICAgICAgIAog
ICAgICAgICAvLyBBc3N1bWUgdGhhdCBibG9ja3MgYWZ0ZXIgdXMgZXhpdC4KQEAgLTk4LDcgKzEw
MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5vcCgp
ID09IE1vdkhpbnQpIHsKICAgICAgICAgICAgICAgICBFcG9jaCBsb2NhbEVwb2NoID0gbV9zdGF0
ZS5vcGVyYW5kKG5vZGUtPnVubGlua2VkTG9jYWwoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR01vdkhpbnRSZW1vdmFsUGhhc2VJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEF0ICIsIG5vZGUs
ICI6IGN1cnJlbnQgPSAiLCBjdXJyZW50RXBvY2gsICIsIGxvY2FsID0gIiwgbG9jYWxFcG9jaCwg
IlxuIik7CiAgICAgICAgICAgICAgICAgaWYgKCFsb2NhbEVwb2NoIHx8IGxvY2FsRXBvY2ggPT0g
Y3VycmVudEVwb2NoKSB7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVs
dEZsYWdzKFpvbWJpZUhpbnQpOwpAQCAtMTIwLDcgKzEyMiw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoISFtX3N0YXRlLm9wZXJhbmQocmVnKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKERGR01vdkhpbnRSZW1vdmFsUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgS2lsbGVkIG9wZXJhbmQgYXQgIiwgbm9kZSwg
IjogIiwgcmVnLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUub3BlcmFu
ZChyZWcpID0gY3VycmVudEVwb2NoOwogICAgICAgICAgICAgICAgICAgICB9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQ
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25T
aW5raW5nUGhhc2UuY3BwCmluZGV4IDdhOWM1MTU2N2IzNDdmZGQzYzhjM2NkOTFiZjA0Yjg5ZGY4
MjI1MjguLjNmZGE3ZDQwYjA4NmJkMTljM2MyOGIwYTYwZGFkMTU3NWVmNjBjMzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQ
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0
aW9uU2lua2luZ1BoYXNlLmNwcApAQCAtNDgsNyArNDgsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFt
ZXNwYWNlIERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2VJbnRlcm5hbCB7CitzdGF0aWMg
Y29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIC8vIEluIG9yZGVyIHRvIHNpbmsgb2Jq
ZWN0IGN5Y2xlcywgd2UgdXNlIGEgcG9pbnRzLXRvIGFuYWx5c2lzIGNvdXBsZWQKIC8vIHdpdGgg
YW4gZXNjYXBlIGFuYWx5c2lzLiBUaGlzIGFuYWx5c2lzIGlzIGFjdHVhbGx5IHNpbWlsYXIgdG8g
YW4KQEAgLTcxNyw3ICs3MTksNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghcGVyZm9ybVNpbmtp
bmcoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAodmVyYm9zZSkg
eworICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2
ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJHcmFwaCBhZnRlciBlbGltaW5hdGlvbjpc
biIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KQEAgLTc0Miw3ICs3
NDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgZ3JhcGhCZWZvcmVTaW5raW5nID0gb3V0LnRv
Q1N0cmluZygpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAg
aWYgKERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewog
ICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIGVsaW1pbmF0aW9uOlxuIik7CiAgICAg
ICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQpAQCAtNzUyLDcgKzc1NCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGlmICghZGV0ZXJtaW5lU2lua0NhbmRpZGF0ZXMoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAo
REZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAg
ICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxP
cmRlcigpKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygiSGVhcCBhdCBoZWFkIG9mICIsICpi
bG9jaywgIjogXG4iLCBtX2hlYXBBdEhlYWRbYmxvY2tdKTsKICAgICAgICAgICAgICAgICBkYXRh
TG9nKCJIZWFwIGF0IHRhaWwgb2YgIiwgKmJsb2NrLCAiOiBcbiIsIG1faGVhcEF0VGFpbFtibG9j
a10pOwpAQCAtNzczLDcgKzc3NSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgYm9vbCBjaGFuZ2Vk
OwogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlm
IChERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiRG9pbmcgaXRlcmF0aW9uIG9mIGVzY2FwZSBhbmFseXNpcy5c
biIpOwogICAgICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwogCkBAIC0xMTk4LDcgKzEyMDAsNyBA
QCBwcml2YXRlOgogICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICByZXR1cm4gaGFzVW5lc2NhcGVkUmVhZHM7CiAKLSAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJDYW5kaWRhdGVzOiAiLCBsaXN0RHVtcChtX3Np
bmtDYW5kaWRhdGVzKSwgIlxuIik7CiAKICAgICAgICAgLy8gQ3JlYXRlIHRoZSBtYXRlcmlhbGl6
YXRpb24gbm9kZXMKQEAgLTE3NjUsNyArMTc2Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAg
ICAgICAgaWYgKERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9z
ZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvY2FsIG1hcHBpbmcgYXQgIiwgcG9pbnRl
ckR1bXAoYmxvY2spLCAiOiAiLCBtYXBEdW1wKG1fbG9jYWxNYXBwaW5nKSwgIlxuIik7CiAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiTG9jYWwgbWF0ZXJpYWxpemF0aW9ucyBhdCAiLCBwb2ludGVy
RHVtcChibG9jayksICI6ICIsIG1hcER1bXAobV9lc2NhcGVlVG9NYXRlcmlhbGl6YXRpb24pLCAi
XG4iKTsKICAgICAgICAgICAgIH0KQEAgLTE3ODEsNyArMTc4Myw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgIG1fbG9jYWxNYXBwaW5nLnNldChsb2NhdGlvbiwgbV9ib3R0b20pOwog
CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKG5vZGUp
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiRm9yIHNpbmsgY2Fu
ZGlkYXRlICIsIG5vZGUsICIgZm91bmQgbG9jYXRpb24gIiwgbG9jYXRpb24sICJcbiIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsCkBAIC0xNzk2LDcgKzE3OTgsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICBwb3B1bGF0ZU1hdGVyaWFsaXphdGlvbihibG9jaywg
bWF0ZXJpYWxpemF0aW9uLCBlc2NhcGVlKTsKICAgICAgICAgICAgICAgICAgICAgbV9lc2NhcGVl
VG9NYXRlcmlhbGl6YXRpb24uc2V0KGVzY2FwZWUsIG1hdGVyaWFsaXphdGlvbik7CiAgICAgICAg
ICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydChub2RlSW5kZXgsIG1hdGVyaWFsaXph
dGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAg
ICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiTWF0ZXJpYWxpemluZyAiLCBlc2Nh
cGVlLCAiID0+ICIsIG1hdGVyaWFsaXphdGlvbiwgIiBhdCAiLCBub2RlLCAiXG4iKTsKICAgICAg
ICAgICAgICAgICB9CiAKQEAgLTE4NTEsNyArMTg1Myw3IEBAIHByaXZhdGU6CiAKICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvTG93ZXIgPSB0cnVlOwogCi0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdPYmplY3RBbGxv
Y2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiQ3JlYXRpbmcgaGludCB3aXRoIHZhbHVlICIsIG5vZGVWYWx1ZSwg
IiBiZWZvcmUgIiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ICsg
MSwKQEAgLTE5OTQsNyArMTk5Niw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGluc2VydE9TUkhp
bnRzRm9yVXBkYXRlKHVuc2lnbmVkIG5vZGVJbmRleCwgTm9kZU9yaWdpbiBvcmlnaW4sIGJvb2wm
IGNhbkV4aXQsIEF2YWlsYWJpbGl0eU1hcCYgYXZhaWxhYmlsaXR5LCBOb2RlKiBlc2NhcGVlLCBO
b2RlKiBtYXRlcmlhbGl6YXRpb24pCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkgeworICAg
ICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3Nl
KSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJJbnNlcnRpbmcgT1NSIGhpbnRzIGF0ICIsIG9yaWdp
biwgIjpcbiIpOwogICAgICAgICAgICAgZGF0YUxvZygiICAgIEVzY2FwZWU6ICIsIGVzY2FwZWUs
ICJcbiIpOwogICAgICAgICAgICAgZGF0YUxvZygiICAgIE1hdGVyaWFsaXphdGlvbjogIiwgbWF0
ZXJpYWxpemF0aW9uLCAiXG4iKTsKQEAgLTIxNjcsNyArMjE2OSw3IEBAIHByaXZhdGU6CiAKICAg
ICBOb2RlKiBjcmVhdGVSZWNvdmVyeShCYXNpY0Jsb2NrKiBibG9jaywgUHJvbW90ZWRIZWFwTG9j
YXRpb24gbG9jYXRpb24sIE5vZGUqIHdoZXJlLCBib29sJiBjYW5FeGl0KQogICAgIHsKLSAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1Bo
YXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJSZWNvdmVyaW5nICIs
IGxvY2F0aW9uLCAiIGF0ICIsIHdoZXJlLCAiXG4iKTsKICAgICAgICAgQVNTRVJUKGxvY2F0aW9u
LmJhc2UoKS0+aXNQaGFudG9tQWxsb2NhdGlvbigpKTsKICAgICAgICAgTm9kZSogYmFzZSA9IGdl
dE1hdGVyaWFsaXphdGlvbihibG9jaywgbG9jYXRpb24uYmFzZSgpKTsKQEAgLTIxNzUsNyArMjE3
Nyw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSB3aGVyZS0+b3Jp
Z2luLndpdGhTZW1hbnRpYyhiYXNlLT5vcmlnaW4uc2VtYW50aWMpOwogCi0gICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQmFzZSBpcyAiLCBiYXNlLCAiIGFu
ZCB2YWx1ZSBpcyAiLCB2YWx1ZSwgIlxuIik7CiAKICAgICAgICAgaWYgKGJhc2UtPmlzUGhhbnRv
bUFsbG9jYXRpb24oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwCmluZGV4IGRjYzFjOTc2OTg2ZmVkNmUzZTlkY2Vk
Y2FmNWU5NDA1YjlkM2I4ZGEuLjNjMDg4YTZhNGE1ZWU2NTA5MDYyMmQ2NjAzMmQ0ZjE3MTAyOTM3
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUluc2Vy
dGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21J
bnNlcnRpb25QaGFzZS5jcHAKQEAgLTQzLDcgKzQzLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVz
cGFjZSBERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2VJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9v
bCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIFBoYW50b21JbnNlcnRpb25QaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiBwdWJsaWM6CkBAIC02MCw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICAgICAg
Ly8gU2V0TG9jYWxzIGV4ZWN1dGUsIHdoaWNoIGlzIGluYWNjdXJhdGUuIFRoYXQgY2F1c2VzIHVz
IHRvIGluc2VydCB0b28gZmV3IFBoYW50b21zLgogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgs
IG51bGxwdHIsIG1fZ3JhcGgubV9yZWZDb3VudFN0YXRlID09IEV4YWN0UmVmQ291bnQpOwogICAg
ICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR1BoYW50b21JbnNl
cnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJHcmFw
aCBiZWZvcmUgUGhhbnRvbSBpbnNlcnRpb246XG4iKTsKICAgICAgICAgICAgIG1fZ3JhcGguZHVt
cCgpOwogICAgICAgICB9CkBAIC03MCw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICAgICAgZm9yIChC
YXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkKICAgICAg
ICAgICAgIGhhbmRsZUJsb2NrKGJsb2NrKTsKICAgICAgICAgCi0gICAgICAgIGlmICh2ZXJib3Nl
KSB7CisgICAgICAgIGlmIChERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9z
ZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYWZ0ZXIgUGhhbnRvbSBpbnNlcnRpb246
XG4iKTsKICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwogICAgICAgICB9CkBAIC0xMDEsNyAr
MTAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgbGFzdEV4aXRpbmdJbmRleCA9IDA7
CiAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgYmxvY2st
PnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+
YXQobm9kZUluZGV4KTsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYg
KERGR1BoYW50b21JbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKQEAgLTEzOSw3ICsxNDEsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFscmVhZHlLaWxsZWQ7CiAKICAgICAg
ICAgICAgIGF1dG8gcHJvY2Vzc0tpbGxlZE9wZXJhbmQgPSBbJl0gKFZpcnR1YWxSZWdpc3RlciBy
ZWcpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAo
REZHUGhhbnRvbUluc2VydGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIiAgICBLaWxsZWQgb3BlcmFuZDogIiwgcmVnLCAiXG4iKTsKIAogICAg
ICAgICAgICAgICAgIC8vIEFscmVhZHkgaGFuZGxlZCBmcm9tIFNldExvY2FsLgpAQCAtMTU1LDcg
KzE1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKGtpbGxlZE5vZGUtPmVwb2No
KCkgPT0gY3VycmVudEVwb2NoKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoREZHUGhhbnRvbUluc2VydGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgSW5z
ZXJ0aW5nIFBoYW50b20gb24gIiwga2lsbGVkTm9kZSwgIiBhZnRlciAiLAogICAgICAgICAgICAg
ICAgICAgICAgICAgYmxvY2stPmF0KGxhc3RFeGl0aW5nSW5kZXgpLCAiXG4iKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAK
aW5kZXggZDNkYTU1MjdkNjNiYzA3Njk4MGVkNDA0ZDU3MzA2NWQ0YTg1MTZiYS4uMTRjZWQyYWE4
ZDgyYzZlYmNiMzVlOTRjYTZmYTJlMmEzZTMzODRmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKQEAgLTQyLDcgKzQy
LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3BhY2UgewogCi1i
b29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBERkdQdXRTdGFja1NpbmtpbmdQaGFzZUlu
dGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogY2xhc3Mg
UHV0U3RhY2tTaW5raW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogcHVibGljOgpAQCAtNzEsNyAr
NzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIHRoZSBzdGFjay4gSXQncyBub3QgY2xlYXIgdG8g
bWUgaWYgdGhpcyBpcyBpbXBvcnRhbnQgb3Igbm90LgogICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1Mjk2CiAgICAgICAgIAotICAgICAgICBpZiAo
dmVyYm9zZSkgeworICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6
dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIFB1dFN0YWNrIHNp
bmtpbmc6XG4iKTsKICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwogICAgICAgICB9CkBAIC0x
MDUsNyArMTA3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIE9wZXJhbmRzPGJvb2w+IGxp
dmUgPSBsaXZlQXRUYWlsW2Jsb2NrXTsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG5v
ZGVJbmRleCA9IGJsb2NrLT5zaXplKCk7IG5vZGVJbmRleC0tOykgewogICAgICAgICAgICAgICAg
ICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5r
aW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIkxpdmUgYXQgIiwgbm9kZSwgIjogIiwgbGl2ZSwgIlxuIik7CiAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICBWZWN0b3I8VmlydHVhbFJlZ2lzdGVyLCA0PiByZWFk
czsKQEAgLTExMyw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGF1dG8g
ZXNjYXBlSGFuZGxlciA9IFsmXSAoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzSGVhZGVyKCkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
Iiwgb3BlcmFuZCwgIiBpcyBsaXZlIGF0ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgcmVhZHMuYXBwZW5kKG9wZXJhbmQpOwogICAgICAgICAgICAgICAgICAgICB9OwpA
QCAtMjMwLDcgKzIzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBPcGVyYW5kczxGbHVz
aEZvcm1hdD4gZGVmZXJyZWQgPSBkZWZlcnJlZEF0SGVhZFtibG9ja107CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgZm9yIChOb2RlKiBub2RlIDogKmJsb2NrKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHUHV0
U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkRlZmVycmVkIGF0ICIsIG5vZGUsICI6IiwgZGVmZXJyZWQsICJcbiIpOwog
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkg
PT0gR2V0U3RhY2spIHsKQEAgLTI3Nyw3ICsyNzksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGF1dG8g
ZXNjYXBlSGFuZGxlciA9IFsmXSAoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KERGR1B1dFN0YWNrU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiRm9yICIsIG5vZGUsICIgZXNjYXBpbmcgIiwgb3BlcmFu
ZCwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0hlYWRlcigp
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMwMywxMyArMzA1LDEz
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmb3IgKEJhc2lj
QmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IGRlZmVycmVkLnNpemUoKTsgaS0tOykgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
REZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyAiLCBWaXJ0dWFsUmVnaXN0ZXIoZGVm
ZXJyZWQub3BlcmFuZEZvckluZGV4KGkpKSwgIiBhdCAiLCBwb2ludGVyRHVtcChibG9jayksICIt
PiIsIHBvaW50ZXJEdW1wKHN1Y2Nlc3NvciksICI6ICIsIGRlZmVycmVkW2ldLCAiIGFuZCAiLCBk
ZWZlcnJlZEF0SGVhZFtzdWNjZXNzb3JdW2ldLCAiIG1lcmdlcyB0byAiKTsKIAogICAgICAgICAg
ICAgICAgICAgICAgICAgZGVmZXJyZWRBdEhlYWRbc3VjY2Vzc29yXVtpXSA9CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWVyZ2UoZGVmZXJyZWRBdEhlYWRbc3VjY2Vzc29yXVtpXSwgZGVm
ZXJyZWRbaV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdQdXRTdGFj
a1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coZGVmZXJyZWRBdEhlYWRbc3VjY2Vzc29yXVtpXSwgIlxuIik7CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0zODcsNyArMzg5LDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgIGlmICghaXNDb25jcmV0ZShmb3JtYXQpKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICAgICAgICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJBZGRpbmcgUGhpIGZvciAiLCBv
cGVyYW5kLCAiIGF0ICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIlxuIik7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgTm9kZSogcGhpTm9kZSA9IG1fZ3JhcGguYWRkTm9kZShTcGVj
SGVhcFRvcCwgUGhpLCBibG9jay0+YXQoMCktPm9yaWdpbi53aXRoSW52YWxpZEV4aXQoKSk7CkBA
IC00MTEsNyArNDEzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIG1hcHBpbmcub3BlcmFu
ZChvcGVyYW5kKSA9IGRlZi0+dmFsdWUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAot
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5r
aW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJNYXBw
aW5nIGF0IHRvcCBvZiAiLCBwb2ludGVyRHVtcChibG9jayksICI6ICIsIG1hcHBpbmcsICJcbiIp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKFNTQUNhbGN1bGF0b3I6OkRlZiogcGhp
RGVmIDogc3NhQ2FsY3VsYXRvci5waGlzRm9yQmxvY2soYmxvY2spKSB7CkBAIC00MTksNyArNDIx
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGluc2VydGlv
blNldC5pbnNlcnQoMCwgcGhpRGVmLT52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tT
aW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiICAgTWFwcGluZyAiLCBvcGVyYW5kLCAiIHRvICIsIHBoaURlZi0+dmFsdWUoKSwgIlxuIik7
CiAgICAgICAgICAgICAgICAgbWFwcGluZy5vcGVyYW5kKG9wZXJhbmQpID0gcGhpRGVmLT52YWx1
ZSgpOwogICAgICAgICAgICAgfQpAQCAtNDI3LDcgKzQyOSw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIGRlZmVycmVkID0gZGVmZXJyZWRBdEhlYWRbYmxvY2tdOwogICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBub2RlSW5kZXggPSAwOyBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyArK25vZGVJ
bmRleCkgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4
KTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZH
UHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiRGVmZXJyZWQgYXQgIiwgbm9kZSwgIjoiLCBkZWZlcnJlZCwgIlxuIik7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CkBA
IC00MzUsNyArNDM3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBTdGFja0FjY2Vz
c0RhdGEqIGRhdGEgPSBub2RlLT5zdGFja0FjY2Vzc0RhdGEoKTsKICAgICAgICAgICAgICAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBkYXRhLT5sb2NhbDsKICAgICAgICAgICAgICAg
ICAgICAgZGVmZXJyZWQub3BlcmFuZChvcGVyYW5kKSA9IGRhdGEtPmZvcm1hdDsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdQdXRT
dGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiICAgTWFwcGluZyAiLCBvcGVyYW5kLCAiIHRvICIsIG5vZGUtPmNoaWxkMSgp
Lm5vZGUoKSwgIiBhdCAiLCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgbWFwcGlu
Zy5vcGVyYW5kKG9wZXJhbmQpID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKQEAgLTQ3MCw3ICs0NzIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgZGVmYXVsdDogewogICAgICAgICAgICAgICAgICAgICBhdXRv
IGVzY2FwZUhhbmRsZXIgPSBbJl0gKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIkZvciAiLCBub2RlLCAiIGVzY2FwaW5nICIsIG9wZXJh
bmQsICJcbiIpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0hlYWRl
cigpKQpAQCAtNDg0LDcgKzQ4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHb3R0
YSBpbnNlcnQgYSBQdXRTdGFjay4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2luZ1BoYXNlSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiSW5z
ZXJ0aW5nIGEgUHV0U3RhY2sgZm9yICIsIG9wZXJhbmQsICIgYXQgIiwgbm9kZSwgIlxuIik7CiAK
ICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGluY29taW5nID0gbWFwcGluZy5vcGVyYW5k
KG9wZXJhbmQpOwpAQCAtNTIzLDcgKzUyNSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
ICAgTm9kZSogcGhpTm9kZSA9IHBoaURlZi0+dmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAg
U1NBQ2FsY3VsYXRvcjo6VmFyaWFibGUqIHZhcmlhYmxlID0gcGhpRGVmLT52YXJpYWJsZSgpOwog
ICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IGluZGV4VG9PcGVy
YW5kW3ZhcmlhYmxlLT5pbmRleCgpXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICAgICAgICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ3JlYXRpbmcgVXBz
aWxvbiBmb3IgIiwgb3BlcmFuZCwgIiBhdCAiLCBwb2ludGVyRHVtcChibG9jayksICItPiIsIHBv
aW50ZXJEdW1wKHN1Y2Nlc3NvckJsb2NrKSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIEZs
dXNoRm9ybWF0IGZvcm1hdCA9IGRlZmVycmVkQXRIZWFkW3N1Y2Nlc3NvckJsb2NrXS5vcGVyYW5k
KG9wZXJhbmQpOwogICAgICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxw
dHIsIGlzQ29uY3JldGUoZm9ybWF0KSk7CkBAIC01NjgsNyArNTcwLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkgewor
ICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewog
ICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYWZ0ZXIgUHV0U3RhY2sgc2lua2luZzpcbiIpOwog
ICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAKaW5kZXggM2EyYTcxNzJhZDczZDZhM2UwMTA3MjkyZTViOTcwNTQ5NDdmOGYxYS4uYjVlMmMz
NTBiMTgxZjliMDYzOTMyMTVhNDJhYWFkNzZiNjVlZDg0NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAKQEAgLTQzLDcgKzQzLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBu
YW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBERkdTdG9yZUJh
cnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2Ug
PSBmYWxzZTsKK30KIAogZW51bSBjbGFzcyBQaGFzZU1vZGUgewogICAgIC8vIERvZXMgb25seSBh
IGxvY2FsIGFuYWx5c2lzIGZvciBzdG9yZSBiYXJyaWVyIGluc2VydGlvbiBhbmQgYXNzdW1lcyB0
aGF0IHBvaW50ZXJzIGxpdmUKQEAgLTc1LDcgKzc3LDcgQEAgcHVibGljOgogICAgIAogICAgIGJv
b2wgcnVuKCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdT
dG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAg
ICBkYXRhTG9nKCJTdGFydGluZyBzdG9yZSBiYXJyaWVyIGluc2VydGlvbjpcbiIpOwogICAgICAg
ICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KQEAgLTE2Nyw3ICsxNjksNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIGJvb2wgaGFuZGxlQmxvY2soQmFzaWNCbG9jayogYmxvY2spCiAg
ICAgewotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHU3RvcmVCYXJyaWVy
SW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygi
RGVhbGluZyB3aXRoIGJsb2NrICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIlxuIik7CiAgICAgICAg
ICAgICBpZiAocmVhbGx5SW5zZXJ0QmFycmllcnMoKSkKICAgICAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgUmVhbGx5IGluc2VydGluZyBiYXJyaWVycy5cbiIpOwpAQCAtMjA2LDcgKzIwOCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGZvciAobV9ub2RlSW5kZXggPSAwOyBtX25vZGVJbmRleCA8IGJs
b2NrLT5zaXplKCk7ICsrbV9ub2RlSW5kZXgpIHsKICAgICAgICAgICAgIG1fbm9kZSA9IGJsb2Nr
LT5hdChtX25vZGVJbmRleCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh2ZXJib3Nl
KSB7CisgICAgICAgICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJbnRlcm5h
bDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAg
ICAgICIgICAgIiwgbV9jdXJyZW50RXBvY2gsICI6IExvb2tpbmcgYXQgbm9kZSAiLCBtX25vZGUs
ICIgd2l0aCBjaGlsZHJlbjogIik7CiAgICAgICAgICAgICAgICAgQ29tbWFQcmludGVyIGNvbW1h
OwpAQCAtMzQ4LDcgKzM1MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7Cisg
ICAgICAgICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVy
Ym9zZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICIg
ICAgIiwgbV9jdXJyZW50RXBvY2gsICI6IERvbmUgd2l0aCBub2RlICIsIG1fbm9kZSwgIiAoIiwg
bV9ub2RlLT5lcG9jaCgpLAogICAgICAgICAgICAgICAgICAgICAiKSB3aXRoIGNoaWxkcmVuOiAi
KTsKQEAgLTM4MCw3ICszODIsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgY29uc2lkZXJC
YXJyaWVyKEVkZ2UgYmFzZSwgRWRnZSBjaGlsZCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgQ29uc2lkZXJpbmcgYWRkaW5nIGJh
cnJpZXIgIiwgYmFzZSwgIiA9PiAiLCBjaGlsZCwgIlxuIik7CiAgICAgICAgIAogICAgICAgICAv
LyBXZSBkb24ndCBuZWVkIGEgc3RvcmUgYmFycmllciBpZiB0aGUgY2hpbGQgaXMgZ3VhcmFudGVl
ZCB0byBub3QgYmUgYSBjZWxsLgpAQCAtMzg5LDcgKzM5MSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAvLyBEb24ndCB0cnkgdG9vIGhhcmQgYmVjYXVzZSBpdCdzIHRvbyBleHBlbnNpdmUgdG8g
cnVuIEFJLgogICAgICAgICAgICAgaWYgKGNoaWxkLT5oYXNDb25zdGFudCgpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKCFjaGlsZC0+YXNKU1ZhbHVlKCkuaXNDZWxsKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdTdG9yZUJh
cnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiICAgICAgICAgICAgUmVqZWN0aW5nIGJlY2F1c2Ugb2YgY29uc3RhbnQg
dHlwZS5cbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg
fQpAQCAtNDAwLDcgKzQwMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBOb2Rl
UmVzdWx0SW50MzI6CiAgICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50NTI6CiAgICAg
ICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0Qm9vbGVhbjoKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNl
cnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZygiICAgICAgICAgICAgUmVqZWN0aW5nIGJlY2F1c2Ugb2YgcmVzdWx0IHR5cGUuXG4iKTsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CkBA
IC00MTQsNyArNDE2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIEdvIGludG8gcmFnZSBt
b2RlIHRvIGVsaW1pbmF0ZSBhbnkgY2hhbmNlIG9mIGEgYmFycmllciB3aXRoIGEgbm9uLWNlbGwg
Y2hpbGQuIFdlCiAgICAgICAgICAgICAvLyBjYW4gYWZmb3JkIHRvIGtlZXAgYXJvdW5kIEFJIGlu
IEdsb2JhbCBtb2RlLgogICAgICAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLT5uZWVkc1R5cGVD
aGVjayhjaGlsZCwgflNwZWNDZWxsKSkgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgICAgICBSZWpl
Y3RpbmcgYmVjYXVzZSBvZiBBSSB0eXBlLlxuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQpAQCAtNDI2LDcgKzQyOCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9p
ZCBjb25zaWRlckJhcnJpZXIoRWRnZSBiYXNlKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBDb25zaWRlcmluZyBhZGRpbmcgYmFy
cmllciBvbiAiLCBiYXNlLCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIC8vIFdlIGRvbid0IG5l
ZWQgYSBzdG9yZSBiYXJyaWVyIGlmIHRoZSBlcG9jaCBvZiB0aGUgYmFzZSBpcyBpZGVudGljYWwg
dG8gdGhlIGN1cnJlbnQKQEAgLTQzNCwxMiArNDM2LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIC8v
IGJlIGluIG5ld2dlbiwgb3Igd2UganVzdCByYW4gYSBiYXJyaWVyIG9uIGl0IHNvIGl0J3MgZ3Vh
cmFudGVlZCB0byBiZSByZW1lbWJlcmVkCiAgICAgICAgIC8vIGFscmVhZHkuCiAgICAgICAgIGlm
IChiYXNlLT5lcG9jaCgpID09IG1fY3VycmVudEVwb2NoKSB7Ci0gICAgICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgICAgIFJlamVj
dGluZyBiZWNhdXNlIGl0J3MgaW4gdGhlIGN1cnJlbnQgZXBvY2guXG4iKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICAgICAgSW5zZXJ0aW5nIGJhcnJpZXIuXG4iKTsK
ICAgICAgICAgaW5zZXJ0QmFycmllcihtX25vZGVJbmRleCArIDEsIGJhc2UpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQ
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5n
UGhhc2UuY3BwCmluZGV4IGUzYzUyYWNhOWRhMTNmY2Q4M2MxOGUwMWI4NTZmOGE0ODA5ODllOTcu
LmU5NzM5NTc3N2ZhOWUwZDgyNjUzZGM4Nzc4ZDJhMDIwMGIwOTU5NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNw
cApAQCAtNDAsNyArNDAsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5h
bWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIERGR1ZhcmFyZ3NG
b3J3YXJkaW5nUGhhc2VJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFs
c2U7Cit9CiAKIGNsYXNzIFZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2Ugewog
cHVibGljOgpAQCAtNTMsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBERkdfQVNT
RVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9mb3JtICE9IFNTQSk7CiAgICAgICAgIAot
ICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQ
aGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJHcmFwaCBiZWZv
cmUgdmFyYXJncyBmb3J3YXJkaW5nOlxuIik7CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsK
ICAgICAgICAgfQpAQCAtODUsNyArODcsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBXZSBleHBl
Y3QgY2FsbHMgaW50byB0aGlzIGZ1bmN0aW9uIHRvIGJlIHJhcmUuIFNvLCB0aGlzIGlzIHdyaXR0
ZW4gaW4gYSBzaW1wbGUgTyhuKSBtYW5uZXIuCiAgICAgICAgIAogICAgICAgICBOb2RlKiBjYW5k
aWRhdGUgPSBibG9jay0+YXQoY2FuZGlkYXRlTm9kZUluZGV4KTsKLSAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJIYW5kbGluZyBjYW5kaWRhdGUgIiwgY2FuZGlkYXRl
LCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZpbmQgdGhlIGluZGV4IG9mIHRoZSBsYXN0
IG5vZGUgaW4gdGhpcyBibG9jayB0byB1c2UgdGhlIGNhbmRpZGF0ZSwgYW5kIGxvb2sgZm9yIGVz
Y2FwaW5nCkBAIC0xMjEsNyArMTIzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
ICAgIHNhd0VzY2FwZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgICAgIGlmIChzYXdFc2NhcGUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICAgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRXNjYXBl
IGF0ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgfQpAQCAtMTM4LDcgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNl
IFRhaWxDYWxsVmFyYXJnczoKICAgICAgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzSW5saW5l
ZENhbGxlcjoKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkgPT0gY2FuZGlkYXRl
IHx8IG5vZGUtPmNoaWxkMigpID09IGNhbmRpZGF0ZSkgewotICAgICAgICAgICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5n
UGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
IiAgICBFc2NhcGUgYXQgIiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgICAgICB9CkBAIC0xNDgsNyArMTUwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgU2V0TG9jYWw6CiAgICAgICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMSgpID09IGNhbmRpZGF0ZSAmJiBub2RlLT52YXJpYWJsZUFjY2Vzc0Rh
dGEoKS0+aXNMb2FkZWRGcm9tKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICAgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRXNjYXBl
IGF0ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgfQpAQCAtMTU2LDcgKzE1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLnVzZXMo
bm9kZSwgY2FuZGlkYXRlKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBFc2NhcGUgYXQg
Iiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
ICAgICB9CkBAIC0xNjUsNyArMTY3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZvckFsbEtp
bGxlZE9wZXJhbmRzKAogICAgICAgICAgICAgICAgIG1fZ3JhcGgsIG5vZGUsIGJsb2NrLT50cnlB
dChub2RlSW5kZXggKyAxKSwKICAgICAgICAgICAgICAgICBbJl0gKFZpcnR1YWxSZWdpc3RlciBy
ZWcpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAg
ICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgS2lsbGluZyAiLCByZWcsICIgd2hpbGUg
d2UgYXJlIGludGVyZXN0ZWQgaW4gIiwgbGlzdER1bXAocmVsZXZhbnRMb2NhbHMpLCAiXG4iKTsK
ICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlbGV2YW50TG9j
YWxzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVsZXZhbnRM
b2NhbHNbaV0gPT0gcmVnKSB7CkBAIC0xNzYsNyArMTc4LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICB9Ci0gICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZUludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiU2VsZWN0ZWQgbGFzdFVzZXJJbmRleCA9
ICIsIGxhc3RVc2VySW5kZXgsICIsICIsIGJsb2NrLT5hdChsYXN0VXNlckluZGV4KSwgIlxuIik7
CiAgICAgICAgIAogICAgICAgICAvLyBXZSdyZSBzdGlsbCBpbiBidXNpbmVzcy4gRGV0ZXJtaW5l
IGlmIGJldHdlZW4gdGhlIGNhbmRpZGF0ZSBhbmQgdGhlIGxhc3QgdXNlciB0aGVyZSBpcyBhbnkK
QEAgLTE5Myw3ICsxOTUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBab21iaWVIaW50
OgogICAgICAgICAgICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgICAgICAgICAgICAgaWYgKGFyZ3Vt
ZW50c0ludm9sdmVTdGFja1Nsb3QoY2FuZGlkYXRlLCBub2RlLT51bmxpbmtlZExvY2FsKCkpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBp
ZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEludGVyZmVyZW5jZSBhdCAiLCBub2RlLCAiXG4i
KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAgLTIw
MSw3ICsyMDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2Fz
ZSBQdXRTdGFjazoKICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzSW52b2x2ZVN0YWNrU2xv
dChjYW5kaWRhdGUsIG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5sb2NhbCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdWYXJh
cmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgSW50ZXJmZXJlbmNlIGF0ICIsIG5vZGUsICJcbiIpOwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtMjEwLDcgKzIxMiw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIFNldExvY2FsOgogICAgICAgICAgICAgY2Fz
ZSBGbHVzaDoKICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzSW52b2x2ZVN0YWNrU2xvdChj
YW5kaWRhdGUsIG5vZGUtPmxvY2FsKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZUlu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIElu
dGVyZmVyZW5jZSBhdCAiLCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICAgIH0KQEAgLTIzMiw3ICsyMzQsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICBOb09wQ2xvYmJlcml6ZSgpKTsK
ICAgICAgICAgICAgICAgICBpZiAoZG9lc0ludGVyZmVyZSkgewotICAgICAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR1ZhcmFyZ3NGb3J3YXJk
aW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIiAgICBJbnRlcmZlcmVuY2UgYXQgIiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBAIC0yNDAsNyArMjQyLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gV2UgY2FuIG1ha2UgdGhpcyB3b3Jr
LgotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5n
UGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBXaWxsIGRv
IGZvcndhcmRpbmchXG4iKTsKICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAKaW5kZXggOTAy
MTFmZDk0YWM2MTVjNjVjNTFkMzRjN2Q1ODhmNGQ5M2IxMjljNy4uOWI5OTE0YWU4Yjg1NGQwMzUy
OGE2Yjg4N2JhMjg4OGU3OWVkZGRhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQWJzdHJhY3RIZWFwLmNwcApAQCAtMzgsOCArMzgsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEZUTCB7CiAKLXVzaW5nIG5hbWVzcGFjZSBCMzsKLQogQWJzdHJhY3RIZWFwOjpB
YnN0cmFjdEhlYXAoQWJzdHJhY3RIZWFwKiBwYXJlbnQsIGNvbnN0IGNoYXIqIGhlYXBOYW1lLCBw
dHJkaWZmX3Qgb2Zmc2V0KQogICAgIDogbV9vZmZzZXQob2Zmc2V0KQogICAgICwgbV9oZWFwTmFt
ZShoZWFwTmFtZSkKQEAgLTc3LDcgKzc1LDcgQEAgdm9pZCBBYnN0cmFjdEhlYXA6OmNvbXB1dGUo
dW5zaWduZWQgYmVnaW4pCiAKICAgICBpZiAobV9jaGlsZHJlbi5pc0VtcHR5KCkpIHsKICAgICAg
ICAgLy8gTXVzdCBzcGVjaWFsLWNhc2UgbGVhdmVzIHNvIHRoYXQgdGhleSB1c2UganVzdCBvbmUg
c2xvdCBvbiB0aGUgbnVtYmVyIGxpbmUuCi0gICAgICAgIG1fcmFuZ2UgPSBIZWFwUmFuZ2UoYmVn
aW4pOworICAgICAgICBtX3JhbmdlID0gQjM6OkhlYXBSYW5nZShiZWdpbik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTg3LDcgKzg1LDcgQEAgdm9pZCBBYnN0cmFjdEhlYXA6OmNvbXB1
dGUodW5zaWduZWQgYmVnaW4pCiAgICAgICAgIGN1cnJlbnQgPSBjaGlsZC0+cmFuZ2UoKS5lbmQo
KTsKICAgICB9CiAKLSAgICBtX3JhbmdlID0gSGVhcFJhbmdlKGJlZ2luLCBjdXJyZW50KTsKKyAg
ICBtX3JhbmdlID0gQjM6OkhlYXBSYW5nZShiZWdpbiwgY3VycmVudCk7CiB9CiAKIHZvaWQgQWJz
dHJhY3RIZWFwOjpzaGFsbG93RHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5j
cHAKaW5kZXggNTkwM2E4ZTUzZWQzZDU3NTBlMWM1Y2RmMDExOGQyOTIyYzVjY2Y5Mi4uNDBjYzhi
ODE0YzMwZTQxYzUyY2JjNWM5N2JiMTg4ZTQ2MjBjM2E0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCkBAIC00
Nyw4ICs0Nyw2IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAotdXNpbmcg
bmFtZXNwYWNlIEIzOwotCiBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5KCkKICAgICA6IHJvb3QobnVsbHB0ciwgImpzY1Jvb3QiKQogCkBAIC05Miw0OCArOTAs
NDkgQEAgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6fkFic3RyYWN0SGVhcFJlcG9zaXRvcnkoKQog
ewogfQogCi12b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlTWVtb3J5KGNvbnN0
IEFic3RyYWN0SGVhcCogaGVhcCwgVmFsdWUqIHZhbHVlKQordm9pZCBBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5OjpkZWNvcmF0ZU1lbW9yeShjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIEIzOjpWYWx1
ZSogdmFsdWUpCiB7CiAgICAgbV9oZWFwRm9yTWVtb3J5LmFwcGVuZChIZWFwRm9yVmFsdWUoaGVh
cCwgdmFsdWUpKTsKIH0KIAotdm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUND
YWxsUmVhZChjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIFZhbHVlKiB2YWx1ZSkKK3ZvaWQgQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVDQ2FsbFJlYWQoY29uc3QgQWJzdHJhY3RIZWFw
KiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQogewogICAgIG1faGVhcEZvckNDYWxsUmVhZC5hcHBl
bmQoSGVhcEZvclZhbHVlKGhlYXAsIHZhbHVlKSk7CiB9CiAKLXZvaWQgQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeTo6ZGVjb3JhdGVDQ2FsbFdyaXRlKGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwgVmFs
dWUqIHZhbHVlKQordm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUNDYWxsV3Jp
dGUoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQogewogICAgIG1f
aGVhcEZvckNDYWxsV3JpdGUuYXBwZW5kKEhlYXBGb3JWYWx1ZShoZWFwLCB2YWx1ZSkpOwogfQog
Ci12b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlUGF0Y2hwb2ludFJlYWQoY29u
c3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBWYWx1ZSogdmFsdWUpCit2b2lkIEFic3RyYWN0SGVhcFJl
cG9zaXRvcnk6OmRlY29yYXRlUGF0Y2hwb2ludFJlYWQoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFw
LCBCMzo6VmFsdWUqIHZhbHVlKQogewogICAgIG1faGVhcEZvclBhdGNocG9pbnRSZWFkLmFwcGVu
ZChIZWFwRm9yVmFsdWUoaGVhcCwgdmFsdWUpKTsKIH0KIAotdm9pZCBBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5OjpkZWNvcmF0ZVBhdGNocG9pbnRXcml0ZShjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAs
IFZhbHVlKiB2YWx1ZSkKK3ZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVQYXRj
aHBvaW50V3JpdGUoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQog
ewogICAgIG1faGVhcEZvclBhdGNocG9pbnRXcml0ZS5hcHBlbmQoSGVhcEZvclZhbHVlKGhlYXAs
IHZhbHVlKSk7CiB9CiAKLXZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5j
ZVJlYWQoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBWYWx1ZSogdmFsdWUpCit2b2lkIEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlRmVuY2VSZWFkKGNvbnN0IEFic3RyYWN0SGVhcCog
aGVhcCwgQjM6OlZhbHVlKiB2YWx1ZSkKIHsKICAgICBtX2hlYXBGb3JGZW5jZVJlYWQuYXBwZW5k
KEhlYXBGb3JWYWx1ZShoZWFwLCB2YWx1ZSkpOwogfQogCi12b2lkIEFic3RyYWN0SGVhcFJlcG9z
aXRvcnk6OmRlY29yYXRlRmVuY2VXcml0ZShjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIFZhbHVl
KiB2YWx1ZSkKK3ZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5jZVdyaXRl
KGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwgQjM6OlZhbHVlKiB2YWx1ZSkKIHsKICAgICBtX2hl
YXBGb3JGZW5jZVdyaXRlLmFwcGVuZChIZWFwRm9yVmFsdWUoaGVhcCwgdmFsdWUpKTsKIH0KIAot
dm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUZlbmNlZEFjY2Vzcyhjb25zdCBB
YnN0cmFjdEhlYXAqIGhlYXAsIFZhbHVlKiB2YWx1ZSkKK3ZvaWQgQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeTo6ZGVjb3JhdGVGZW5jZWRBY2Nlc3MoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBCMzo6
VmFsdWUqIHZhbHVlKQogewogICAgIG1faGVhcEZvckZlbmNlZEFjY2Vzcy5hcHBlbmQoSGVhcEZv
clZhbHVlKGhlYXAsIHZhbHVlKSk7CiB9CiAKIHZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6
Y29tcHV0ZVJhbmdlc0FuZERlY29yYXRlSW5zdHJ1Y3Rpb25zKCkKIHsKKyAgICB1c2luZyBuYW1l
c3BhY2UgQjM7CiAgICAgcm9vdC5jb21wdXRlKCk7CiAKICAgICBpZiAodmVyYm9zZUNvbXBpbGF0
aW9uRW5hYmxlZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEpJVEZpbmFsaXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFs
aXplci5jcHAKaW5kZXggMzZkYzQ5Y2VjMTBjNjU5NzljZjYwYTMzMmU5ZTAwNGI0ZWM2MTBlZC4u
YjI4ZGQ5YTVjMzgyMzlkN2Y4N2FkMjM2NGU3NGI5NDUxMjQxZWYzMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNwcApAQCAtMzcsOSArMzcsNyBAQAog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKLXVzaW5nIG5hbWVzcGFjZSBERkc7
Ci0KLUpJVEZpbmFsaXplcjo6SklURmluYWxpemVyKFBsYW4mIHBsYW4pCitKSVRGaW5hbGl6ZXI6
OkpJVEZpbmFsaXplcihERkc6OlBsYW4mIHBsYW4pCiAgICAgOiBGaW5hbGl6ZXIocGxhbikKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCmluZGV4IDY3NmIzOTA5Yzg3ZDBk
YTkwYzVkOGRiNjYwOGFkMjE0YzU5ODk2NjkuLjdjMDE4MWQ4ZDFlNGI5MzhkZWU3MGFiOTFkNjYy
ZTA4NGMwMjkyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGlu
ay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcApAQCAtNDEs
MTAgKzQxLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCi11c2luZyBu
YW1lc3BhY2UgREZHOwotCiB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogeworICAgIHVzaW5nIG5h
bWVzcGFjZSBERkc7CiAgICAgR3JhcGgmIGdyYXBoID0gc3RhdGUuZ3JhcGg7CiAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBncmFwaC5tX2NvZGVCbG9jazsKICAgICBWTSYgdm0gPSBncmFwaC5t
X3ZtOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25z
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKaW5kZXgg
NDE3MTc4ZDY1ZWZkMGU4NDgzNzlkNzRlNmU2MjYzMDY1MDYxYzIwMi4uOGJjYTU2YzA2NTk3ZTc4
NDY1YzI5MjY4NGYzNmI3MmM5YjE2NzhmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE9wZXJhdGlvbnMuY3BwCkBAIC00MiwxMiArNDIsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBGVEwgewogCi11c2luZyBuYW1lc3BhY2UgSlNDOjpERkc7Ci0KIGV4dGVybiAi
QyIgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5PU1IoCiAgICAg
RXhlY1N0YXRlKiBleGVjLCBFeGl0VGltZU9iamVjdE1hdGVyaWFsaXphdGlvbiogbWF0ZXJpYWxp
emF0aW9uLAogICAgIEVuY29kZWRKU1ZhbHVlKiBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVl
KiB2YWx1ZXMpCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIERGRzsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAK
QEAgLTEyMCw2ICsxMTksNyBAQCBleHRlcm4gIkMiIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Qb3B1bGF0ZU9iamVjdEluT1NSKAogZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUigKICAgICBFeGVjU3RhdGUqIGV4ZWMsIEV4
aXRUaW1lT2JqZWN0TWF0ZXJpYWxpemF0aW9uKiBtYXRlcmlhbGl6YXRpb24sIEVuY29kZWRKU1Zh
bHVlKiB2YWx1ZXMpCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIERGRzsKICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwogCiAgICAgLy8gV2UgY2Fubm90IEdDLiBXZSd2ZSBnb3QgcG9pbnRlcnMgaW4g
ZXZpbCBwbGFjZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
aW5nQ29uc3RyYWludFNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5n
Q29uc3RyYWludFNldC5jcHAKaW5kZXggMDFjMDZlNzVjNWIwMGVkMTA2OGU3YjRjZjFhNzI4YzU5
NGNmOTFlMi4uYzVhNmM2Njk3NTkyZjc5NDBlZmZhNTU2MTllZjMzYTBkNTAxZDZlZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNw
cApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIk1hcmtpbmdDb25zdHJhaW50U2V0LmgiCiAK
ICNpbmNsdWRlICJPcHRpb25zLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL1RpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAg
LTEwNiwxNSArMTA3LDE1IEBAIHZvaWQgTWFya2luZ0NvbnN0cmFpbnRTZXQ6OmRpZFN0YXJ0TWFy
a2luZygpCiAgICAgbV9pdGVyYXRpb24gPSAxOwogfQogCi12b2lkIE1hcmtpbmdDb25zdHJhaW50
U2V0OjphZGQoQ1N0cmluZyBhYmJyZXZpYXRlZE5hbWUsIENTdHJpbmcgbmFtZSwgRnVuY3Rpb248
dm9pZChTbG90VmlzaXRvciYsIGNvbnN0IFZpc2l0aW5nVGltZW91dCYpPiBmdW5jdGlvbiwgQ29u
c3RyYWludFZvbGF0aWxpdHkgdm9sYXRpbGl0eSkKK3ZvaWQgTWFya2luZ0NvbnN0cmFpbnRTZXQ6
OmFkZChDU3RyaW5nIGFiYnJldmlhdGVkTmFtZSwgQ1N0cmluZyBuYW1lLCA6OkZ1bmN0aW9uPHZv
aWQoU2xvdFZpc2l0b3ImLCBjb25zdCBWaXNpdGluZ1RpbWVvdXQmKT4gZnVuY3Rpb24sIENvbnN0
cmFpbnRWb2xhdGlsaXR5IHZvbGF0aWxpdHkpCiB7CiAgICAgYWRkKHN0ZDo6bWFrZV91bmlxdWU8
TWFya2luZ0NvbnN0cmFpbnQ+KFdURk1vdmUoYWJicmV2aWF0ZWROYW1lKSwgV1RGTW92ZShuYW1l
KSwgV1RGTW92ZShmdW5jdGlvbiksIHZvbGF0aWxpdHkpKTsKIH0KIAogdm9pZCBNYXJraW5nQ29u
c3RyYWludFNldDo6YWRkKAogICAgIENTdHJpbmcgYWJicmV2aWF0ZWROYW1lLCBDU3RyaW5nIG5h
bWUsCi0gICAgRnVuY3Rpb248dm9pZChTbG90VmlzaXRvciYsIGNvbnN0IFZpc2l0aW5nVGltZW91
dCYpPiBleGVjdXRlRnVuY3Rpb24sCi0gICAgRnVuY3Rpb248ZG91YmxlKFNsb3RWaXNpdG9yJik+
IHF1aWNrV29ya0VzdGltYXRlRnVuY3Rpb24sCisgICAgOjpGdW5jdGlvbjx2b2lkKFNsb3RWaXNp
dG9yJiwgY29uc3QgVmlzaXRpbmdUaW1lb3V0Jik+IGV4ZWN1dGVGdW5jdGlvbiwKKyAgICA6OkZ1
bmN0aW9uPGRvdWJsZShTbG90VmlzaXRvciYpPiBxdWlja1dvcmtFc3RpbWF0ZUZ1bmN0aW9uLAog
ICAgIENvbnN0cmFpbnRWb2xhdGlsaXR5IHZvbGF0aWxpdHkpCiB7CiAgICAgYWRkKHN0ZDo6bWFr
ZV91bmlxdWU8TWFya2luZ0NvbnN0cmFpbnQ+KFdURk1vdmUoYWJicmV2aWF0ZWROYW1lKSwgV1RG
TW92ZShuYW1lKSwgV1RGTW92ZShleGVjdXRlRnVuY3Rpb24pLCBXVEZNb3ZlKHF1aWNrV29ya0Vz
dGltYXRlRnVuY3Rpb24pLCB2b2xhdGlsaXR5KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAKaW5kZXggYWU2ZTE4MzVlMmUyZTdh
NDMwMGY3ZGZhMGExMWIyODZkM2YxZmMzMS4uZjcwNjY2ZDg5NzBmNmM3MzMxNTkwNzgxNzdkM2Vh
M2M1NTgwYWI3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1NoYWRvd0NoaWNrZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9TaGFkb3dDaGlja2VuLmNwcApAQCAtMzMsNyArMzMsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAorbmFtZXNwYWNlIFNoYWRvd0NoaWNrZW5JbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2
ZXJib3NlID0gZmFsc2U7Cit9CiAKIHZvaWQgU2hhZG93Q2hpY2tlbjo6UGFja2V0OjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CkBAIC04Niw3ICs4OCw3IEBAIHZvaWQgU2hhZG93Q2hp
Y2tlbjo6bG9nKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBQYWNrZXQmIHBhY2tldCkK
IAogdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiB7
Ci0gICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJi
b3NlKSB7CiAgICAgICAgIGRhdGFMb2coIlJ1bm5pbmcgdXBkYXRlIG9uOiAiLCAqdGhpcywgIlxu
Iik7CiAgICAgICAgIFdURlJlcG9ydEJhY2t0cmFjZSgpOwogICAgIH0KQEAgLTExMiwxMyArMTE0
LDEzIEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVj
KQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTaGFk
b3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkhpZ2hlc3QgcG9p
bnQgc2luY2UgbGFzdCB0aW1lOiAiLCBSYXdQb2ludGVyKGhpZ2hlc3RQb2ludFNpbmNlTGFzdFRp
bWUpLCAiXG4iKTsKICAgICAKICAgICB3aGlsZSAoIW1fc3RhY2suaXNFbXB0eSgpICYmIChtX3N0
YWNrLmxhc3QoKS5mcmFtZSA8IGhpZ2hlc3RQb2ludFNpbmNlTGFzdFRpbWUgfHwgbV9zdGFjay5s
YXN0KCkuaXNUYWlsRGVsZXRlZCkpCiAgICAgICAgIG1fc3RhY2sucmVtb3ZlTGFzdCgpOwogICAg
IAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgIGRhdGFMb2coIiAgICBSZXZpc2VkIHN0YWNrOiAiLCBsaXN0RHVtcChtX3N0
YWNrKSwgIlxuIik7CiAgICAgCiAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSB0b3Agb2Yg
c3RhY2sgaXMgbm93IHRhaWwtZGVsZXRlZC4gVGhlIHN0YWNrIG5vIGxvbmdlciBjb250YWlucyBh
bnkKQEAgLTE0MSw3ICsxNDMsNyBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0s
IEV4ZWNTdGF0ZSogZXhlYykKICAgICB9CiAKICAgICAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBp
ZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCIgICAg
UmV2aXNlZCBzdGFjazogIiwgbGlzdER1bXAobV9zdGFjayksICJcbiIpOwogICAgIAogICAgIC8v
IFRoZSBsb2ctYmFzZWQgYW5kIGV4ZWMtYmFzZWQgcnVsZXMgcmVxdWlyZSB0aGF0IFNoYWRvd0No
aWNrZW4gd2FzIGVuYWJsZWQuIFRoZSBwb2ludCBvZgpAQCAtMTY5LDcgKzE3MSw3IEBAIHZvaWQg
U2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAg
ICAgfSk7CiAgICAgICAgIHN0YWNrUmlnaHROb3cucmV2ZXJzZSgpOwogICAgICAgICAKLSAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgU3RhY2sgcmlnaHQgbm93OiAiLCBsaXN0RHVt
cChzdGFja1JpZ2h0Tm93KSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCBzaGFk
b3dJbmRleCA9IDA7CkBAIC0xOTQsNyArMTk2LDcgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRh
dGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIH0KICAgICAgICAgbV9zdGFjay5y
ZXNpemUoc2hhZG93SW5kZXgpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgUmV2aXNlZCBzdGFjazogIiwgbGlzdER1bXAobV9zdGFjayksICJcbiIpOwogICAg
IH0KICAgICAKQEAgLTIwOCwxNyArMjEwLDE3IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRl
KFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGlm
ICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgIGRhdGFMb2coIiAgICBIaWdoZXN0IHBvaW50IHNpbmNlIGxhc3QgdGltZTogIiwgUmF3UG9p
bnRlcihoaWdoZXN0UG9pbnRTaW5jZUxhc3RUaW1lKSwgIlxuIik7CiAgICAgCiAgICAgLy8gU2V0
IGV2ZXJ5dGhpbmcgdXAgc28gdGhhdCB3ZSBrbm93IHdoZXJlIHRoZSB0b3AgZnJhbWUgaXMgaW4g
dGhlIGxvZy4KICAgICB1bnNpZ25lZCBpbmRleEluTG9nID0gbG9nQ3Vyc29ySW5kZXg7CiAgICAg
CiAgICAgYXV0byBhZHZhbmNlSW5kZXhJbkxvZ1RvID0gWyZdIChDYWxsRnJhbWUqIGZyYW1lLCBK
U09iamVjdCogY2FsbGVlLCBDYWxsRnJhbWUqIGNhbGxlckZyYW1lKSAtPiBib29sIHsKLSAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQWR2YW5jaW5nIHRvIGZyYW1lID0gIiwgUmF3
UG9pbnRlcihmcmFtZSksICIgZnJvbSBpbmRleEluTG9nID0gIiwgaW5kZXhJbkxvZywgIlxuIik7
CiAgICAgICAgIGlmIChpbmRleEluTG9nID4gbG9nQ3Vyc29ySW5kZXgpIHsKLSAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGluZy5cbiIpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0yNDQsNyArMjQ2LDcgQEAgdm9pZCBT
aGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAg
ICBpZiAocGFja2V0LmlzUHJvbG9ndWUoKSAmJiBwYWNrZXQuZnJhbWUgPT0gZnJhbWUKICAgICAg
ICAgICAgICAgICAmJiAoIWNhbGxlZSB8fCBwYWNrZXQuY2FsbGVlID09IGNhbGxlZSkKICAgICAg
ICAgICAgICAgICAmJiAoIWNhbGxlckZyYW1lIHx8IHBhY2tldC5jYWxsZXJGcmFtZSA9PSBjYWxs
ZXJGcmFtZSkpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAg
ICBpZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCIgICAgRm91bmQgYXQgaW5kZXhJbkxvZyA9ICIsIGluZGV4SW5Mb2csICJcbiIp
OwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMjY2LDcg
KzI2OCw3IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICAvLyBJdCBzZWVtcyBsaWtlIHRoZSBsYXR0ZXIgb3B0aW9uIGlzIGxlc3Mg
aGFybWZ1bCwgc28gdGhhdCdzIHdoYXQgd2UgZG8uCiAgICAgICAgIGluZGV4SW5Mb2cgPSBvbGRJ
bmRleEluTG9nOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChT
aGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
RGlkbid0IGZpbmQgaXQuXG4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH07CkBAIC0y
ODYsMTAgKzI4OCwxMCBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNT
dGF0ZSogZXhlYykKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSB2aXNpdG9yLT5jYWxsRnJhbWUoKTsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgRXhhbWluaW5nICIsIFJhd1BvaW50ZXIoY2FsbEZyYW1lKSwg
IlxuIik7CiAgICAgICAgICAgICBpZiAoY2FsbEZyYW1lID09IGhpZ2hlc3RQb2ludFNpbmNlTGFz
dFRpbWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBp
ZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgQmFpbGluZyBhdCAiLCBSYXdQb2ludGVyKGNhbGxGcmFtZSksICIgYmVjYXVz
ZSBpdCdzIHRoZSBoaWdoZXN0IHBvaW50IHNpbmNlIGxhc3QgdGltZS5cbiIpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CiAgICAgICAgICAgICB9CkBAIC0zMTIs
NyArMzE0LDcgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBjb25kaXRpb24gcHJvdGVjdHMgdXMgZnJv
bSB0aGUgY2FzZSB3aGVyZSBhZHZhbmNlSW5kZXhJbkxvZ1RvIGRpZG4ndCBmaW5kCiAgICAgICAg
ICAgICAgICAgLy8gYW55dGhpbmcuCiAgICAgICAgICAgICAgICAgJiYgbV9sb2dbaW5kZXhJbkxv
Z10uZnJhbWUgPT0gdG9QdXNoLmxhc3QoKS5mcmFtZSkgewotICAgICAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBHb2luZyB0byBsb29wIHRocm91
Z2ggdG8gZmluZCB0YWlsIGRlbGV0ZWQgZnJhbWVzIHdpdGggaW5kZXhJbkxvZyA9ICIsIGluZGV4
SW5Mb2csICIgYW5kIHB1c2gtc3RhY2sgdG9wID0gIiwgdG9QdXNoLmxhc3QoKSwgIlxuIik7CiAg
ICAgICAgICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9s
b2dbaW5kZXhJbkxvZ10uZnJhbWUgPT0gdG9QdXNoLmxhc3QoKS5mcmFtZSk7CkBAIC0zMzcsNyAr
MzM5LDcgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5Mb2ctLTsgLy8gU2tpcCBvdmVyIHRoZSB0
YWlsIHBhY2tldC4KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlm
ICghYWR2YW5jZUluZGV4SW5Mb2dUbyh0YWlsUGFja2V0LmZyYW1lLCBudWxscHRyLCBudWxscHRy
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkNhbid0IGZpbmQgcHJvbG9ndWUgcGFja2V0IGZv
ciB0YWlsOiAiLCBSYXdQb2ludGVyKHRhaWxQYWNrZXQuZnJhbWUpLCAiXG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFdlIHdlcmUgdW5hYmxlIHRvIGxvY2F0ZSB0aGUgcHJvbG9ndWUg
cGFja2V0IGZvciB0aGlzIHRhaWwgcGFja2V0LgogICAgICAgICAgICAgICAgICAgICAgICAgLy8g
VGhpcyBpcyByYXJlIGJ1dCBjYW4gaGFwcGVuIGluIGEgc2l0dWF0aW9uIGxpa2U6CkBAIC0zNTcs
NyArMzU5LDcgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKICAgICAg
ICAgfSk7CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoU2hhZG93Q2hpY2tlbkludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCIgICAgUHVzaGluZzogIiwgbGlzdER1bXAodG9Q
dXNoKSwgIlxuIik7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gdG9QdXNoLnNpemUoKTsg
aS0tOykKQEAgLTM3Myw3ICszNzUsNyBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYg
dm0sIEV4ZWNTdGF0ZSogZXhlYykKICAgICB9IGVsc2UKICAgICAgICAgbV9sb2dDdXJzb3IgPSBt
X2xvZzsKIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgICBBZnRlciBwdXNoaW5nOiAiLCAqdGhpcywg
IlxuIik7CiAKICAgICAvLyBSZW1vdmUgdGFpbCBmcmFtZXMgdW50aWwgdGhlIG51bWJlciBvZiB0
YWlsIGRlbGV0ZWQgZnJhbWVzIGlzIHNtYWxsIGVub3VnaC4KQEAgLTM5OSw3ICs0MDEsNyBAQCB2
b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgICBBZnRlciBjbGVhbi11cDogIiwg
KnRoaXMsICJcbiIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0JpbmFyeVN3aXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0JpbmFyeVN3aXRj
aC5jcHAKaW5kZXggZjNkZGNmY2E5MjFjOTgxZWYyOGMwYjdkNmQ3YTUxZjVlZmQ1Mzg4Yi4uMGVh
YjU2NTE5MjUzMjllMTdiM2Y1Y2EyNWRiMTM0YWI0ZGQ5YTY3MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9CaW5hcnlTd2l0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQmluYXJ5U3dpdGNoLmNwcApAQCAtMzMsNyArMzMsOSBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorbmFtZXNwYWNlIEJpbmFyeVN3aXRjaEludGVybmFsIHsKIHN0YXRpYyBjb25z
dCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogc3RhdGljIHVuc2lnbmVkIGdsb2JhbENvdW50
ZXI7IC8vIFdlIHVzZSBhIGRpZmZlcmVudCBzZWVkIGV2ZXJ5IHRpbWUgd2UgYXJlIGludm9rZWQu
CiAKQEAgLTQ3LDcgKzQ5LDcgQEAgQmluYXJ5U3dpdGNoOjpCaW5hcnlTd2l0Y2goR1BSUmVnIHZh
bHVlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGNhc2VzLCBUeXBlIHR5cGUKICAgICBpZiAoY2Fz
ZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBp
ZiAoQmluYXJ5U3dpdGNoSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIk9yaWdp
bmFsIGNhc2VzOiAiLCBsaXN0RHVtcChjYXNlcyksICJcbiIpOwogICAgIAogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBjYXNlcy5zaXplKCk7ICsraSkKQEAgLTU1LDcgKzU3LDcgQEAgQmlu
YXJ5U3dpdGNoOjpCaW5hcnlTd2l0Y2goR1BSUmVnIHZhbHVlLCBjb25zdCBWZWN0b3I8aW50NjRf
dD4mIGNhc2VzLCBUeXBlIHR5cGUKICAgICAKICAgICBzdGQ6OnNvcnQobV9jYXNlcy5iZWdpbigp
LCBtX2Nhc2VzLmVuZCgpKTsKIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChCaW5hcnlTd2l0
Y2hJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiU29ydGVkIGNhc2VzOiAiLCBs
aXN0RHVtcChtX2Nhc2VzKSwgIlxuIik7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsg
aSA8IG1fY2FzZXMuc2l6ZSgpOyArK2kpCkBAIC0xMzcsMTEgKzEzOSwxMSBAQCBib29sIEJpbmFy
eVN3aXRjaDo6YWR2YW5jZShNYWNyb0Fzc2VtYmxlciYgaml0KQogCiB2b2lkIEJpbmFyeVN3aXRj
aDo6YnVpbGQodW5zaWduZWQgc3RhcnQsIGJvb2wgaGFyZFN0YXJ0LCB1bnNpZ25lZCBlbmQpCiB7
Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEJpbmFyeVN3aXRjaEludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICBkYXRhTG9nKCJCdWlsZGluZyB3aXRoIHN0YXJ0ID0gIiwgc3RhcnQsICIsIGhh
cmRTdGFydCA9ICIsIGhhcmRTdGFydCwgIiwgZW5kID0gIiwgZW5kLCAiXG4iKTsKIAogICAgIGF1
dG8gYXBwZW5kID0gWyZdIChjb25zdCBCcmFuY2hDb2RlJiBjb2RlKSB7Ci0gICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICBpZiAoQmluYXJ5U3dpdGNoSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICBkYXRhTG9nKCI9PT4gIiwgY29kZSwgIlxuIik7CiAgICAgICAgIG1fYnJhbmNoZXMu
YXBwZW5kKGNvZGUpOwogICAgIH07CkBAIC0xNTksNyArMTYxLDcgQEAgdm9pZCBCaW5hcnlTd2l0
Y2g6OmJ1aWxkKHVuc2lnbmVkIHN0YXJ0LCBib29sIGhhcmRTdGFydCwgdW5zaWduZWQgZW5kKQog
ICAgIGNvbnN0IHVuc2lnbmVkIGxlYWZUaHJlc2hvbGQgPSAzOwogICAgIAogICAgIGlmIChzaXpl
IDw9IGxlYWZUaHJlc2hvbGQpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChC
aW5hcnlTd2l0Y2hJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkl0J3Mg
YSBsZWFmLlxuIik7CiAgICAgICAgIAogICAgICAgICAvLyBJdCB0dXJucyBvdXQgdGhhdCBmb3Ig
ZXhhY3RseSB0aHJlZSBjYXNlcyBvciBsZXNzLCBpdCdzIGJldHRlciB0byBqdXN0IGNvbXBhcmUg
ZWFjaApAQCAtMTg2LDcgKzE4OCw3IEBAIHZvaWQgQmluYXJ5U3dpdGNoOjpidWlsZCh1bnNpZ25l
ZCBzdGFydCwgYm9vbCBoYXJkU3RhcnQsIHVuc2lnbmVkIGVuZCkKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQmluYXJ5U3dpdGNo
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJhbGxDb25zZWN1dGl2ZSA9
ICIsIGFsbENvbnNlY3V0aXZlLCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIFZlY3Rvcjx1bnNp
Z25lZCwgMz4gbG9jYWxDYXNlSW5kaWNlczsKQEAgLTIxNCw3ICsyMTYsNyBAQCB2b2lkIEJpbmFy
eVN3aXRjaDo6YnVpbGQodW5zaWduZWQgc3RhcnQsIGJvb2wgaGFyZFN0YXJ0LCB1bnNpZ25lZCBl
bmQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAo
QmluYXJ5U3dpdGNoSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkl0J3Mgbm90
IGEgbGVhZi5cbiIpOwogICAgICAgICAKICAgICAvLyBUaGVyZSBhcmUgdHdvIGRpZmZlcmVudCBz
dHJhdGVnaWVzIHdlIGNvdWxkIGNvbnNpZGVyIGhlcmU6CkBAIC0zMTQsNyArMzE2LDcgQEAgdm9p
ZCBCaW5hcnlTd2l0Y2g6OmJ1aWxkKHVuc2lnbmVkIHN0YXJ0LCBib29sIGhhcmRTdGFydCwgdW5z
aWduZWQgZW5kKQogICAgICAgICAKICAgICB1bnNpZ25lZCBtZWRpYW5JbmRleCA9IChzdGFydCAr
IGVuZCkgLyAyOwogCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEJpbmFyeVN3aXRjaEludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJtZWRpYW5JbmRleCA9ICIsIG1lZGlhbklu
ZGV4LCAiXG4iKTsKIAogICAgIC8vIFdlIHdhbnQgbWVkaWFuSW5kZXggdG8gcG9pbnQgdG8gdGhl
IHRoaW5nIHdlIHdpbGwgZG8gYSBsZXNzLXRoYW4gY29tcGFyZSBhZ2FpbnN0LiBXZSB3YW50CkBA
IC0zNDcsNyArMzQ5LDcgQEAgdm9pZCBCaW5hcnlTd2l0Y2g6OmJ1aWxkKHVuc2lnbmVkIHN0YXJ0
LCBib29sIGhhcmRTdGFydCwgdW5zaWduZWQgZW5kKQogICAgIFJFTEVBU0VfQVNTRVJUKG1lZGlh
bkluZGV4ID4gc3RhcnQpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1lZGlhbkluZGV4ICsgMSA8IGVu
ZCk7CiAgICAgICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChCaW5hcnlTd2l0Y2hJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiZml4ZWQgbWVkaWFuSW5kZXggPSAiLCBt
ZWRpYW5JbmRleCwgIlxuIik7CiAKICAgICBhcHBlbmQoQnJhbmNoQ29kZShMZXNzVGhhblRvUHVz
aCwgbWVkaWFuSW5kZXgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5j
cHAKaW5kZXggMWU0OWYyZjg1MzI1OGUzOTQxNjFjN2M0NDAwMzk5MzNmYWFhOTIxYy4uYWQ4Njlm
MjBlMmU0ZDFiOWFlMGRhNzg3NDgyZmI2ZmU3ZDI4YWZhYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5jcHAKQEAgLTIyNSw3ICsyMjUsOSBAQCB2b2lkIERhdGE6OmZp
bmFsaXplU3RhdHMoKQogfQogCiAjaWYgRU5BQkxFKExMSU5UX1NUQVRTKQorbmFtZXNwYWNlIExM
SW50RGF0YUludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2VTdGF0cyA9IGZhbHNl
OworfQogCiBzdGF0aWMgYm9vbCBjb21wYXJlU3RhdHMoY29uc3QgT3Bjb2RlU3RhdHMmIGEsIGNv
bnN0IE9wY29kZVN0YXRzJiBiKQogewpAQCAtMjgzLDcgKzI4NSw3IEBAIHZvaWQgRGF0YTo6bG9h
ZFN0YXRzKCkKICAgICB1bnNpZ25lZCBpbmRleDsKICAgICBjaGFyIG9wY29kZU5hbWVbMTAwXTsK
ICAgICB3aGlsZSAoZnNjYW5mKGZpbGUsICJbJXVdOiBmYXN0OiV6dSBzbG93OiV6dSBpZDoldSAl
c1xuIiwgJmluZGV4LCAmbG9hZGVkLmNvdW50LCAmbG9hZGVkLnNsb3dQYXRoQ291bnQsICZsb2Fk
ZWQuaWQsIG9wY29kZU5hbWUpICE9IEVPRikgewotICAgICAgICBpZiAodmVyYm9zZVN0YXRzKQor
ICAgICAgICBpZiAoTExJbnREYXRhSW50ZXJuYWw6OnZlcmJvc2VTdGF0cykKICAgICAgICAgICAg
IGRhdGFMb2dGKCJsb2FkZWQgWyV1XTogZmFzdCAlenUgc2xvdyAlenUgaWQ6JXUgJXNcbiIsIGlu
ZGV4LCBsb2FkZWQuY291bnQsIGxvYWRlZC5zbG93UGF0aENvdW50LCBsb2FkZWQuaWQsIG9wY29k
ZU5hbWUpOwogCiAgICAgICAgIE9wY29kZVN0YXRzJiBzdGF0cyA9IG9wY29kZVN0YXRzKGxvYWRl
ZC5pZCk7CkBAIC0yOTEsNyArMjkzLDcgQEAgdm9pZCBEYXRhOjpsb2FkU3RhdHMoKQogICAgICAg
ICBzdGF0cy5zbG93UGF0aENvdW50ID0gbG9hZGVkLnNsb3dQYXRoQ291bnQ7CiAgICAgfQogCi0g
ICAgaWYgKHZlcmJvc2VTdGF0cykgeworICAgIGlmIChMTEludERhdGFJbnRlcm5hbDo6dmVyYm9z
ZVN0YXRzKSB7CiAgICAgICAgIGRhdGFMb2dGKCJBZnRlciBsb2FkaW5nIGZyb20gJXMsICIsIGZp
bGVuYW1lKTsKICAgICAgICAgZHVtcFN0YXRzKCk7CiAgICAgfQpAQCAtMzMwLDcgKzMzMiw3IEBA
IHZvaWQgRGF0YTo6c2F2ZVN0YXRzKCkKICAgICAgICAgaWYgKCFzdGF0cy5jb3VudCAmJiAhc3Rh
dHMuc2xvd1BhdGhDb3VudCkKICAgICAgICAgICAgIGJyZWFrOyAvLyBzdGF0cyBhcmUgc29ydGVk
LiBJZiB3ZSBlbmNvdW50ZXJlZCAwIGNvdW50cywgdGhlbiB0aGVyZSBhcmUgbm8gbW9yZSBub24t
emVybyBjb3VudHMuCiAKLSAgICAgICAgaWYgKHZlcmJvc2VTdGF0cykKKyAgICAgICAgaWYgKExM
SW50RGF0YUludGVybmFsOjp2ZXJib3NlU3RhdHMpCiAgICAgICAgICAgICBkYXRhTG9nRigic2F2
ZWQgWyV1XTogZmFzdDolenUgc2xvdzolenUgaWQ6JXUgJXNcbiIsIGluZGV4LCBzdGF0cy5jb3Vu
dCwgc3RhdHMuc2xvd1BhdGhDb3VudCwgc3RhdHMuaWQsIG9wY29kZU5hbWVzW3N0YXRzLmlkXSk7
CiAKICAgICAgICAgZnByaW50ZihmaWxlLCAiWyV1XTogZmFzdDolenUgc2xvdzolenUgaWQ6JXUg
JXNcbiIsIGluZGV4LCBzdGF0cy5jb3VudCwgc3RhdHMuc2xvd1BhdGhDb3VudCwgc3RhdHMuaWQs
IG9wY29kZU5hbWVzW3N0YXRzLmlkXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggOGY3MTE3YjdmNjE0MmJhMDZhZTcxY2U3Y2U2
ZGRmM2ExNjdlNzcxNy4uM2I3MWEzMDk2N2VhMzk4ZDU5MjkyYjM5OWNiM2VkYjU2MDVhNGIxNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cApAQCAtMTM2Niw3ICsxMzY2LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvUHJpdmF0ZUZ1bmNBcHBlbmRNZW1jcHkoRXhlY1N0YXRlKiBleGVjKQogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLSBBcnJheVByb3RvdHlwZS5jb25zdHJ1Y3RvciBXYXRjaHBvaW50IC0t
LS0tLS0tLS0tLS0tLS0tLQogCituYW1lc3BhY2UgQXJyYXlQcm90b3R5cGVJbnRlcm5hbCB7CiBz
dGF0aWMgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIEFycmF5UHJvdG90eXBlQWRh
cHRpdmVJbmZlcnJlZFByb3BlcnR5V2F0Y2hwb2ludCA6IHB1YmxpYyBBZGFwdGl2ZUluZmVycmVk
UHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlIHsKIHB1YmxpYzoKQEAgLTEzODgsNyArMTM5MCw3
IEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OnRyeUluaXRpYWxpemVTcGVjaWVzV2F0Y2hwb2ludChF
eGVjU3RhdGUqIGV4ZWMpCiAKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQXJyYXlQcm90b3R5cGVJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiSW5pdGlhbGl6aW5nIEFycmF5IHNwZWNpZXMgd2F0
Y2hwb2ludHMgZm9yIEFycmF5LnByb3RvdHlwZTogIiwgcG9pbnRlckR1bXAodGhpcyksICIgd2l0
aCBzdHJ1Y3R1cmU6ICIsIHBvaW50ZXJEdW1wKHRoaXMtPnN0cnVjdHVyZSgpKSwgIlxuYW5kIEFy
cmF5OiAiLCBwb2ludGVyRHVtcCh0aGlzLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlDb25zdHJ1Y3Rv
cigpKSwgIiB3aXRoIHN0cnVjdHVyZTogIiwgcG9pbnRlckR1bXAodGhpcy0+Z2xvYmFsT2JqZWN0
KCktPmFycmF5Q29uc3RydWN0b3IoKS0+c3RydWN0dXJlKCkpLCAiXG4iKTsKICAgICAvLyBGaXJz
dCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBBcnJheS5wcm90b3R5cGUuY29uc3RydWN0
b3IgcHJvcGVydHkgcG9pbnRzIHRvIEFycmF5CiAgICAgLy8gYW5kIHRoYXQgQXJyYXlbU3ltYm9s
LnNwZWNpZXNdIGlzIHRoZSBwcmltb3JkaWFsIEdldHRlclNldHRlci4KQEAgLTE0NjYsNyArMTQ2
OCw3IEBAIHZvaWQgQXJyYXlQcm90b3R5cGVBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlXYXRjaHBv
aW50OjpoYW5kbGVGaXJlKGNvbnN0IEZpcmVEZXRhCiAKICAgICBTdHJpbmdGaXJlRGV0YWlsIHN0
cmluZ0RldGFpbChvdXQudG9DU3RyaW5nKCkuZGF0YSgpKTsKIAotICAgIGlmICh2ZXJib3NlKQor
ICAgIGlmIChBcnJheVByb3RvdHlwZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBXVEY6OmRh
dGFMb2coc3RyaW5nRGV0YWlsLCAiXG4iKTsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2FycmF5UHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKaW5kZXggNTQ5M2Y4ZjcwYTM1
NzMyMWYxNjdkZTFjNTJiNGYzNTI5OTg4MDQ4Yy4uZmM4Yjg0ODJiZWZkNmIwYzA3NGI0ZWU4ZmQy
N2JhYTIyMjU4YjA4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3JJbnN0YW5jZS5jcHAKQEAgLTEwOCw0MSArMTA4LDYgQEAgc3RhdGljIHZvaWQgYXBwZW5kU291
cmNlVG9FcnJvcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRXJyb3JJbnN0YW5jZSogZXhjZXB0aW9u
LAogCiB9CiAKLWNsYXNzIEZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3Ig
ewotcHVibGljOgotICAgIEZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3Io
Q2FsbEZyYW1lKiBzdGFydENhbGxGcmFtZSkKLSAgICAgICAgOiBtX3N0YXJ0Q2FsbEZyYW1lKHN0
YXJ0Q2FsbEZyYW1lKQotICAgICAgICAsIG1fZm91bmRDYWxsRnJhbWUobnVsbHB0cikKLSAgICAg
ICAgLCBtX2ZvdW5kU3RhcnRDYWxsRnJhbWUoZmFsc2UpCi0gICAgICAgICwgbV9pbmRleCgwKQot
ICAgIHsgfQotCi0gICAgU3RhY2tWaXNpdG9yOjpTdGF0dXMgb3BlcmF0b3IoKShTdGFja1Zpc2l0
b3ImIHZpc2l0b3IpCi0gICAgewotICAgICAgICBpZiAoIW1fZm91bmRTdGFydENhbGxGcmFtZSAm
JiAodmlzaXRvci0+Y2FsbEZyYW1lKCkgPT0gbV9zdGFydENhbGxGcmFtZSkpCi0gICAgICAgICAg
ICBtX2ZvdW5kU3RhcnRDYWxsRnJhbWUgPSB0cnVlOwotCi0gICAgICAgIGlmIChtX2ZvdW5kU3Rh
cnRDYWxsRnJhbWUpIHsKLSAgICAgICAgICAgIGlmICh2aXNpdG9yLT5jYWxsRnJhbWUoKS0+Y29k
ZUJsb2NrKCkpIHsKLSAgICAgICAgICAgICAgICBtX2ZvdW5kQ2FsbEZyYW1lID0gdmlzaXRvci0+
Y2FsbEZyYW1lKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1faW5kZXgrKzsKLSAgICAgICAgfQotCi0gICAg
ICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwotICAgIH0KLQotICAgIENhbGxGcmFt
ZSogZm91bmRDYWxsRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZvdW5kQ2FsbEZyYW1lOyB9Ci0g
ICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9Ci0KLXByaXZhdGU6
Ci0gICAgQ2FsbEZyYW1lKiBtX3N0YXJ0Q2FsbEZyYW1lOwotICAgIENhbGxGcmFtZSogbV9mb3Vu
ZENhbGxGcmFtZTsKLSAgICBib29sIG1fZm91bmRTdGFydENhbGxGcmFtZTsKLSAgICB1bnNpZ25l
ZCBtX2luZGV4OwotfTsKLQogdm9pZCBFcnJvckluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIFZNJiB2bSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBib29sIHVzZUN1cnJl
bnRGcmFtZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAppbmRleCA3
ZWYwMDA4ZDgzN2NjZjkxMzcxNGYzYTM1YzM5NTUxOTk4YjZmOTdmLi5jOTIwYWNmNDdlODJjOTUy
ZThmYjZlMzA3ZDliMGZlM2Y1YTgyYmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKQEAgLTQ5LDcgKzQ5LDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gSW50bERhdGVUaW1lRm9ybWF0OjpzX2lu
Zm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEludGxEYXRlVGltZUZvcm1hdCkgfTsKIAorbmFtZXNwYWNlIEludGxEVEZJ
bnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgcmVsZXZhbnRFeHRlbnNpb25LZXlz
WzJdID0geyAiY2EiLCAibnUiIH07Cit9CisKIHN0YXRpYyBjb25zdCBzaXplX3QgaW5kZXhPZkV4
dGVuc2lvbktleUNhID0gMDsKIHN0YXRpYyBjb25zdCBzaXplX3QgaW5kZXhPZkV4dGVuc2lvbktl
eU51ID0gMTsKIApAQCAtMTg5LDYgKzE5Miw3IEBAIHN0YXRpYyBTdHJpbmcgY2Fub25pY2FsaXpl
VGltZVpvbmVOYW1lKGNvbnN0IFN0cmluZyYgdGltZVpvbmVOYW1lKQogICAgIHJldHVybiBjYW5v
bmljYWw7CiB9CiAKK25hbWVzcGFjZSBJbnRsRFRGSW50ZXJuYWwgewogc3RhdGljIFZlY3RvcjxT
dHJpbmc+IGxvY2FsZURhdGEoY29uc3QgU3RyaW5nJiBsb2NhbGUsIHNpemVfdCBrZXlJbmRleCkK
IHsKICAgICBWZWN0b3I8U3RyaW5nPiBrZXlMb2NhbGVEYXRhOwpAQCAtMzE5LDYgKzMyMyw3IEBA
IHN0YXRpYyBKU09iamVjdCogdG9EYXRlVGltZU9wdGlvbnNBbnlEYXRlKEV4ZWNTdGF0ZSYgZXhl
YywgSlNWYWx1ZSBvcmlnaW5hbE9wdGlvCiAgICAgLy8gOS4gUmV0dXJuIG9wdGlvbnMuCiAgICAg
cmV0dXJuIG9wdGlvbnM7CiB9Cit9CiAKIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0OjpzZXRGb3Jt
YXRzRnJvbVBhdHRlcm4oY29uc3QgU3RyaW5nVmlldyYgcGF0dGVybikKIHsKQEAgLTQzMyw3ICs0
MzgsNyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0
KEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSBsb2NhbAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CiAKICAgICAvLyA1LiBMZXQgb3B0aW9ucyBiZSBUb0RhdGVUaW1lT3B0
aW9ucyhvcHRpb25zLCAiYW55IiwgImRhdGUiKS4KLSAgICBKU09iamVjdCogb3B0aW9ucyA9IHRv
RGF0ZVRpbWVPcHRpb25zQW55RGF0ZShleGVjLCBvcmlnaW5hbE9wdGlvbnMpOworICAgIEpTT2Jq
ZWN0KiBvcHRpb25zID0gSW50bERURkludGVybmFsOjp0b0RhdGVUaW1lT3B0aW9uc0FueURhdGUo
ZXhlYywgb3JpZ2luYWxPcHRpb25zKTsKICAgICAvLyA2LiBSZXR1cm5JZkFicnVwdChvcHRpb25z
KS4KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCkBAIC00NTAsNyAr
NDU1LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1h
dChFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUgbG9jYWwKICAgICAvLyAxMS4gTGV0IGxvY2FsZURh
dGEgYmUgdGhlIHZhbHVlIG9mICVEYXRlVGltZUZvcm1hdCUuW1tsb2NhbGVEYXRhXV0uCiAgICAg
Ly8gMTIuIExldCByIGJlIFJlc29sdmVMb2NhbGUoICVEYXRlVGltZUZvcm1hdCUuW1thdmFpbGFi
bGVMb2NhbGVzXV0sIHJlcXVlc3RlZExvY2FsZXMsIG9wdCwgJURhdGVUaW1lRm9ybWF0JS5bW3Jl
bGV2YW50RXh0ZW5zaW9uS2V5c11dLCBsb2NhbGVEYXRhKS4KICAgICBjb25zdCBIYXNoU2V0PFN0
cmluZz4gYXZhaWxhYmxlTG9jYWxlcyA9IGV4ZWMuanNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCkt
PmludGxEYXRlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKTsKLSAgICBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiByZXNvbHZlZCA9IHJlc29sdmVMb2NhbGUoZXhlYywgYXZhaWxhYmxlTG9jYWxl
cywgcmVxdWVzdGVkTG9jYWxlcywgbG9jYWxlT3B0LCByZWxldmFudEV4dGVuc2lvbktleXMsIFdU
Rl9BUlJBWV9MRU5HVEgocmVsZXZhbnRFeHRlbnNpb25LZXlzKSwgbG9jYWxlRGF0YSk7CisgICAg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcmVzb2x2ZWQgPSByZXNvbHZlTG9jYWxlKGV4ZWMsIGF2
YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGxvY2FsZU9wdCwgSW50bERURkludGVy
bmFsOjpyZWxldmFudEV4dGVuc2lvbktleXMsIFdURl9BUlJBWV9MRU5HVEgoSW50bERURkludGVy
bmFsOjpyZWxldmFudEV4dGVuc2lvbktleXMpLCBJbnRsRFRGSW50ZXJuYWw6OmxvY2FsZURhdGEp
OwogCiAgICAgLy8gMTMuIFNldCBkYXRlVGltZUZvcm1hdC5bW2xvY2FsZV1dIHRvIHRoZSB2YWx1
ZSBvZiByLltbbG9jYWxlXV0uCiAgICAgbV9sb2NhbGUgPSByZXNvbHZlZC5nZXQodm0ucHJvcGVy
dHlOYW1lcy0+bG9jYWxlLnN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKaW5kZXggMjI0NzQ3OWJhNDQ4ZGIxYTRjODE3
ZDJmNzdjZmMzYzUyZjNmYzY0Yy4uYzJmYjgzNDYzYTM0NDQ3N2EwZmI0ZWZiNGE0MzVmZTNlZTc3
MjcxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdC5jcHAKQEAgLTg4LDEyICs4OCwxNCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2JvdW5kRm9ybWF0KTsKIH0KIAorbmFtZXNwYWNlIElu
dGxORkludGVybmFsIHsKIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBsb2NhbGVEYXRhKGNvbnN0IFN0
cmluZyYgbG9jYWxlLCBzaXplX3Qga2V5SW5kZXgpCiB7CiAgICAgLy8gOS4xIEludGVybmFsIHNs
b3RzIG9mIFNlcnZpY2UgQ29uc3RydWN0b3JzICYgMTEuMi4zIEludGVybmFsIHNsb3RzIChFQ01B
LTQwMiAyLjApCiAgICAgQVNTRVJUX1VOVVNFRChrZXlJbmRleCwgIWtleUluZGV4KTsgLy8gVGhl
IGluZGV4IG9mIHRoZSBleHRlbnNpb24ga2V5ICJudSIgaW4gcmVsZXZhbnRFeHRlbnNpb25LZXlz
IGlzIDAuCiAgICAgcmV0dXJuIG51bWJlcmluZ1N5c3RlbXNGb3JMb2NhbGUobG9jYWxlKTsKIH0K
K30KIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBjb21wdXRlQ3VycmVuY3lTb3J0S2V5KGNvbnN0
IFN0cmluZyYgY3VycmVuY3kpCiB7CkBAIC0xOTIsNyArMTk0LDcgQEAgdm9pZCBJbnRsTnVtYmVy
Rm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUg
bG9jYWxlcywKICAgICAvLyAxMS4gTGV0IGxvY2FsZURhdGEgYmUgJU51bWJlckZvcm1hdCUuW1ts
b2NhbGVEYXRhXV0uCiAgICAgLy8gMTIuIExldCByIGJlIFJlc29sdmVMb2NhbGUoJU51bWJlckZv
cm1hdCUuW1thdmFpbGFibGVMb2NhbGVzXV0sIHJlcXVlc3RlZExvY2FsZXMsIG9wdCwgJU51bWJl
ckZvcm1hdCUuW1tyZWxldmFudEV4dGVuc2lvbktleXNdXSwgbG9jYWxlRGF0YSkuCiAgICAgYXV0
byYgYXZhaWxhYmxlTG9jYWxlcyA9IHN0YXRlLmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5p
bnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOwotICAgIGF1dG8gcmVzdWx0ID0gcmVz
b2x2ZUxvY2FsZShzdGF0ZSwgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0
LCByZWxldmFudEV4dGVuc2lvbktleXMsIFdURl9BUlJBWV9MRU5HVEgocmVsZXZhbnRFeHRlbnNp
b25LZXlzKSwgbG9jYWxlRGF0YSk7CisgICAgYXV0byByZXN1bHQgPSByZXNvbHZlTG9jYWxlKHN0
YXRlLCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHQsIHJlbGV2YW50RXh0
ZW5zaW9uS2V5cywgV1RGX0FSUkFZX0xFTkdUSChyZWxldmFudEV4dGVuc2lvbktleXMpLCBJbnRs
TkZJbnRlcm5hbDo6bG9jYWxlRGF0YSk7CiAKICAgICAvLyAxMy4gU2V0IG51bWJlckZvcm1hdC5b
W2xvY2FsZV1dIHRvIHRoZSB2YWx1ZSBvZiByLltbbG9jYWxlXV0uCiAgICAgbV9sb2NhbGUgPSBy
ZXN1bHQuZ2V0KEFTQ0lJTGl0ZXJhbCgibG9jYWxlIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5jcHAKaW5k
ZXggMGFiYzUzMDg2OTdlYjI1MzQxZmFkMTJmMDNkZTA4YzBhMWYxNWY0NS4uNzhjOWU2NDA0ZjFi
ZjFkMzlkNTY0OGNkNGE0OWVjNDZjMmEwNjAwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuY3BwCkBAIC0z
Miw2ICszMiw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisjdW5kZWYgTUFLRV9TX0lORk8KICNk
ZWZpbmUgTUFLRV9TX0lORk8odHlwZSkgXAogICAgIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZv
IEpTIyN0eXBlIyNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyJGdW5jdGlvbiIsICZKUyMjdHlwZSMj
Q29uc3RydWN0b3I6OkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKUyMjdHlwZSMjQ29uc3RydWN0b3IpfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlQcm90b3R5cGVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwCmluZGV4IDY2
ZDc0ZTY5ZWNhNGYxNzI1ZTgyYzEyZWFkM2FkZGUyNGJlOTI5ZmEuLmIxNDM0NTViMGQxMWNkMzky
ZTUyMWMwYjhiMGE4MmEwMzJhODRiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwCkBAIC0zNSw2ICszNSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogY29uc3QgQ2xhc3NJbmZvIEpTVHlwZWRBcnJheVZpZXdQcm90
b3R5cGU6OnNfaW5mbyA9IHsiUHJvdG90eXBlIiwgJkpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU6
OkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwKICAgICBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUpfTsKIAorI3VuZGVmIE1BS0VfU19JTkZPCiAjZGVm
aW5lIE1BS0VfU19JTkZPKHR5cGUpIFwKICAgICB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBK
UyMjdHlwZSMjUHJvdG90eXBlOjpzX2luZm8gPSB7I3R5cGUgIlByb3RvdHlwZSIsICZKUyMjdHlw
ZSMjUHJvdG90eXBlOjpCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlMjI3R5cGUjI1Byb3RvdHlwZSl9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5cy5jcHAKaW5kZXggZDBhOTNjNDI1NTc0OGU3ZTU4NDFh
Njc4ODFhMTEyNGE0NjY5ZDBkNi4uMDkxODlkMmM1Y2E1YjUzNWRhNDMzMzE0NjkzNGJlY2ZkMzAz
ZjVjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFy
cmF5cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5
cy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyN1bmRlZiBNQUtF
X1NfSU5GTwogI2RlZmluZSBNQUtFX1NfSU5GTyh0eXBlKSBcCiAgICAgdGVtcGxhdGU8PiBjb25z
dCBDbGFzc0luZm8gSlMjI3R5cGUjI0FycmF5OjpzX2luZm8gPSB7IFwKICAgICAgICAgI3R5cGUg
IkFycmF5IiwgJkpTIyN0eXBlIyNBcnJheTo6QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsR2V0dGVy
RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbEdldHRlckZ1
bmN0aW9uLmNwcAppbmRleCAzZjZmMjgyMTUzZTA0YjMzYjEwZDkzNDA5NmNkNWIxNjI0NmYxMGNh
Li5iYTQ2YjMwMmM4MmE0MmI3YmY2ZGRkODhmMDQ2ZGU0ODVkODYwMWUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsR2V0dGVyRnVuY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxHZXR0ZXJGdW5jdGlvbi5jcHAKQEAg
LTMzLDE0ICszMywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIE51bGxH
ZXR0ZXJGdW5jdGlvbjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE51bGxHZXR0ZXJGdW5jdGlvbikgfTsK
IAorbmFtZXNwYWNlIE51bGxHZXR0ZXJGdW5jdGlvbkludGVybmFsIHsKIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZXR1cm5VbmRlZmluZWQoRXhlY1N0YXRlKikKIHsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQorfQogCiBDYWxs
VHlwZSBOdWxsR2V0dGVyRnVuY3Rpb246OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBj
YWxsRGF0YSkKIHsKLSAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsUmV0dXJuVW5k
ZWZpbmVkOworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IE51bGxHZXR0ZXJGdW5jdGlv
bkludGVybmFsOjpjYWxsUmV0dXJuVW5kZWZpbmVkOwogICAgIHJldHVybiBDYWxsVHlwZTo6SG9z
dDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNl
dHRlckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0
ZXJGdW5jdGlvbi5jcHAKaW5kZXggNTBjNWI4MGRjZjk1YTUzOTBkMWU2MDEwMWVlYmQ2YjU2NjY1
OWYyOC4uNmFmMGQxYTg1ZGYyMGZmMDgxYTk4N2NmZGRkYTY3ZDUxYWI2ZTBlNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3Bw
CkBAIC03MCw2ICs3MCw3IEBAIHN0YXRpYyBib29sIGNhbGxlcklzU3RyaWN0KEV4ZWNTdGF0ZSog
ZXhlYykKICAgICByZXR1cm4gaXRlci5jYWxsZXJJc1N0cmljdCgpOwogfQogCituYW1lc3BhY2Ug
TnVsbFNldHRlckZ1bmN0aW9uSW50ZXJuYWwgewogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbFJldHVyblVuZGVmaW5lZChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKQEAgLTc5LDEwICs4MCwxMSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsUmV0dXJuVW5kZWZpbmVkKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJTZXR0aW5nIGEgcHJvcGVydHkgdGhhdCBoYXMgb25seSBhIGdldHRlciIp
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KK30KIAog
Q2FsbFR5cGUgTnVsbFNldHRlckZ1bmN0aW9uOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0
YSYgY2FsbERhdGEpCiB7Ci0gICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbFJldHVy
blVuZGVmaW5lZDsKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBOdWxsU2V0dGVyRnVu
Y3Rpb25JbnRlcm5hbDo6Y2FsbFJldHVyblVuZGVmaW5lZDsKICAgICByZXR1cm4gQ2FsbFR5cGU6
Okhvc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQ
cm90b3R5cGUuY3BwCmluZGV4IGMxN2I1ZWJkZmExMmEwZjNlY2I2MmU2NjhhNjY5ZjNiYWQ3ZTdj
NTguLjYxM2NkMDkyNWViNTY3MDE5ZDA0ZDhlNTk0OGZhMjM4Zjk0YjA5NDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcApAQCAtMzUs
NyArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL2R0
b2EvZG91YmxlLWNvbnZlcnNpb24uaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdURjo6ZG91YmxlX2Nv
bnZlcnNpb247Cit1c2luZyBEb3VibGVUb1N0cmluZ0NvbnZlcnRlciA9IFdURjo6ZG91YmxlX2Nv
bnZlcnNpb246OkRvdWJsZVRvU3RyaW5nQ29udmVydGVyOwogCiAvLyBUbyBhdm9pZCBjb25mbGlj
dCB3aXRoIFdURjo6U3RyaW5nQnVpbGRlci4KIHR5cGVkZWYgV1RGOjpkb3VibGVfY29udmVyc2lv
bjo6U3RyaW5nQnVpbGRlciBEb3VibGVDb252ZXJzaW9uU3RyaW5nQnVpbGRlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNw
cAppbmRleCAzZGNhZWFhZmU1YjM4ZmJhNWJhOGFmOTc2NjBmNTFiYzY1OWZkMjQ1Li4wODc4MDQ2
OTVjZGYzNWE3NDk0YmJkNTg5NDQyOTA0ZWI5Y2E3MDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlRGVmZXJyZWRUaW1lci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZURlZmVycmVkVGltZXIuY3BwCkBAIC0zNCw3
ICszNCw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCituYW1lc3BhY2UgUHJvbWlzZURlZmVycmVk
VGltZXJJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAK
IFByb21pc2VEZWZlcnJlZFRpbWVyOjpQcm9taXNlRGVmZXJyZWRUaW1lcihWTSYgdm0pCiAgICAg
OiBCYXNlKCZ2bSkKQEAgLTU1LDcgKzU3LDcgQEAgdm9pZCBQcm9taXNlRGVmZXJyZWRUaW1lcjo6
ZG9Xb3JrKCkKICAgICAgICAgSlNQcm9taXNlRGVmZXJyZWQqIHRpY2tldDsKICAgICAgICAgVGFz
ayB0YXNrOwogICAgICAgICBzdGQ6OnRpZSh0aWNrZXQsIHRhc2spID0gbV90YXNrcy50YWtlTGFz
dCgpOwotICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiRG9pbmcgd29yayBvbiBwcm9taXNl
OiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworICAgICAgICBkYXRhTG9nTG5JZihQcm9taXNlRGVm
ZXJyZWRUaW1lckludGVybmFsOjp2ZXJib3NlLCAiRG9pbmcgd29yayBvbiBwcm9taXNlOiAiLCBS
YXdQb2ludGVyKHRpY2tldCkpOwogCiAgICAgICAgIC8vIFdlIG1heSBoYXZlIGFscmVhZHkgY2Fu
Y2VsZWQgdGhlc2UgcHJvbWlzZXMuCiAgICAgICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5jb250
YWlucyh0aWNrZXQpKSB7CkBAIC0xMDUsMTEgKzEwNywxMSBAQCB2b2lkIFByb21pc2VEZWZlcnJl
ZFRpbWVyOjphZGRQZW5kaW5nUHJvbWlzZShKU1Byb21pc2VEZWZlcnJlZCogdGlja2V0LCBWZWN0
b3I8UwogCiAgICAgYXV0byByZXN1bHQgPSBtX3BlbmRpbmdQcm9taXNlcy5hZGQodGlja2V0LCBW
ZWN0b3I8U3Ryb25nPEpTQ2VsbD4+KCkpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewot
ICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiQWRkaW5nIG5ldyBwZW5kaW5nIHByb21pc2U6
ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CisgICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VEZWZl
cnJlZFRpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJBZGRpbmcgbmV3IHBlbmRpbmcgcHJvbWlzZTog
IiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKICAgICAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJv
bmc8SlNDZWxsPigqbV92bSwgdGlja2V0KSk7CiAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSBXVEZNb3ZlKGRlcGVuZGVuY2llcyk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZGF0YUxv
Z0xuSWYodmVyYm9zZSwgIkFkZGluZyBuZXcgZGVwZW5kZW5jaWVzIGZvciBwcm9taXNlOiAiLCBS
YXdQb2ludGVyKHRpY2tldCkpOworICAgICAgICBkYXRhTG9nTG5JZihQcm9taXNlRGVmZXJyZWRU
aW1lckludGVybmFsOjp2ZXJib3NlLCAiQWRkaW5nIG5ldyBkZXBlbmRlbmNpZXMgZm9yIHByb21p
c2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CiAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUuYXBwZW5kVmVjdG9yKGRlcGVuZGVuY2llcyk7CiAgICAgfQogCkBAIC0xMjQsNyArMTI2LDcg
QEAgYm9vbCBQcm9taXNlRGVmZXJyZWRUaW1lcjo6Y2FuY2VsUGVuZGluZ1Byb21pc2UoSlNQcm9t
aXNlRGVmZXJyZWQqIHRpY2tldCkKICAgICBib29sIHJlc3VsdCA9IG1fcGVuZGluZ1Byb21pc2Vz
LnJlbW92ZSh0aWNrZXQpOwogCiAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgZGF0YUxvZ0xuSWYo
dmVyYm9zZSwgIkNhbmNlbGluZyBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworICAg
ICAgICBkYXRhTG9nTG5JZihQcm9taXNlRGVmZXJyZWRUaW1lckludGVybmFsOjp2ZXJib3NlLCAi
Q2FuY2VsaW5nIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CiAKICAgICByZXR1cm4g
cmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlw
ZVByb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxl
ci5jcHAKaW5kZXggZTMxNWM0MTJiOTMzMzBiMDVhZjY2NDA3MGNhMTE2Y2Q1M2U5MmRiNy4uMGY4
NWVmODgyODVjMmU4YjgxZDVmZjAwYmNhYTJiOTljZjZkYzgwYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwCkBAIC0zMiw3ICszMiw5IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCituYW1lc3BhY2UgVHlwZVByb2ZpbGVySW50ZXJuYWwgewogc3Rh
dGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBUeXBlUHJvZmlsZXI6OlR5cGVQ
cm9maWxlcigpCiAgICAgOiBtX25leHRVbmlxdWVWYXJpYWJsZUlEKDEpCkBAIC01OSw3ICs2MSw3
IEBAIHZvaWQgVHlwZVByb2ZpbGVyOjpsb2dUeXBlc0ZvclR5cGVMb2NhdGlvbihUeXBlTG9jYXRp
b24qIGxvY2F0aW9uLCBWTSYgdm0pCiAKIHZvaWQgVHlwZVByb2ZpbGVyOjppbnNlcnROZXdMb2Nh
dGlvbihUeXBlTG9jYXRpb24qIGxvY2F0aW9uKQogewotICAgIGlmICh2ZXJib3NlKQorICAgIGlm
IChUeXBlUHJvZmlsZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZ0YoIlJlZ2lz
dGVyaW5nIGxvY2F0aW9uOjogZGl2b3RTdGFydDoldSwgZGl2b3RFbmQ6JXVcbiIsIGxvY2F0aW9u
LT5tX2Rpdm90U3RhcnQsIGxvY2F0aW9uLT5tX2Rpdm90RW5kKTsKIAogICAgIGlmICghbV9idWNr
ZXRNYXAuY29udGFpbnMobG9jYXRpb24tPm1fc291cmNlSUQpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcAppbmRleCA4NWM0OWQwNDZi
YWZlYWM3YzJmZGVhMjE1MjU4ZDNjNDRlZmNkMTE1Li41M2Q3M2U4OGIxNGUzODZiNzM3OGI4ODI0
N2I3NzY5NjRmNmI1N2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlUHJvZmlsZXJMb2cuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVQcm9maWxlckxvZy5jcHAKQEAgLTM3LDcgKzM3LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKK25hbWVzcGFjZSBUeXBlUHJvZmlsZXJMb2dJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9v
bCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIHZvaWQgVHlwZVByb2ZpbGVyTG9nOjppbml0aWFsaXpl
TG9nKCkKIHsKQEAgLTU2LDcgKzU4LDcgQEAgVHlwZVByb2ZpbGVyTG9nOjp+VHlwZVByb2ZpbGVy
TG9nKCkKIHZvaWQgVHlwZVByb2ZpbGVyTG9nOjpwcm9jZXNzTG9nRW50cmllcyhjb25zdCBTdHJp
bmcmIHJlYXNvbikKIHsKICAgICBkb3VibGUgYmVmb3JlID0gMDsKLSAgICBpZiAodmVyYm9zZSkg
eworICAgIGlmIChUeXBlUHJvZmlsZXJMb2dJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICBk
YXRhTG9nKCJQcm9jZXNzIGNhbGxlcjonIiwgcmVhc29uLCAiJyIpOwogICAgICAgICBiZWZvcmUg
PSBjdXJyZW50VGltZU1TKCk7CiAgICAgfQpAQCAtOTUsNyArOTcsNyBAQCB2b2lkIFR5cGVQcm9m
aWxlckxvZzo6cHJvY2Vzc0xvZ0VudHJpZXMoY29uc3QgU3RyaW5nJiByZWFzb24pCiAgICAgLy8g
cGF1c2VzIGFuZCBjYXVzZXMgdGhlIGNvbGxlY3RvciB0byBtYXJrIHRoZSBsb2cuCiAgICAgbV9j
dXJyZW50TG9nRW50cnlQdHIgPSBtX2xvZ1N0YXJ0UHRyOwogCi0gICAgaWYgKHZlcmJvc2UpIHsK
KyAgICBpZiAoVHlwZVByb2ZpbGVyTG9nSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZG91
YmxlIGFmdGVyID0gY3VycmVudFRpbWVNUygpOwogICAgICAgICBkYXRhTG9nRigiIFByb2Nlc3Np
bmcgdGhlIGxvZyB0b29rOiAnJWYnIG1zXG4iLCBhZnRlciAtIGJlZm9yZSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4
IDAwYWMzYzFhZGJkN2FjODJkMjE1OTBmNjAxMjhiOTRhNDAwYzYyOGUuLmFkN2Q2MjFlYzg3ODg1
YWMwMzZkODEzMTNkNWIwZmEwOTFhNGVmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTc2LDcgKzc2LDkgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIHVzaW5nIG5hbWVzcGFjZSBCMzsKIAogbmFtZXNwYWNl
IHsKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIFdhc21CM0lSR2VuZXJh
dG9ySW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogfQog
CiBjbGFzcyBCM0lSR2VuZXJhdG9yIHsKQEAgLTE1NjYsOSArMTU2OCw5IEBAIEV4cGVjdGVkPHN0
ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiwgU3RyaW5nPiBwYXJzZUFuZENvbXBpbGUo
Q29tcGlsYXRpb25DCiAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpCiAgICAgICAgIHZhbGlkYXRl
KHByb2NlZHVyZSwgIkFmdGVyIHBhcnNpbmc6XG4iKTsKIAotICAgIGRhdGFMb2dJZih2ZXJib3Nl
LCAiUHJlIFNTQTogIiwgcHJvY2VkdXJlKTsKKyAgICBkYXRhTG9nSWYoV2FzbUIzSVJHZW5lcmF0
b3JJbnRlcm5hbDo6dmVyYm9zZSwgIlByZSBTU0E6ICIsIHByb2NlZHVyZSk7CiAgICAgZml4U1NB
KHByb2NlZHVyZSk7Ci0gICAgZGF0YUxvZ0lmKHZlcmJvc2UsICJQb3N0IFNTQTogIiwgcHJvY2Vk
dXJlKTsKKyAgICBkYXRhTG9nSWYoV2FzbUIzSVJHZW5lcmF0b3JJbnRlcm5hbDo6dmVyYm9zZSwg
IlBvc3QgU1NBOiAiLCBwcm9jZWR1cmUpOwogICAgIAogICAgIHsKICAgICAgICAgQjM6OnByZXBh
cmVGb3JHZW5lcmF0aW9uKHByb2NlZHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQkJRUGxhbi5jcHAKaW5kZXggNTBmZWI3MzBiMDBmZGQ5ZDBmMDE2ZTM2NjkwODEwNzIyZGJh
ZGIxNS4uMjJlZGQxNjAxM2U1MTk2ZmU3NGFiZGQ4NDBjNmU0YmNjOTc1MGQwYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcApAQCAtNDksNyArNDksOSBAQAog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCituYW1lc3BhY2UgV2FzbUJCUVBs
YW5JbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIEJC
UVBsYW46OkJCUVBsYW4oVk0qIHZtLCBSZWY8TW9kdWxlSW5mb3JtYXRpb24+IGluZm8sIEFzeW5j
V29yayB3b3JrLCBDb21wbGV0aW9uVGFzayYmIHRhc2spCiAgICAgOiBCYXNlKHZtLCBXVEZNb3Zl
KGluZm8pLCBXVEZNb3ZlKHRhc2spKQpAQCAtODYsNyArODgsNyBAQCBjb25zdCBjaGFyKiBCQlFQ
bGFuOjpzdGF0ZVN0cmluZyhTdGF0ZSBzdGF0ZSkKIHZvaWQgQkJRUGxhbjo6bW92ZVRvU3RhdGUo
U3RhdGUgc3RhdGUpCiB7CiAgICAgQVNTRVJUKHN0YXRlID49IG1fc3RhdGUpOwotICAgIGRhdGFM
b2dMbklmKHZlcmJvc2UgJiYgc3RhdGUgIT0gbV9zdGF0ZSwgIm1vdmluZyB0byBzdGF0ZTogIiwg
c3RhdGVTdHJpbmcoc3RhdGUpLCAiIGZyb20gc3RhdGU6ICIsIHN0YXRlU3RyaW5nKG1fc3RhdGUp
KTsKKyAgICBkYXRhTG9nTG5JZihXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlICYmIHN0YXRl
ICE9IG1fc3RhdGUsICJtb3ZpbmcgdG8gc3RhdGU6ICIsIHN0YXRlU3RyaW5nKHN0YXRlKSwgIiBm
cm9tIHN0YXRlOiAiLCBzdGF0ZVN0cmluZyhtX3N0YXRlKSk7CiAgICAgbV9zdGF0ZSA9IHN0YXRl
OwogfQogCkBAIC05NSw5ICs5Nyw5IEBAIGJvb2wgQkJRUGxhbjo6cGFyc2VBbmRWYWxpZGF0ZU1v
ZHVsZSgpCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkluaXRpYWwpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgInN0YXJ0aW5nIHZhbGlkYXRpb24i
KTsKKyAgICBkYXRhTG9nTG5JZihXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlLCAic3RhcnRp
bmcgdmFsaWRhdGlvbiIpOwogICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lOwotICAgIGlmICh2
ZXJib3NlIHx8IE9wdGlvbnM6OnJlcG9ydENvbXBpbGVUaW1lcygpKQorICAgIGlmIChXYXNtQkJR
UGxhbkludGVybmFsOjp2ZXJib3NlIHx8IE9wdGlvbnM6OnJlcG9ydENvbXBpbGVUaW1lcygpKQog
ICAgICAgICBzdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAogICAgIHsKQEAgLTEx
MSw3ICsxMTMsNyBAQCBib29sIEJCUVBsYW46OnBhcnNlQW5kVmFsaWRhdGVNb2R1bGUoKQogCiAg
ICAgY29uc3QgYXV0byYgZnVuY3Rpb25Mb2NhdGlvbnMgPSBtX21vZHVsZUluZm9ybWF0aW9uLT5m
dW5jdGlvbkxvY2F0aW9uSW5CaW5hcnk7CiAgICAgZm9yICh1bnNpZ25lZCBmdW5jdGlvbkluZGV4
ID0gMDsgZnVuY3Rpb25JbmRleCA8IGZ1bmN0aW9uTG9jYXRpb25zLnNpemUoKTsgKytmdW5jdGlv
bkluZGV4KSB7Ci0gICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJQcm9jZXNzaW5nIGZ1bmN0
aW9uIHN0YXJ0aW5nIGF0OiAiLCBmdW5jdGlvbkxvY2F0aW9uc1tmdW5jdGlvbkluZGV4XS5zdGFy
dCwgIiBhbmQgZW5kaW5nIGF0OiAiLCBmdW5jdGlvbkxvY2F0aW9uc1tmdW5jdGlvbkluZGV4XS5l
bmQpOworICAgICAgICBkYXRhTG9nTG5JZihXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlLCAi
UHJvY2Vzc2luZyBmdW5jdGlvbiBzdGFydGluZyBhdDogIiwgZnVuY3Rpb25Mb2NhdGlvbnNbZnVu
Y3Rpb25JbmRleF0uc3RhcnQsICIgYW5kIGVuZGluZyBhdDogIiwgZnVuY3Rpb25Mb2NhdGlvbnNb
ZnVuY3Rpb25JbmRleF0uZW5kKTsKICAgICAgICAgY29uc3QgdWludDhfdCogZnVuY3Rpb25TdGFy
dCA9IG1fc291cmNlICsgZnVuY3Rpb25Mb2NhdGlvbnNbZnVuY3Rpb25JbmRleF0uc3RhcnQ7CiAg
ICAgICAgIHNpemVfdCBmdW5jdGlvbkxlbmd0aCA9IGZ1bmN0aW9uTG9jYXRpb25zW2Z1bmN0aW9u
SW5kZXhdLmVuZCAtIGZ1bmN0aW9uTG9jYXRpb25zW2Z1bmN0aW9uSW5kZXhdLnN0YXJ0OwogICAg
ICAgICBBU1NFUlQoZnVuY3Rpb25MZW5ndGggPD0gbV9zb3VyY2VMZW5ndGgpOwpAQCAtMTIwLDcg
KzEyMiw3IEBAIGJvb2wgQkJRUGxhbjo6cGFyc2VBbmRWYWxpZGF0ZU1vZHVsZSgpCiAKICAgICAg
ICAgYXV0byB2YWxpZGF0aW9uUmVzdWx0ID0gdmFsaWRhdGVGdW5jdGlvbihmdW5jdGlvblN0YXJ0
LCBmdW5jdGlvbkxlbmd0aCwgc2lnbmF0dXJlLCBtX21vZHVsZUluZm9ybWF0aW9uLmdldCgpKTsK
ICAgICAgICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0KSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9z
ZSkgeworICAgICAgICAgICAgaWYgKFdhc21CQlFQbGFuSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAg
ICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnVuY3Rpb25MZW5ndGg7ICsr
aSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KGZ1bmN0aW9uU3RhcnRbaV0pKSwgIiwgIik7CiAgICAgICAgICAgICAgICAgZGF0
YUxvZ0xuKCk7CkBAIC0xMzAsNyArMTMyLDcgQEAgYm9vbCBCQlFQbGFuOjpwYXJzZUFuZFZhbGlk
YXRlTW9kdWxlKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICh2ZXJib3NlIHx8IE9wdGlv
bnM6OnJlcG9ydENvbXBpbGVUaW1lcygpKQorICAgIGlmIChXYXNtQkJRUGxhbkludGVybmFsOjp2
ZXJib3NlIHx8IE9wdGlvbnM6OnJlcG9ydENvbXBpbGVUaW1lcygpKQogICAgICAgICBkYXRhTG9n
TG4oIlRvb2sgIiwgKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lKS5taWNyb3NlY29u
ZHMoKSwgIiB1cyB0byB2YWxpZGF0ZSBtb2R1bGUiKTsKIAogICAgIG1vdmVUb1N0YXRlKFN0YXRl
OjpWYWxpZGF0ZWQpOwpAQCAtMTQyLDcgKzE0NCw3IEBAIGJvb2wgQkJRUGxhbjo6cGFyc2VBbmRW
YWxpZGF0ZU1vZHVsZSgpCiB2b2lkIEJCUVBsYW46OnByZXBhcmUoKQogewogICAgIEFTU0VSVCht
X3N0YXRlID09IFN0YXRlOjpWYWxpZGF0ZWQpOwotICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJT
dGFydGluZyBwcmVwYXJhdGlvbiIpOworICAgIGRhdGFMb2dMbklmKFdhc21CQlFQbGFuSW50ZXJu
YWw6OnZlcmJvc2UsICJTdGFydGluZyBwcmVwYXJhdGlvbiIpOwogCiAgICAgYXV0byB0cnlSZXNl
cnZlQ2FwYWNpdHkgPSBbdGhpc10gKGF1dG8mIHZlY3Rvciwgc2l6ZV90IHNpemUsIGNvbnN0IGNo
YXIqIHdoYXQpIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCF2ZWN0b3IudHJ5UmVzZXJ2ZUNhcGFj
aXR5KHNpemUpKSkgewpAQCAtMTc0LDcgKzE3Niw3IEBAIHZvaWQgQkJRUGxhbjo6cHJlcGFyZSgp
CiAgICAgICAgIGlmIChpbXBvcnQtPmtpbmQgIT0gRXh0ZXJuYWxLaW5kOjpGdW5jdGlvbikKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB1bnNpZ25lZCBpbXBvcnRGdW5jdGlvbkluZGV4
ID0gbV93YXNtVG9XYXNtRXhpdFN0dWJzLnNpemUoKTsKLSAgICAgICAgZGF0YUxvZ0xuSWYodmVy
Ym9zZSwgIlByb2Nlc3NpbmcgaW1wb3J0IGZ1bmN0aW9uIG51bWJlciAiLCBpbXBvcnRGdW5jdGlv
bkluZGV4LCAiOiAiLCBtYWtlU3RyaW5nKGltcG9ydC0+bW9kdWxlKSwgIjogIiwgbWFrZVN0cmlu
ZyhpbXBvcnQtPmZpZWxkKSk7CisgICAgICAgIGRhdGFMb2dMbklmKFdhc21CQlFQbGFuSW50ZXJu
YWw6OnZlcmJvc2UsICJQcm9jZXNzaW5nIGltcG9ydCBmdW5jdGlvbiBudW1iZXIgIiwgaW1wb3J0
RnVuY3Rpb25JbmRleCwgIjogIiwgbWFrZVN0cmluZyhpbXBvcnQtPm1vZHVsZSksICI6ICIsIG1h
a2VTdHJpbmcoaW1wb3J0LT5maWVsZCkpOwogICAgICAgICBhdXRvIGJpbmRpbmcgPSB3YXNtVG9X
YXNtKGltcG9ydEZ1bmN0aW9uSW5kZXgpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIWJpbmRpbmcp
KSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGJpbmRpbmcuZXJyb3IoKSkgewpAQCAtMjMwLDcgKzIz
Miw3IEBAIHB1YmxpYzoKIHZvaWQgQkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9ucyhDb21waWxhdGlv
bkVmZm9ydCBlZmZvcnQpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPj0gU3RhdGU6OlByZXBhcmVk
KTsKLSAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiU3RhcnRpbmcgY29tcGlsYXRpb24iKTsKKyAg
ICBkYXRhTG9nTG5JZihXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlLCAiU3RhcnRpbmcgY29t
cGlsYXRpb24iKTsKIAogICAgIGlmICghaGFzV29yaygpKQogICAgICAgICByZXR1cm47CkBAIC0y
OTQsNyArMjk2LDcgQEAgdm9pZCBCQlFQbGFuOjpjb21waWxlRnVuY3Rpb25zKENvbXBpbGF0aW9u
RWZmb3J0IGVmZm9ydCkKIHZvaWQgQkJRUGxhbjo6Y29tcGxldGUoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImIGxvY2tlcikKIHsKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6Q29tcGlsZWQgfHwg
bV9jdXJyZW50SW5kZXggPj0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+ZnVuY3Rpb25Mb2NhdGlvbklu
QmluYXJ5LnNpemUoKSk7Ci0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIlN0YXJ0aW5nIENvbXBs
ZXRpb24iKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlLCAi
U3RhcnRpbmcgQ29tcGxldGlvbiIpOwogCiAgICAgaWYgKCFmYWlsZWQoKSAmJiBtX3N0YXRlID09
IFN0YXRlOjpDb21waWxlZCkgewogICAgICAgICBmb3IgKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgg
PSAwOyBmdW5jdGlvbkluZGV4IDwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+ZnVuY3Rpb25Mb2NhdGlv
bkluQmluYXJ5LnNpemUoKTsgZnVuY3Rpb25JbmRleCsrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCmluZGV4IGU4NmZk
NDc5OTBlODg4OGQyNmZkZGZhNzM5NGU0NzZhYmNjODAxODQuLjJiMWQ4MjhlMjdjNzUzNTBmZGQ5
NGZjMTk1Y2U2NGQ3YzFlYzVhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCkBAIC00Miw4ICs0MiwxMCBAQAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAogbmFtZXNwYWNlIHsKK25hbWVzcGFjZSBX
YXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9z
ZSA9IGZhbHNlOwogfQorfQogCiBzdGF0aWMgU3RhdGljTG9jayBjb2RlTG9jYXRpb25zTG9jazsK
IHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxzdGQ6OnR1cGxlPHZvaWQqLCB2b2lk
Kj4+PiBjb2RlTG9jYXRpb25zOyAvLyAoc3RhcnQsIGVuZCkKQEAgLTU1LDMzICs1NywzMyBAQCBz
dGF0aWMgYm9vbCBmYXN0SGFuZGxlckluc3RhbGxlZCB7IGZhbHNlIH07CiBzdGF0aWMgU2lnbmFs
QWN0aW9uIHRyYXBIYW5kbGVyKFNpZ25hbCwgU2lnSW5mbyYgc2lnSW5mbywgUGxhdGZvcm1SZWdp
c3RlcnMmIGNvbnRleHQpCiB7CiAgICAgdm9pZCogZmF1bHRpbmdJbnN0cnVjdGlvbiA9IE1hY2hp
bmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIoY29udGV4dCk7Ci0gICAgZGF0YUxvZ0xuSWYo
dmVyYm9zZSwgInN0YXJ0aW5nIGhhbmRsZXIgZm9yIGZhdWx0IGF0OiAiLCBSYXdQb2ludGVyKGZh
dWx0aW5nSW5zdHJ1Y3Rpb24pKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5k
bGVySW50ZXJuYWw6OnZlcmJvc2UsICJzdGFydGluZyBoYW5kbGVyIGZvciBmYXVsdCBhdDogIiwg
UmF3UG9pbnRlcihmYXVsdGluZ0luc3RydWN0aW9uKSk7CiAKLSAgICBkYXRhTG9nTG5JZih2ZXJi
b3NlLCAiSklUIG1lbW9yeSBzdGFydDogIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZv
aWQqPihzdGFydE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCkpLCAiIGVuZDogIiwgUmF3UG9p
bnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihlbmRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBv
b2wpKSk7CisgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2
ZXJib3NlLCAiSklUIG1lbW9yeSBzdGFydDogIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0
PHZvaWQqPihzdGFydE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCkpLCAiIGVuZDogIiwgUmF3
UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihlbmRPZkZpeGVkRXhlY3V0YWJsZU1lbW9y
eVBvb2wpKSk7CiAgICAgLy8gRmlyc3Qgd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgYXJlIGluIEpJ
VCBjb2RlIGJlZm9yZSB3ZSBjYW4gYXF1aXJlIGFueSBsb2Nrcy4gT3RoZXJ3aXNlLAogICAgIC8v
IHdlIG1pZ2h0IGhhdmUgY3Jhc2hlZCBpbiBjb2RlIHRoYXQgaXMgYWxyZWFkeSBob2xkaW5nIG9u
ZSBvZiB0aGUgbG9ja3Mgd2Ugd2FudCB0byBhcXVpcmUuCiAgICAgaWYgKGlzSklUUEMoZmF1bHRp
bmdJbnN0cnVjdGlvbikpIHsKICAgICAgICAgYm9vbCBmYXVsdGVkSW5BY3RpdmVGYXN0TWVtb3J5
ID0gZmFsc2U7CiAgICAgICAgIHsKICAgICAgICAgICAgIHZvaWQqIGZhdWx0aW5nQWRkcmVzcyA9
IHNpZ0luZm8uZmF1bHRpbmdBZGRyZXNzOwotICAgICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9z
ZSwgImNoZWNraW5nIGZhdWx0aW5nIGFkZHJlc3M6ICIsIFJhd1BvaW50ZXIoZmF1bHRpbmdBZGRy
ZXNzKSwgIiBpcyBpbiBhbiBhY3RpdmUgZmFzdCBtZW1vcnkiKTsKKyAgICAgICAgICAgIGRhdGFM
b2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImNoZWNraW5n
IGZhdWx0aW5nIGFkZHJlc3M6ICIsIFJhd1BvaW50ZXIoZmF1bHRpbmdBZGRyZXNzKSwgIiBpcyBp
biBhbiBhY3RpdmUgZmFzdCBtZW1vcnkiKTsKICAgICAgICAgICAgIGZhdWx0ZWRJbkFjdGl2ZUZh
c3RNZW1vcnkgPSBXYXNtOjpNZW1vcnk6OmFkZHJlc3NJc0luQWN0aXZlRmFzdE1lbW9yeShmYXVs
dGluZ0FkZHJlc3MpOwogICAgICAgICB9CiAgICAgICAgIGlmIChmYXVsdGVkSW5BY3RpdmVGYXN0
TWVtb3J5KSB7Ci0gICAgICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiZm91bmQgYWN0aXZl
IGZhc3QgbWVtb3J5IGZvciBmYXVsdGluZyBhZGRyZXNzIik7CisgICAgICAgICAgICBkYXRhTG9n
TG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJmb3VuZCBhY3Rp
dmUgZmFzdCBtZW1vcnkgZm9yIGZhdWx0aW5nIGFkZHJlc3MiKTsKICAgICAgICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKGNvZGVMb2NhdGlvbnNMb2NrKTsKICAgICAgICAgICAgIGZvciAoYXV0byBy
YW5nZSA6IGNvZGVMb2NhdGlvbnMuZ2V0KCkpIHsKICAgICAgICAgICAgICAgICB2b2lkKiBzdGFy
dDsKICAgICAgICAgICAgICAgICB2b2lkKiBlbmQ7CiAgICAgICAgICAgICAgICAgc3RkOjp0aWUo
c3RhcnQsIGVuZCkgPSByYW5nZTsKLSAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3Nl
LCAiZnVuY3Rpb24gc3RhcnQ6ICIsIFJhd1BvaW50ZXIoc3RhcnQpLCAiIGVuZDogIiwgUmF3UG9p
bnRlcihlbmQpKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxI
YW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJmdW5jdGlvbiBzdGFydDogIiwgUmF3UG9pbnRlcihz
dGFydCksICIgZW5kOiAiLCBSYXdQb2ludGVyKGVuZCkpOwogICAgICAgICAgICAgICAgIGlmIChz
dGFydCA8PSBmYXVsdGluZ0luc3RydWN0aW9uICYmIGZhdWx0aW5nSW5zdHJ1Y3Rpb24gPCBlbmQp
IHsKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgImZvdW5kIG1hdGNo
Iik7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRs
ZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZvdW5kIG1hdGNoIik7CiAgICAgICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBleGNlcHRpb25TdHViID0gVGh1bmtzOjpzaW5nbGV0b24o
KS5leGlzdGluZ1N0dWIodGhyb3dFeGNlcHRpb25Gcm9tV2FzbVRodW5rR2VuZXJhdG9yKTsKICAg
ICAgICAgICAgICAgICAgICAgLy8gSWYgZm9yIHdoYXRldmVyIHJlYXNvbiB3ZSBkb24ndCBoYXZl
IGEgc3R1YiB0aGVuIHdlIHNob3VsZCBqdXN0IHRyZWF0IHRoaXMgbGlrZSBhIHJlZ3VsYXIgY3Jh
c2guCiAgICAgICAgICAgICAgICAgICAgIGlmICghZXhjZXB0aW9uU3R1YikKICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZih2ZXJi
b3NlLCAiZm91bmQgc3R1YjogIiwgUmF3UG9pbnRlcihleGNlcHRpb25TdHViLmNvZGUoKS5leGVj
dXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21G
YXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZvdW5kIHN0dWI6ICIsIFJhd1Bv
aW50ZXIoZXhjZXB0aW9uU3R1Yi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAg
ICAgICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6YXJndW1lbnRQb2ludGVyPDE+KGNvbnRleHQp
ID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNNZW1v
cnlBY2Nlc3MpOwogICAgICAgICAgICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rp
b25Qb2ludGVyKGNvbnRleHQpID0gZXhjZXB0aW9uU3R1Yi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNpZ25hbEFjdGlvbjo6SGFuZGxlZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAppbmRleCA1OTE4Zjky
YmI4MGJiZGVlNTQwMTA0NzEzMWQ4MzJiZDE5NmJmNzViLi43NGNmNjUzNDk3NTI1Y2UyNjFkNDBj
NzJjNDYyM2FjZDgwZjY1Y2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtT01HUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9N
R1BsYW4uY3BwCkBAIC00Nyw3ICs0Nyw5IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
V2FzbSB7CiAKK25hbWVzcGFjZSBXYXNtT01HUGxhbkludGVybmFsIHsKIHN0YXRpYyBjb25zdCBi
b29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogT01HUGxhbjo6T01HUGxhbihSZWY8TW9kdWxlPiBt
b2R1bGUsIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIE1lbW9yeU1vZGUgbW9kZSwgQ29tcGxldGlv
blRhc2smJiB0YXNrKQogICAgIDogQmFzZShudWxscHRyLCBtYWtlUmVmKGNvbnN0X2Nhc3Q8TW9k
dWxlSW5mb3JtYXRpb24mPihtb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkpKSwgV1RGTW92ZSh0
YXNrKSkKQEAgLTU4LDcgKzYwLDcgQEAgT01HUGxhbjo6T01HUGxhbihSZWY8TW9kdWxlPiBtb2R1
bGUsIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIE1lbW9yeU1vZGUgbW9kZSwgQ28KICAgICBzZXRN
b2RlKG1vZGUpOwogICAgIEFTU0VSVChtX2NvZGVCbG9jay0+cnVubmFibGUoKSk7CiAgICAgQVNT
RVJUKG1fY29kZUJsb2NrLnB0cigpID09IG1fbW9kdWxlLT5jb2RlQmxvY2tGb3IobV9tb2RlKSk7
Ci0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIlN0YXJ0aW5nIE9NRyBwbGFuIGZvciAiLCBmdW5j
dGlvbkluZGV4LCAiIG9mIG1vZHVsZTogIiwgUmF3UG9pbnRlcigmbV9tb2R1bGUuZ2V0KCkpKTsK
KyAgICBkYXRhTG9nTG5JZihXYXNtT01HUGxhbkludGVybmFsOjp2ZXJib3NlLCAiU3RhcnRpbmcg
T01HIHBsYW4gZm9yICIsIGZ1bmN0aW9uSW5kZXgsICIgb2YgbW9kdWxlOiAiLCBSYXdQb2ludGVy
KCZtX21vZHVsZS5nZXQoKSkpOwogfQogCiB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGlsYXRpb25F
ZmZvcnQpCkBAIC0xMzgsOSArMTQwLDkgQEAgdm9pZCBPTUdQbGFuOjp3b3JrKENvbXBpbGF0aW9u
RWZmb3J0KQogCiAgICAgICAgIGF1dG8gcmVwYXRjaENhbGxzID0gWyZdIChjb25zdCBWZWN0b3I8
VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mICBjYWxsc2l0ZXMpIHsKICAgICAgICAgICAgIGZvciAo
YXV0byYgY2FsbCA6IGNhbGxzaXRlcykgewotICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKHZl
cmJvc2UsICJDb25zaWRlcmluZyByZXBhdGNoaW5nIGNhbGwgYXQ6ICIsIFJhd1BvaW50ZXIoY2Fs
bC5jYWxsTG9jYXRpb24uZGF0YUxvY2F0aW9uKCkpLCAiIHRoYXQgdGFyZ2V0cyAiLCBjYWxsLmZ1
bmN0aW9uSW5kZXhTcGFjZSk7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbU9NR1Bs
YW5JbnRlcm5hbDo6dmVyYm9zZSwgIkNvbnNpZGVyaW5nIHJlcGF0Y2hpbmcgY2FsbCBhdDogIiwg
UmF3UG9pbnRlcihjYWxsLmNhbGxMb2NhdGlvbi5kYXRhTG9jYXRpb24oKSksICIgdGhhdCB0YXJn
ZXRzICIsIGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlKTsKICAgICAgICAgICAgICAgICBpZiAoY2Fs
bC5mdW5jdGlvbkluZGV4U3BhY2UgPT0gZnVuY3Rpb25JbmRleFNwYWNlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJSZXBhdGNoaW5nIGNhbGwgYXQ6ICIsIFJh
d1BvaW50ZXIoY2FsbC5jYWxsTG9jYXRpb24uZGF0YUxvY2F0aW9uKCkpLCAiIHRvICIsIFJhd1Bv
aW50ZXIoZW50cnlwb2ludCkpOworICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihXYXNt
T01HUGxhbkludGVybmFsOjp2ZXJib3NlLCAiUmVwYXRjaGluZyBjYWxsIGF0OiAiLCBSYXdQb2lu
dGVyKGNhbGwuY2FsbExvY2F0aW9uLmRhdGFMb2NhdGlvbigpKSwgIiB0byAiLCBSYXdQb2ludGVy
KGVudHJ5cG9pbnQpKTsKICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0
Y2hOZWFyQ2FsbChjYWxsLmNhbGxMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoZW50cnlwb2lu
dCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTE1Niw3ICsxNTgsNyBA
QCB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGlsYXRpb25FZmZvcnQpCiAgICAgICAgIHJlcGF0Y2hD
YWxscyh1bmxpbmtlZENhbGxzKTsKICAgICB9CiAKLSAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAi
RmluaXNoZWQgd2l0aCB0aWVyIHVwIGNvdW50IGF0OiAiLCBtX2NvZGVCbG9jay0+dGllclVwQ291
bnQobV9mdW5jdGlvbkluZGV4KS5jb3VudCgpKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtT01HUGxh
bkludGVybmFsOjp2ZXJib3NlLCAiRmluaXNoZWQgd2l0aCB0aWVyIHVwIGNvdW50IGF0OiAiLCBt
X2NvZGVCbG9jay0+dGllclVwQ291bnQobV9mdW5jdGlvbkluZGV4KS5jb3VudCgpKTsKICAgICBj
b21wbGV0ZShob2xkTG9jayhtX2xvY2spKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVBsYW4uY3BwCmluZGV4IDE0ODNhYzc0ODkyYjJmMTY0MmE2Y2IzNjBiYzY0OTg3YmNmNWYx
MWYuLmJhMjdjZjlmOTZmNTU1MGYyZjQ4MTJlMDkxMjRiNWJmODEwMDVhY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKQEAgLTQ3LDcgKzQ3LDkgQEAKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAorbmFtZXNwYWNlIFdhc21QbGFuSW50ZXJuYWwg
ewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBQbGFuOjpQbGFuKFZN
KiB2bSwgUmVmPE1vZHVsZUluZm9ybWF0aW9uPiBpbmZvLCBDb21wbGV0aW9uVGFzayYmIHRhc2sp
CiAgICAgOiBtX21vZHVsZUluZm9ybWF0aW9uKFdURk1vdmUoaW5mbykpCkBAIC0xMjgsNyArMTMw
LDcgQEAgYm9vbCBQbGFuOjp0cnlSZW1vdmVWTUFuZENhbmNlbElmTGFzdChWTSYgdm0pCiAKIHZv
aWQgUGxhbjo6ZmFpbChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBTdHJpbmcmJiBlcnJv
ck1lc3NhZ2UpCiB7Ci0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgImZhaWxpbmcgd2l0aCBtZXNz
YWdlOiAiLCBlcnJvck1lc3NhZ2UpOworICAgIGRhdGFMb2dMbklmKFdhc21QbGFuSW50ZXJuYWw6
OnZlcmJvc2UsICJmYWlsaW5nIHdpdGggbWVzc2FnZTogIiwgZXJyb3JNZXNzYWdlKTsKICAgICBt
X2Vycm9yTWVzc2FnZSA9IFdURk1vdmUoZXJyb3JNZXNzYWdlKTsKICAgICBjb21wbGV0ZShsb2Nr
ZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25h
dHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcApp
bmRleCBiMjI5OGQ2NWNiYWI4ZDUwYmU4N2UwMjJkYTQzYmI2MjJjNThmZTdiLi44YjYwMGVkMzg2
NDQzMTI4ODJmMTNjNWY0OWZjOGZkOWU2NzkyOTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcApAQCAtMzYsNyArMzYsOSBAQAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBXYXNtIHsKIAogbmFtZXNwYWNlIHsKLWNvbnN0IGJvb2wgdmVyYm9zZSA9
IGZhbHNlOworbmFtZXNwYWNlIFdhc21TaWduYXR1cmVJbnRlcm5hbCB7CitzdGF0aWMgY29uc3Qg
Ym9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiB9CiAKIFN0cmluZyBTaWduYXR1cmU6OnRvU3RyaW5n
KCkgY29uc3QKQEAgLTEwMyw3ICsxMDUsNyBAQCBzdGQ6OnBhaXI8U2lnbmF0dXJlSW5kZXgsIFJl
ZjxTaWduYXR1cmU+PiBTaWduYXR1cmVJbmZvcm1hdGlvbjo6YWRvcHQoUmVmPFNpZ25hdAogICAg
ICAgICArK2luZm8ubV9uZXh0SW5kZXg7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZm8ubV9u
ZXh0SW5kZXggPiBuZXh0VmFsdWUpOyAvLyBjcmFzaCBvbiBvdmVyZmxvdy4KICAgICAgICAgQVNT
RVJUKG5leHRWYWx1ZSA9PSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKLSAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgIGlmIChXYXNtU2lnbmF0dXJlSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICBkYXRhTG9nTG4oIkFkb3B0IG5ldyBzaWduYXR1cmUgIiwgc2lnbmF0dXJlLmdl
dCgpLCAiIHdpdGggaW5kZXggIiwgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSwgIiBoYXNoOiAi
LCBzaWduYXR1cmUtPmhhc2goKSk7CiAKICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBpbmZvLm1f
aW5kZXhNYXAuYWRkKG5leHRWYWx1ZSwgc2lnbmF0dXJlLmNvcHlSZWYoKSk7CkBAIC0xMTEsNyAr
MTEzLDcgQEAgc3RkOjpwYWlyPFNpZ25hdHVyZUluZGV4LCBSZWY8U2lnbmF0dXJlPj4gU2lnbmF0
dXJlSW5mb3JtYXRpb246OmFkb3B0KFJlZjxTaWduYXQKICAgICAgICAgQVNTRVJUKGluZm8ubV9p
bmRleE1hcC5zaXplKCkgPT0gaW5mby5tX3NpZ25hdHVyZU1hcC5zaXplKCkpOwogICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3BhaXIobmV4dFZhbHVlLCBXVEZNb3ZlKHNpZ25hdHVyZSkpOwogICAg
IH0KLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoV2FzbVNpZ25hdHVyZUludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICBkYXRhTG9nTG4oIkV4aXN0aW5nIHNpZ25hdHVyZSAiLCBzaWduYXR1cmUu
Z2V0KCksICIgd2l0aCBpbmRleCAiLCBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLCAiIGhhc2g6
ICIsIHNpZ25hdHVyZS0+aGFzaCgpKTsKICAgICBBU1NFUlQoYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSAhPSBTaWduYXR1cmU6OmludmFsaWRJbmRleCk7CiAgICAgQVNTRVJUKGluZm8ubV9pbmRl
eE1hcC5jb250YWlucyhhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcAppbmRleCA3NmE4N2FjMWI0NzM2ZjNjZjM3
YzM1MzlkYmM5NjFmNjc4NmEwMTM0Li45YzViNjg0NGM0NmI3NGYwMjZlMGQ4NTZiNDE5Y2U5NzVj
NjAwOTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xp
c3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAK
QEAgLTMzLDcgKzMzLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAor
bmFtZXNwYWNlIFdhc21Xb3JrbGlzdEludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJv
c2UgPSBmYWxzZTsKK30KIAogY29uc3QgY2hhciogV29ya2xpc3Q6OnByaW9yaXR5U3RyaW5nKFBy
aW9yaXR5IHByaW9yaXR5KQogewpAQCAtMTQ0LDcgKzE0Niw3IEBAIHZvaWQgV29ya2xpc3Q6OmVu
cXVldWUoUmVmPFBsYW4+IHBsYW4pCiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGVsZW1lbnQs
IGVsZW1lbnQucGxhbi5nZXQoKSAhPSAmcGxhbi5nZXQoKSk7CiAgICAgfQogCi0gICAgZGF0YUxv
Z0xuSWYodmVyYm9zZSwgIkVucXVldWluZyBwbGFuIik7CisgICAgZGF0YUxvZ0xuSWYoV2FzbVdv
cmtsaXN0SW50ZXJuYWw6OnZlcmJvc2UsICJFbnF1ZXVpbmcgcGxhbiIpOwogICAgIG1fcXVldWUu
ZW5xdWV1ZSh7IFByaW9yaXR5OjpQcmVwYXJhdGlvbiwgbmV4dFRpY2tldCgpLCAgV1RGTW92ZShw
bGFuKSB9KTsKICAgICBtX3BsYW5FbnF1ZXVlZC0+bm90aWZ5T25lKGxvY2tlcik7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL2dlbmVyYXRlLXVuaWZpZWQtc291cmNlLWJ1bmRsZXMucmIgYi9T
b3VyY2UvV1RGL2dlbmVyYXRlLXVuaWZpZWQtc291cmNlLWJ1bmRsZXMucmIKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZGE3ZmNjYWZiNjQ5ZWY3MTFmYmYyMTRiOTMxZDc5YWQ0OWNmOWMzYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XVEYvZ2VuZXJhdGUtdW5pZmllZC1zb3VyY2UtYnVuZGxlcy5yYgpAQCAtMCww
ICsxLDE1MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
cmVxdWlyZSAnZmlsZXV0aWxzJworcmVxdWlyZSAncGF0aG5hbWUnCityZXF1aXJlICdnZXRvcHRs
b25nJworCitkZWYgdXNhZ2UKKyAgICBwdXRzICItLWhlbHAgICAgICAgICAgICAgICAgICAgICAg
ICAgICgtaCkgUHJpbnQgdGhpcyBtZXNzYWdlIgorICAgIHB1dHMgIi0tZGVyaXZlZC1zb3VyY2Vz
LXBhdGggICAgICAgICAgKC1wKSBQYXRoIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHVuaWZp
ZWQgc291cmNlIGZpbGVzIHNob3VsZCBiZSBwbGFjZWQuIFRoaXMgYXJndW1lbnQgaXMgcmVxdWly
ZWQuIgorICAgIHB1dHMgIi0tdmVyYm9zZSAgICAgICAgICAgICAgICAgICAgICAgKC12KSBBZGRz
IGV4dHJhIGxvZ2dpbmcgdG8gc3RkZXJyLiIKKyAgICBleGl0IDEKK2VuZAorCitNQVhfQlVORExF
X1NJWkUgPSA4CiskZGVyaXZlZFNvdXJjZXNQYXRoID0gbmlsCiskdmVyYm9zZSA9IGZhbHNlCisj
IFBpY2sgYW4gdW5yZWFzb25hYmxlIG51bWJlciBiZWNhdXNlLi4uIHdoYXRldmVyLgorIyBGSVhN
RTogVXNlIHRoZXNlIHdoZW4gWGNvZGUgdXNlcyB1bmlmaWVkIHNvdXJjZXMuCiskbWF4Q3BwQnVu
ZGxlQ291bnQgPSAxMDAwMDAKKyRtYXhDQnVuZGxlQ291bnQgPSAxMDAwMDAKKyRtYXhPYmpDQnVu
ZGxlQ291bnQgPSAxMDAwMDAKKworR2V0b3B0TG9uZy5uZXcoWyctLWhlbHAnLCAnLWgnLCBHZXRv
cHRMb25nOjpOT19BUkdVTUVOVF0sCisgICAgICAgICAgICAgICBbJy0tZGVyaXZlZC1zb3VyY2Vz
LXBhdGgnLCAnLXAnLCBHZXRvcHRMb25nOjpSRVFVSVJFRF9BUkdVTUVOVF0sCisgICAgICAgICAg
ICAgICBbJy0tdmVyYm9zZScsICctdicsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKKyAgICAg
ICAgICAgICAgIFsnLS1tYXgtY3BwLWJ1bmRsZS1jb3VudCcsIEdldG9wdExvbmc6OlJFUVVJUkVE
X0FSR1VNRU5UXSwKKyAgICAgICAgICAgICAgIFsnLS1tYXgtYy1idW5kbGUtY291bnQnLCBHZXRv
cHRMb25nOjpSRVFVSVJFRF9BUkdVTUVOVF0sCisgICAgICAgICAgICAgICBbJy0tbWF4LW9iai1j
LWJ1bmRsZS1jb3VudCcsIEdldG9wdExvbmc6OlJFUVVJUkVEX0FSR1VNRU5UXSkuZWFjaCB7Cisg
ICAgfCBvcHQsIGFyZyB8CisgICAgY2FzZSBvcHQKKyAgICB3aGVuICctLWhlbHAnCisgICAgICAg
IHVzYWdlCisgICAgd2hlbiAnLS1kZXJpdmVkLXNvdXJjZXMtcGF0aCcKKyAgICAgICAgJGRlcml2
ZWRTb3VyY2VzUGF0aCA9IFBhdGhuYW1lLm5ldyhhcmcpCisgICAgd2hlbiAnLS12ZXJib3NlJwor
ICAgICAgICAkdmVyYm9zZSA9IHRydWUKKyAgICB3aGVuICctLW1heC1jcHAtYnVuZGxlLWNvdW50
JworICAgICAgICAkbWF4Q3BwQnVuZGxlQ291bnQgPSBhcmcKKyAgICB3aGVuICctLW1heC1jLWJ1
bmRsZS1jb3VudCcKKyAgICAgICAgJG1heENCdW5kbGVDb3VudCA9IGFyZworICAgIHdoZW4gJy0t
bWF4LW9iai1jLWJ1bmRsZS1jb3VudCcKKyAgICAgICAgJG1heE9iakNCdW5kbGVDb3VudCA9IGFy
ZworICAgIGVuZAorfQorCit1c2FnZSB1bmxlc3MgJGRlcml2ZWRTb3VyY2VzUGF0aAorCitkZWYg
bG9nKHRleHQpCisgICAgJHN0ZGVyci5wdXRzIHRleHQgaWYgJHZlcmJvc2UKK2VuZAorCiskZ2Vu
ZXJhdGVkU291cmNlcyA9IFtdCisKK2NsYXNzIEJ1bmRsZU1hbmFnZXIKKyAgICBhdHRyX3JlYWRl
ciA6YnVuZGxlQ291bnQsIDpleHRlbnNpb24sIDpmaWxlQ291bnQsIDpjdXJyZW50QnVuZGxlRmls
ZSwgOmN1cnJlbnRCdW5kbGVUZXh0CisKKyAgICBkZWYgaW5pdGlhbGl6ZShleHRlbnNpb24pCisg
ICAgICAgIEBleHRlbnNpb24gPSBleHRlbnNpb24KKyAgICAgICAgQGZpbGVDb3VudCA9IDAKKyAg
ICAgICAgQGJ1bmRsZUNvdW50ID0gMAorICAgIGVuZAorCisgICAgZGVmIGZsdXNoKCkKKyAgICAg
ICAgIyBObyBwb2ludCBpbiB3YXN0aW5nIGJ1bmRsZXMKKyAgICAgICAgcmV0dXJuIGlmIEBjdXJy
ZW50QnVuZGxlVGV4dCA9PSAiIgorICAgICAgICBpZiAoQGN1cnJlbnRCdW5kbGVGaWxlKQorICAg
ICAgICAgICAgbG9nKCJ3cml0aW5nIGJ1bmRsZSAje0BjdXJyZW50QnVuZGxlRmlsZX0gd2l0aDog
XG4je0BjdXJyZW50QnVuZGxlVGV4dH0iKQorICAgICAgICAgICAgSU86OndyaXRlKEBjdXJyZW50
QnVuZGxlRmlsZSwgQGN1cnJlbnRCdW5kbGVUZXh0KQorICAgICAgICAgICAgJGdlbmVyYXRlZFNv
dXJjZXMgPDwgQGN1cnJlbnRCdW5kbGVGaWxlCisgICAgICAgICAgICBAYnVuZGxlQ291bnQgKz0g
MQorICAgICAgICBlbmQKKyAgICAgICAgQGN1cnJlbnRCdW5kbGVGaWxlID0gJGRlcml2ZWRTb3Vy
Y2VzUGF0aCArICJVbmlmaWVkU291cmNlI3soJGdlbmVyYXRlZFNvdXJjZXMubGVuZ3RoICsgMSku
dG9fcyArIGV4dGVuc2lvbn0iCisgICAgICAgIEBjdXJyZW50QnVuZGxlVGV4dCA9ICIiCisgICAg
ICAgIEBmaWxlQ291bnQgPSAwCisgICAgZW5kCisKKyAgICBkZWYgYWRkRmlsZShmaWxlKQorICAg
ICAgICByYWlzZSAid3JvbmcgZXh0ZW5zaW9uOiAje2ZpbGUuZXh0bmFtZX0gZXhwZWN0ZWQgI3tA
ZXh0ZW5zaW9ufSIgdW5sZXNzIGZpbGUuZXh0bmFtZSA9PSBAZXh0ZW5zaW9uCisgICAgICAgIGlm
IChAZmlsZUNvdW50ICUgTUFYX0JVTkRMRV9TSVpFID09IDApCisgICAgICAgICAgICBsb2coImZs
dXNoaW5nIGJlY2F1c2UgbmV3IGJ1bmRsZSBpcyBmdWxsICN7QGZpbGVDb3VudH0iKQorICAgICAg
ICAgICAgZmx1c2gKKyAgICAgICAgZW5kCisgICAgICAgIEBjdXJyZW50QnVuZGxlVGV4dCArPSAi
I2luY2x1ZGUgXCIje2ZpbGV9XCJcbiIKKyAgICAgICAgQGZpbGVDb3VudCArPSAxCisgICAgZW5k
CitlbmQKKworI0ZJWE1FOiBXZSBzaG91bGQgZmlndXJlIG91dCBob3cgdG8gYnVuZGxlIEMgZmls
ZXMuIFRoZSBsYWNrIG9mIG5hbWVzcGFjZXMgbWFrZXMgdGhpcyBkaWZmaWN1bHQuLi4KK2NsYXNz
IENGaWxlTWFuYWdlcgorICAgIGRlZiBmbHVzaCgpCisgICAgZW5kCisKKyAgICBkZWYgYWRkRmls
ZShmaWxlKQorICAgICAgICAkZ2VuZXJhdGVkU291cmNlcyA8PCBmaWxlCisgICAgZW5kCitlbmQK
KworJGJ1bmRsZU1hbmFnZXJzID0geworICAgICIuY3BwIiA9PiBCdW5kbGVNYW5hZ2VyLm5ldygi
LmNwcCIpLAorICAgICIuYyIgPT4gQ0ZpbGVNYW5hZ2VyLm5ldygpLAorICAgICIubW0iID0+IEJ1
bmRsZU1hbmFnZXIubmV3KCIubW0iKQorfQorCiskY3VycmVudERpcmVjdG9yeSA9IFBhdGhuYW1l
Lm5ldyhBUkdWWzBdKS5kaXJuYW1lCisKK0FSR1Yuc29ydC5lYWNoIHsKKyAgICB8IGZpbGUgfAor
CisgICAgcGF0aCA9IFBhdGhuYW1lLm5ldyhmaWxlKQorICAgIGlmICgkY3VycmVudERpcmVjdG9y
eSAhPSBwYXRoLmRpcm5hbWUpCisgICAgICAgIGxvZygiZmx1c2hpbmcgYmVjYXVzZSBuZXcgZGly
bmFtZSIpCisgICAgICAgICRidW5kbGVNYW5hZ2Vycy5lYWNoX3ZhbHVlIHsKKyAgICAgICAgICAg
IHwgYnVuZGxlIHwKKyAgICAgICAgICAgIGJ1bmRsZS5mbHVzaAorICAgICAgICB9CisgICAgICAg
ICRjdXJyZW50RGlyZWN0b3J5ID0gcGF0aC5kaXJuYW1lCisgICAgZW5kCisKKyAgICBidW5kbGUg
PSAkYnVuZGxlTWFuYWdlcnNbcGF0aC5leHRuYW1lXQorICAgIHJhaXNlICJ1bmtub3duIHNvdXJj
ZSBleHRlbnNpb246ICN7cGF0aC5leHRuYW1lfSBrbm93biBleHRlbnNpb25zOiAjeyRidW5kbGVN
YW5hZ2Vycy5rZXlzLnRvX3N9IiB1bmxlc3MgYnVuZGxlCisgICAgYnVuZGxlLmFkZEZpbGUocGF0
aCkKK30KKworJGJ1bmRsZU1hbmFnZXJzLmVhY2hfdmFsdWUgeworICAgIHwgYnVuZGxlIHwKKyAg
ICBidW5kbGUuZmx1c2gKK30KKworJHN0ZG91dC53cml0ZSgkZ2VuZXJhdGVkU291cmNlcy5qb2lu
KCI7IikgKyAiOyIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmggYi9T
b3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgKaW5kZXggM2IwNDM3OTlhMGE0ZTRiZGUwYWZkZjUw
YzJhZDA2MGUxNTkyOTYzYS4uMTc5ZjUxOGVkNjRlOGI1MmQwYTNjZDdmZGNlZGZlYzdlM2MyN2Zm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0Fzc2VydGlvbnMuaApAQCAtNTM1LDE4ICs1MzUsMjIgQEAgaW5saW5lIHZvaWQgY29t
cGlsZXJGZW5jZUZvckNyYXNoKCkKICNlbmRpZgogfQogCi0jaWZuZGVmIENSQVNIX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT05fQU5EX0lORk8KKyNpZm5kZWYgQ1JBU0hfV0lUSF9JTkZPCiAvLyBU
aGlzIGlzIHVzZWZ1bCBpZiB5b3UgYXJlIGdvaW5nIHRvIHN0dWZmIGRhdGEgaW50byByZWdpc3Rl
cnMgYmVmb3JlIGNyYXNoaW5nLiBMaWtlIHRoZSBjcmFzaFdpdGhJbmZvIGZ1bmN0aW9ucyBiZWxv
dy4uLgogLy8gR0NDIGRvZXNuJ3QgbGlrZSB0aGUgIyNfX1ZBX0FSR1NfXyBoZXJlIHNpbmNlIHRo
aXMgbWFjcm8gaXMgY2FsbGVkIGZyb20gYW5vdGhlciBtYWNybyBzbyB3ZSBqdXN0IENSQVNIIGlu
c3RlYWQgdGhlcmUuCiAjaWYgQ09NUElMRVIoQ0xBTkcpIHx8IENPTVBJTEVSKE1TVkMpCi0jZGVm
aW5lIENSQVNIX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fQU5EX0lORk8oLi4uKSBkbyB7IFwK
KyNkZWZpbmUgQ1JBU0hfV0lUSF9JTkZPKC4uLikgZG8geyBcCiAgICAgICAgIFdURjo6aXNJbnRl
Z3JhbFR5cGUoX19WQV9BUkdTX18pOyBcCiAgICAgICAgIGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgp
OyBcCiAgICAgICAgIFdURkNyYXNoV2l0aEluZm8oX19MSU5FX18sIF9fRklMRV9fLCBXVEZfUFJF
VFRZX0ZVTkNUSU9OLCBfX0NPVU5URVJfXywgIyNfX1ZBX0FSR1NfXyk7IFwKICAgICB9IHdoaWxl
IChmYWxzZSkKICNlbHNlCi0jZGVmaW5lIENSQVNIX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05f
QU5EX0lORk8oLi4uKSBDUkFTSCgpCisjZGVmaW5lIENSQVNIX1dJVEhfSU5GTyguLi4pIENSQVNI
KCkKICNlbmRpZgorI2VuZGlmIC8vIENSQVNIX1dJVEhfSU5GTworCisjaWZuZGVmIENSQVNIX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT05fQU5EX0lORk8KKyNkZWZpbmUgQ1JBU0hfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTl9BTkRfSU5GTyBDUkFTSF9XSVRIX0lORk8KICNlbmRpZiAvLyBDUkFT
SF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OX0FORF9JTkZPCiAKICNlbmRpZiAvLyBfX2NwbHVz
cGx1cwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320569</attachid>
            <date>2017-09-12 14:39:42 -0700</date>
            <delta_ts>2017-09-12 16:10:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176076-20170912143941.patch</filename>
            <type>text/plain</type>
            <size>213674</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxOTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YzgyZjNlZjRiYTgwZDBlY2RjODRkN2MwNjljNTk3NDdjMGUyNWMzLi5iY2RmOTZiYjZmNzRiMTNl
YzYxMTJkMDUxYmEyZWFiMzIwY2ExYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzcgQEAKKzIwMTctMDktMTEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgRG8gdW5pZmllZCBzb3VyY2UgYnVpbGRzIGZvciBKU0MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjA3NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggc3dp
dGNoZXMgdGhlIENNYWtlIEphdmFTY3JpcHRDb3JlIGJ1aWxkIHRvIHVzZSB1bmlmaWVkIHNvdXJj
ZXMuCisgICAgICAgIFRoZSBYY29kZSBidWlsZCB3aWxsIGJlIHVwZ3JhZGVkIGluIGEgZm9sbG93
IHVwIHBhdGNoLgorCisgICAgICAgIE1vc3Qgb2YgdGhlIHNvdXJjZSBjaGFuZ2VzIGluIHRoaXMg
cGF0Y2ggYXJlIGZpeGluZyBzdGF0aWMKKyAgICAgICAgdmFyaWFibGUvZnVuY3Rpb25zIG5hbWUg
Y29sbGlzaW9ucy4gVGhlIG1vc3QgY29tbW9uIGNvbGxpc2lvbnMKKyAgICAgICAgd2VyZSBmcm9t
IG91ciB1c2Ugb2YgInN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UiIGFuZCAidXNpbmcKKyAgICAg
ICAgbmFtZXNwYWNlIC4uLiIuIEkgZml4ZWQgYWxsIHRoZSB2ZXJib3NlIGNhc2VzIGFuZCBmaXhl
ZCB0aGUgInVzaW5nCisgICAgICAgIG5hbWVzcGFjZSIgaXNzdWVzIHRoYXQgb2NjdXJyZWQgdW5k
ZXIgdGhlIGN1cnJlbnQgYnVuZGxpbmcKKyAgICAgICAgc3RyYXRlZ3kuIEl0J3MgbGlrZWx5IHRo
YXQgbW9yZSBvZiB0aGUgInVzaW5nIG5hbWVzcGFjZSIgaXNzdWVzCisgICAgICAgIHdpbGwgbmVl
ZCB0byBiZSByZXNvbHZlZCBpbiB0aGUgZnV0dXJlLCBwYXJ0aWN1bGFybHkgaW4gdGhlIEZUTC4K
KworICAgICAgICBJIGRvbid0IGV4cGVjdCBlaXRoZXIgb2YgdGhlc2UgcHJvYmxlbXMgd2lsbCBh
cHBseSB0byBvdGhlciBwYXJ0cworICAgICAgICBvZiB0aGUgcHJvamVjdCBuZWFybHkgYXMgbXVj
aCBhcyBpbiBKU0MuIFVzaW5nIGEgdmVyYm9zZSB2YXJpYWJsZQorICAgICAgICBpcyBhIEpTQyBp
ZGlvbSBhbmQgSlNDIHRlbmRzIHVzZSB0aGUgc2FtZSwgY2Fub25pY2FsLCBjbGFzcyBuYW1lCisg
ICAgICAgIGluIG11bHRpcGxlIHBhcnRzIG9mIHRoZSBlbmdpbmUuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBiMy9CM0NoZWNrU3BlY2lhbC5jcHA6CisgICAgICAgIChK
U0M6OkIzOjpDaGVja1NwZWNpYWw6OmZvckVhY2hBcmcpOgorICAgICAgICAoSlNDOjpCMzo6Q2hl
Y2tTcGVjaWFsOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Om51bUIzQXJncyk6
IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNEdXBsaWNhdGVUYWlscy5jcHA6CisgICAgICAgICog
YjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHA6CisgICAgICAgICogYjMvQjNG
aXhTU0EuY3BwOgorICAgICAgICAoSlNDOjpCMzo6ZGVtb3RlVmFsdWVzKToKKyAgICAgICAgKiBi
My9CM0ZvbGRQYXRoQ29uc3RhbnRzLmNwcDoKKyAgICAgICAgKiBiMy9CM0luZmVyU3dpdGNoZXMu
Y3BwOgorICAgICAgICAqIGIzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwOgor
ICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpMb3dlclRvQWlyKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6cnVuKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6c2hvdWxkQ29weVByb3BhZ2F0ZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OkFyZ1Byb21p
c2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9t
aXNlOjpzd2FwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
QXJnUHJvbWlzZTo6b3BlcmF0b3I9KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6fkFyZ1Byb21pc2UpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjpzZXRUcmFwcyk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OnRtcCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6Om9w
ZXJhdG9yIGJvb2wgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpBcmdQcm9taXNlOjpraW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6cGVlayBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OmNvbnN1bWUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjpp
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dG1wKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dG1wUHJvbWlzZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNhbkJlSW50ZXJu
YWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpjb21taXRJ
bnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNy
b3NzZXNJbnRlcmZlcmVuY2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpzY2FsZUZvclNobCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6OmVmZmVjdGl2ZUFkZHIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjphZGRyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6dHJhcHBpbmdJbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
TG93ZXJUb0Fpcjo6bG9hZFByb21pc2VBbnlPcGNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpMb3dlclRvQWlyOjpsb2FkUHJvbWlzZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmltbSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OmJpdEltbSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6OmJpdEltbTY0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6aW1tT3JUbXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjp0cnlPcGNvZGVGb3JUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6b3Bjb2RlRm9yVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFVuT3ApOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpwcmVmZXJSaWdodEZvclJlc3VsdCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZEJpbk9wKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kU2hpZnQpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0cnlBcHBlbmRTdG9yZVVu
T3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0cnlBcHBl
bmRTdG9yZUJpbk9wKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fp
cjo6Y3JlYXRlU3RvcmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRv
QWlyOjpzdG9yZU9wY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6OmFwcGVuZFN0b3JlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6bW92ZUZvclR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpyZWxheGVkTW92ZUZvclR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpMb3dlclRvQWlyOjpwcmludCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6OmFwcGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okxvd2VyVG9BaXI6OmFwcGVuZFRyYXBwaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6TG93ZXJUb0Fpcjo6ZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bmV3QmxvY2spOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzcGxpdEJsb2NrKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6ZW5zdXJlU3BlY2lhbCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmVuc3VyZUNoZWNrU3BlY2lh
bCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmZpbGxTdGFj
a21hcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0
ZUdlbmVyaWNDb21wYXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJU
b0Fpcjo6Y3JlYXRlQnJhbmNoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6Y3JlYXRlQ29tcGFyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okxvd2VyVG9BaXI6OmNyZWF0ZVNlbGVjdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6OnRyeUFwcGVuZExlYSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFg4NkRpdik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFg4NlVEaXYpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpsb2FkTGlua09wY29kZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnN0b3JlQ29uZE9wY29kZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZENBUyk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFZvaWRBdG9taWMpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRHZW5lcmFs
QXRvbWljKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG93
ZXIpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwOgorICAg
ICAgICAoSlNDOjpCMzo6UGF0Y2hwb2ludFNwZWNpYWw6OmdlbmVyYXRlKToKKyAgICAgICAgKiBi
My9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwOgorICAgICAgICAoSlNDOjpCMzo6cmVkdWNlRG91
YmxlVG9GbG9hdCk6CisgICAgICAgICogYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHA6CisgICAgICAg
ICogYjMvQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuY3BwOgorICAgICAgICAqIGIzL0IzU3Rh
Y2ttYXBTcGVjaWFsLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlN0YWNrbWFwU3BlY2lhbDo6cmVw
c0ltcGwpOgorICAgICAgICAoSlNDOjpCMzo6U3RhY2ttYXBTcGVjaWFsOjpyZXBGb3JBcmcpOgor
ICAgICAgICAqIGIzL2Fpci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcDoKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6YWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZyk6CisgICAg
ICAgICogYjMvYWlyL0FpckVtaXRTaHVmZmxlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
ZW1pdFNodWZmbGUpOgorICAgICAgICAqIGIzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcDoK
KyAgICAgICAgKiBiMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcDoKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6bG93ZXJBZnRlclJlZ0FsbG9jKToKKyAgICAgICAgKiBiMy9haXIvQWlyU3Rh
Y2tBbGxvY2F0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6YXR0ZW1wdEFzc2lnbm1l
bnQpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjphc3NpZ24pOgorICAgICAgICAqIGJ5dGVjb2Rl
L0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwp
OgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6
Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVERkdTdGF0dXNlcyk6CisgICAgICAgICogYnl0ZWNvZGUv
R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFj
Y2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0LmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0Fj
Y2Vzcy5jcHA6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcyk6Cisg
ICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKToKKyAgICAgICAgKiBi
eXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29u
ZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCBjb25z
dCk6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSk6CisgICAgICAgICogZGZnL0RG
R0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OkRlbGF5ZWRT
ZXRMb2NhbDo6RGVsYXllZFNldExvY2FsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aW5saW5pbmdDb3N0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRU
b0lubGluZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBsYW5Mb2FkKToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6c3RvcmUpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6bGlua0Jsb2Nrcyk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZSk6CisgICAgICAgICogZGZnL0RGR0ludGVnZXJD
aGVja0NvbWJpbmluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJbnRlZ2VyQ2hlY2tD
b21iaW5pbmdQaGFzZTo6aGFuZGxlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyUmFu
Z2VPcHRpbWl6YXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR01vdkhpbnRSZW1vdmFs
UGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNl
LmNwcDoKKyAgICAgICAgKiBkZmcvREZHUGhhbnRvbUluc2VydGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdT
dG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1ZhcmFyZ3NG
b3J3YXJkaW5nUGhhc2UuY3BwOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXAuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcDo6Y29tcHV0ZSk6CisgICAgICAgICogZnRs
L0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkFic3Ry
YWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlTWVtb3J5KToKKyAgICAgICAgKEpTQzo6RlRMOjpB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUNDYWxsUmVhZCk6CisgICAgICAgIChKU0M6
OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVDQ2FsbFdyaXRlKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZVBhdGNocG9pbnRS
ZWFkKToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0
ZVBhdGNocG9pbnRXcml0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3Np
dG9yeTo6ZGVjb3JhdGVGZW5jZVJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVh
cFJlcG9zaXRvcnk6OmRlY29yYXRlRmVuY2VXcml0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6QWJz
dHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5jZWRBY2Nlc3MpOgorICAgICAgICAoSlND
OjpGVEw6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmNvbXB1dGVSYW5nZXNBbmREZWNvcmF0ZUlu
c3RydWN0aW9ucyk6CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OmxpbmspOgorICAgICAgICAqIGhlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwOgorICAg
ICAgICAoSlNDOjpNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKToKKyAgICAgICAgKiBpbnRlcnBy
ZXRlci9TaGFkb3dDaGlja2VuLmNwcDoKKyAgICAgICAgKEpTQzo6U2hhZG93Q2hpY2tlbjo6dXBk
YXRlKToKKyAgICAgICAgKiBqaXQvQmluYXJ5U3dpdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6Qmlu
YXJ5U3dpdGNoOjpCaW5hcnlTd2l0Y2gpOgorICAgICAgICAoSlNDOjpCaW5hcnlTd2l0Y2g6OmJ1
aWxkKToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTElu
dDo6RGF0YTo6bG9hZFN0YXRzKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnNhdmVTdGF0
cyk6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OkFycmF5UHJvdG90eXBlOjp0cnlJbml0aWFsaXplU3BlY2llc1dhdGNocG9pbnQpOgorICAgICAg
ICAoSlNDOjpBcnJheVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ6
OmhhbmRsZUZpcmUpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAg
ICAgIChKU0M6OkZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3I6OkZpbmRG
aXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3IpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpGaW5kRmlyc3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjpvcGVyYXRvcigp
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJs
b2NrRnVuY3Rvcjo6Zm91bmRDYWxsRnJhbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpGaW5kRmlyc3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjppbmRleCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOgorICAg
ICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCk6
CisgICAgICAgICogcnVudGltZS9Qcm9taXNlRGVmZXJyZWRUaW1lci5jcHA6CisgICAgICAgIChK
U0M6OlByb21pc2VEZWZlcnJlZFRpbWVyOjpkb1dvcmspOgorICAgICAgICAoSlNDOjpQcm9taXNl
RGVmZXJyZWRUaW1lcjo6YWRkUGVuZGluZ1Byb21pc2UpOgorICAgICAgICAoSlNDOjpQcm9taXNl
RGVmZXJyZWRUaW1lcjo6Y2FuY2VsUGVuZGluZ1Byb21pc2UpOgorICAgICAgICAqIHJ1bnRpbWUv
VHlwZVByb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVByb2ZpbGVyOjppbnNlcnROZXdM
b2NhdGlvbik6CisgICAgICAgICogcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwOgorICAgICAg
ICAoSlNDOjpUeXBlUHJvZmlsZXJMb2c6OnByb2Nlc3NMb2dFbnRyaWVzKToKKyAgICAgICAgKiBy
dW50aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFr
TWFwRGVsZXRlKToKKyAgICAgICAgKEpTQzo6cHJvdG9GdW5jV2Vha01hcEdldCk6CisgICAgICAg
IChKU0M6OnByb3RvRnVuY1dlYWtNYXBIYXMpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFr
TWFwU2V0KToKKyAgICAgICAgKEpTQzo6Z2V0V2Vha01hcERhdGEpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnByb3RvRnVu
Y1dlYWtTZXREZWxldGUpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrU2V0SGFzKToKKyAg
ICAgICAgKEpTQzo6cHJvdG9GdW5jV2Vha1NldEFkZCk6CisgICAgICAgIChKU0M6OmdldFdlYWtN
YXBEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiB0ZXN0UmVnRXhwLmNwcDoKKyAgICAgICAgKHRl
c3RPbmVSZWdFeHApOgorICAgICAgICAocnVuRnJvbUZpbGVzKToKKyAgICAgICAgKiB3YXNtL1dh
c21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxl
KToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6
QkJRUGxhbjo6bW92ZVRvU3RhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpwYXJz
ZUFuZFZhbGlkYXRlTW9kdWxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6cHJlcGFy
ZSk6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OmNvbXBpbGVGdW5jdGlvbnMpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpjb21wbGV0ZSk6CisgICAgICAgICogd2FzbS9XYXNt
RmF1bHRTaWduYWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6dHJhcEhhbmRsZXIp
OgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpP
TUdQbGFuOjpPTUdQbGFuKToKKyAgICAgICAgKEpTQzo6V2FzbTo6T01HUGxhbjo6d29yayk6Cisg
ICAgICAgICogd2FzbS9XYXNtUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlBsYW46OmZh
aWwpOgorICAgICAgICAqIHdhc20vV2FzbVNpZ25hdHVyZS5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjphZG9wdCk6CisgICAgICAgICogd2FzbS9XYXNtV29y
a2xpc3QuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpXb3JrbGlzdDo6ZW5xdWV1ZSk6CisKIDIw
MTctMDktMTEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIE1vcmUg
ZXhjZXB0aW9uIGNoZWNrIGJvb2sta2VlcGluZyBuZWVkZWQgZm91bmQgYnkgMzItYml0IEpTQyB0
ZXN0IGZhaWx1cmVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCA4MTMwODMwZWE4ODY0YTc0ZDFmYjc0YWI1NWU4Yjc1OTdiMmEx
NzQ2Li4yZDRkZjRlMmMwZWE3MGFjYjlkNmUwYTFiN2MxNzdlODFhNzAxOTIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM3IEBACisyMDE3LTA5LTExICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUu
Y29tPgorCisgICAgICAgIERvIHVuaWZpZWQgc291cmNlIGJ1aWxkcyBmb3IgSlNDCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYwNzYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
YSBzY3JpcHQgdGhhdCB3aWxsIGF1dG9tYXRpY2FsbHkgYnVuZGxlIHNvdXJjZQorICAgICAgICBm
aWxlcywgd2hpY2ggaXMgY3VycmVudGx5IG9ubHkgdXNlZCBieSB0aGUgQ01ha2UgYnVpbGQuIEl0
J3MKKyAgICAgICAgaW1wb3J0YW50IHRoYXQgd2UgdXNlIHRoZSBzYW1lIHNjcmlwdCB0byBnZW5l
cmF0ZSB0aGUgYnVuZGxlcworICAgICAgICBmb3IgdGhlIENNYWtlIGJ1aWxkIGFzIHRoZSBYY29k
ZSBidWlsZC4gSWYgd2UgZGlkbid0IGRvIHRoaXMgdGhlbgorICAgICAgICBpdCdzIGxpa2VseSB0
aGF0IHRoZXJlIHdvdWxkIGJlIGJ1aWxkIGVycm9ycyB0aGF0IG9jY3VyIGluIG9ubHkKKyAgICAg
ICAgb25lIGJ1aWxkIHN5c3RlbS4gT24gdGhlIHNhbWUgbm90ZSwgd2UgYWxzbyBuZWVkIHRvIGJl
IGNhcmVmdWwgdG8KKyAgICAgICAgbm90IGJ1bmRsZSBwbGF0Zm9ybSBzcGVjaWZpYyBzb3VyY2Ug
ZmlsZXMgd2l0aCBwbGF0Zm9ybQorICAgICAgICBpbmRlcGVuZGVudCBvbmVzLiBUaGVyZSBhcmUg
YSBjb3VwbGUgb2YgdGhpbmdzIHRoZSBzY3JpcHQgZG9lcyBub3QKKyAgICAgICAgY3VycmVudGx5
IGhhbmRsZSBidXQgYXJlIG5vdCBlc3NlbnRpYWwgZm9yIHRoZSBDTWFrZSBidWlsZC4gRmlyc3Qs
CisgICAgICAgIGl0IGRvZXMgbm90IGhhbmRsZSB0aGUgbWF4IGJ1bmRsZSBzaXplIHJlc3RyaWN0
aW9ucyB0aGF0IHRoZSBYY29kZQorICAgICAgICBidWlsZCB3aWxsIHJlcXVpcmUuIEl0IGFsc28g
ZG9lcyBub3QgaGFuZGxlIEMgZmlsZXMuCisKKyAgICAgICAgVGhlIHVuaWZpZWQgc291cmNlIGdl
bmVyYXRvciBzY3JpcHQgd29ya3MgYnkgY29sbGVjdGluZyBncm91cHMgb2YKKyAgICAgICAgdXAg
dG8gOCBmaWxlcyBmcm9tIHRoZSBzYW1lIGRpcmVjdG9yeS4gV2UgZG9uJ3QgYnVuZGxlIGZpbGVz
IGZyb20KKyAgICAgICAgYWNyb3NzIGRpcmVjdG9yaWVzIHNpbmNlIEkgZGlkbid0IHNlZSBhIHNw
ZWVkdXAgZnJvbSBkb2luZworICAgICAgICBzby4gQWRkaXRpb25hbGx5LCBzcGxpdHRpbmcgYXQg
dGhlIGRpcmVjdG9yeSBib3VuZGFyeSBtZWFucyB0aGF0CisgICAgICAgIGl0IGlzIGxlc3MgbGlr
ZWx5IHRoYXQgYWRkaW5nIGEgbmV3IGZpbGUgd2lsbCBmb3JjZSBhICJjbGVhbiIKKyAgICAgICAg
YnVpbGQuIFRoaXMgd291bGQgaGFwcGVuIGJlY2F1c2UgdGhlIG5ldyBmaWxlIHdpbGwgc2hpZnQg
ZXZlcnkKKyAgICAgICAgc3Vic2VxdWVudCBmaWxlIGludG8gdGhlIG5leHQgdW5pZmllZCBzb3Vy
Y2UgYnVuZGxlLgorCisgICAgICAgIFVzaW5nIHVuaWZpZWQgc291cmNlcyBhcHBlYXJzIHRvIGJl
IGEgcm91Z2hseSAzLjV4IGJ1aWxkIHRpbWUKKyAgICAgICAgc3BlZWQgdXAgZm9yIGNsZWFuIGJ1
aWxkcyBvbiBteSBNQlAgYW5kIGFwcGVhcnMgdG8gaGF2ZSBhCisgICAgICAgIG5lZ2xpZ2libGUg
ZWZmZWN0IGluIGluY3JlbWVudGFsIGJ1aWxkcy4KKworICAgICAgICAqIGdlbmVyYXRlLXVuaWZp
ZWQtc291cmNlLWJ1bmRsZXMucmI6IEFkZGVkLgorICAgICAgICAqIHd0Zi9Bc3NlcnRpb25zLmg6
CisKIDIwMTctMDktMTEgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMTg1NC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCBkYTFiYTFkOWJlMTU3YjU4M2M4MTA3OGJhZGJlZmRlYWQ1YmIy
MGZhLi5iNzhkNTQ4OThhNDJmZmIzYjcxZGEyZTczNzhmMzdkMmJmODg4ODhlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00Niw3ICs0Niw3IEBAIHNldChKYXZhU2NyaXB0
Q29yZV9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0lDVV9JTkNMVURFX0RJUlN9
IgogKQogCi1zZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUworc2V0KEphdmFTY3JpcHRDb3JlX09H
X1NPVVJDRVMKICAgICBBUEkvSlNCYXNlLmNwcAogICAgIEFQSS9KU0NUZXN0UnVubmVyVXRpbHMu
Y3BwCiAgICAgQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAKQEAgLTg3OSw3ICs4NzksNiBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5j
cHAKICAgICBydW50aW1lL1Byb3RvdHlwZU1hcC5jcHAKICAgICBydW50aW1lL1Byb3h5Q29uc3Ry
dWN0b3IuY3BwCi0gICAgcnVudGltZS9Qcm94eU9iamVjdC5jcHAKICAgICBydW50aW1lL1Byb3h5
UmV2b2tlLmNwcAogICAgIHJ1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKICAgICBydW50aW1lL1Jl
Z0V4cC5jcHAKQEAgLTEwMTcsNiArMTAxNiwzMSBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNF
UwogICAgIHlhcnIvWWFyclN5bnRheENoZWNrZXIuY3BwCiApCiAKKworZm9yZWFjaCAoX3NvdXJj
ZUZpbGUgSU4gTElTVFMgSmF2YVNjcmlwdENvcmVfT0dfU09VUkNFUykKKyAgICBpZiAoTk9UICgk
e19zb3VyY2VGaWxlfSBNQVRDSEVTICJjJCIpKQorICAgICAgICBzZXRfc291cmNlX2ZpbGVzX3By
b3BlcnRpZXMoJHtfc291cmNlRmlsZX0gUFJPUEVSVElFUyBIRUFERVJfRklMRV9PTkxZIE9OKQor
ICAgICAgICBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTICR7X3NvdXJjZUZpbGV9
KQorICAgIGVuZGlmICgpCitlbmRmb3JlYWNoICgpCisKK2V4ZWN1dGVfcHJvY2VzcyhDT01NQU5E
ICR7UlVCWV9FWEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vLi4vV1RGL2dl
bmVyYXRlLXVuaWZpZWQtc291cmNlLWJ1bmRsZXMucmIKKyAgIi0tZGVyaXZlZC1zb3VyY2VzLXBh
dGgiICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0gJHtKYXZhU2NyaXB0Q29y
ZV9PR19TT1VSQ0VTfQorICBSRVNVTFRfVkFSSUFCTEUgZ2VuZXJhdGVVbmlmaWVkU291cmNlc1Jl
c3VsdAorICBPVVRQVVRfVkFSSUFCTEUgZ2VuZXJhdGVVbmlmaWVkU291cmNlc091dHB1dAorKQor
CitpZiAoJHtnZW5lcmF0ZVVuaWZpZWRTb3VyY2VzUmVzdWx0fSkKKyAgICBtZXNzYWdlKEZBVEFM
X0VSUk9SICJ1bmlmaWVkLXNvdXJjZS1idW5kbGVyLnJiIGV4aXRlZCB3aXRoIG5vbi16ZXJvIHN0
YXR1cyBub3QgYXBwZW5kaW5nIHJlc3VsdHMiKQorZWxzZSAoKQorICAgIGxpc3QoQVBQRU5EIEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMgJHtnZW5lcmF0ZVVuaWZpZWRTb3VyY2VzT3V0cHV0fSkKK2Vu
ZGlmICgpCisKKyMgVGhlc2UgYXJlIHNwZWNpYWwgZmlsZXMgdGhhdCB3ZSBjYW4ndCBvciBkb24n
dCB3YW50IHRvIHVuaWZpZWQgc291cmNlIGNvbXBpbGUKK2xpc3QoQVBQRU5EIEphdmFTY3JpcHRD
b3JlX1NPVVJDRVMKKyAgICBydW50aW1lL1Byb3h5T2JqZWN0LmNwcAorKQorCiAjIEV4dHJhIGZs
YWdzIGZvciBjb21waWxlIHNvdXJjZXMgY2FuIGdvIGhlcmUuCiBpZiAoTk9UIE1TVkMpCiAgICAg
c2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzKHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwIFBST1BF
UlRJRVMgQ09NUElMRV9GTEFHUyAtZm5vLW9wdGltaXplLXNpYmxpbmctY2FsbHMpCkBAIC0xMzM2
LDYgKzEzNjAsNyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgTUFJTl9ERVBFTkRFTkNZICR7
Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9jcmVhdGVfcmVnZXhfdGFibGVzCiAgICAgQ09NTUFO
RCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vY3JlYXRl
X3JlZ2V4X3RhYmxlcyA+ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vUmVn
RXhwSml0VGFibGVzLmgKICAgICBWRVJCQVRJTSkKK2xpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3Jl
X0hFQURFUlMgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9SZWdFeHBKaXRU
YWJsZXMuaCkKIFdFQktJVF9BRERfU09VUkNFX0RFUEVOREVOQ0lFUygke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0veWFyci9ZYXJyUGF0dGVybi5jcHAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVND
UklQVENPUkVfRElSfS9SZWdFeHBKaXRUYWJsZXMuaCkKIAogYWRkX2N1c3RvbV9jb21tYW5kKApA
QCAtMTM1Niw2ICsxMzgxLDcgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAgIERFUEVORFMgJHtD
TUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3BhcnNlci9LZXl3b3Jkcy50YWJsZQogICAgIENPTU1B
TkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L0tleXdv
cmRMb29rdXBHZW5lcmF0b3IucHkgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3BhcnNlci9L
ZXl3b3Jkcy50YWJsZSA+ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vS2V5
d29yZExvb2t1cC5oCiAgICAgVkVSQkFUSU0pCitsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9I
RUFERVJTICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vS2V5d29yZExvb2t1
cC5oKQogV0VCS0lUX0FERF9TT1VSQ0VfREVQRU5ERU5DSUVTKCR7Q01BS0VfQ1VSUkVOVF9TT1VS
Q0VfRElSfS9wYXJzZXIvTGV4ZXIuY3BwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0vS2V5d29yZExvb2t1cC5oKQogCiAKQEAgLTE1MDMsNyArMTUyOSw3IEBAIGFkZF9jdXN0
b21fY29tbWFuZCgKICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke0RFUklWRURfU09VUkNFU19KQVZB
U0NSSVBUQ09SRV9ESVJ9CiApCiAKLWxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
K2xpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMKICAgICAke0RFUklWRURfU09VUkNF
U19KQVZBU0NSSVBUQ09SRV9ESVJ9L0Fpck9wY29kZS5oCiAgICAgJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfS9BaXJPcGNvZGVHZW5lcmF0ZWQuaAogKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAKaW5kZXggYmViODc5Mjg1ODhmZDViNmQ3
MzEwZjdmMzQ4NWJjMTc1YmEzZGJmZi4uN2M1MzcyYWM1ZTI3MTE0MTk5M2Y3OGJlMTY4M2UwOTMx
ODUzYzg5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVj
aWFsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuY3Bw
CkBAIC0zNiwxMSArMzYsMTMgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAK
LXVzaW5nIG5hbWVzcGFjZSBBaXI7Cit1c2luZyBJbnN0ID0gQWlyOjpJbnN0OwordXNpbmcgQXJn
ID0gQWlyOjpBcmc7Cit1c2luZyBHZW5lcmF0aW9uQ29udGV4dCA9IEFpcjo6R2VuZXJhdGlvbkNv
bnRleHQ7CiAKIG5hbWVzcGFjZSB7CiAKLXVuc2lnbmVkIG51bUIzQXJncyhCMzo6S2luZCBraW5k
KQordW5zaWduZWQgbnVtQjNBcmdzKEtpbmQga2luZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQub3Bj
b2RlKCkpIHsKICAgICBjYXNlIENoZWNrQWRkOgpAQCAtMTA4LDYgKzExMCw3IEBAIEluc3QgQ2hl
Y2tTcGVjaWFsOjpoaWRkZW5CcmFuY2goY29uc3QgSW5zdCYgaW5zdCkgY29uc3QKIAogdm9pZCBD
aGVja1NwZWNpYWw6OmZvckVhY2hBcmcoSW5zdCYgaW5zdCwgY29uc3QgU2NvcGVkTGFtYmRhPElu
c3Q6OkVhY2hBcmdDYWxsYmFjaz4mIGNhbGxiYWNrKQogeworICAgIHVzaW5nIG5hbWVzcGFjZSBB
aXI7CiAgICAgc3RkOjpvcHRpb25hbDxXaWR0aD4gb3B0aW9uYWxEZWZBcmdXaWR0aDsKICAgICBJ
bnN0IGhpZGRlbiA9IGhpZGRlbkJyYW5jaChpbnN0KTsKICAgICBoaWRkZW4uZm9yRWFjaEFyZygK
QEAgLTE1Niw2ICsxNTksNyBAQCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBDaGVja1NwZWNpYWw6
OnNob3VsZFRyeUFsaWFzaW5nRGVmKEluc3QmIGluc3QpCiAKIENDYWxsSGVscGVyczo6SnVtcCBD
aGVja1NwZWNpYWw6OmdlbmVyYXRlKEluc3QmIGluc3QsIENDYWxsSGVscGVycyYgaml0LCBHZW5l
cmF0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKKyAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAg
IENDYWxsSGVscGVyczo6SnVtcCBmYWlsID0gaGlkZGVuQnJhbmNoKGluc3QpLmdlbmVyYXRlKGpp
dCwgY29udGV4dCk7CiAgICAgQVNTRVJUKGZhaWwuaXNTZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0R1cGxpY2F0ZVRhaWxzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0R1cGxpY2F0ZVRhaWxzLmNwcAppbmRleCBmZDY1NzkwZTk5YzJmZWFk
NGY1ZmJiOWVhZjYwYzFhNzVjOTMyMjU1Li5jZmY0NGE0YzFlMDA5MWViYTRhNzgzYjM4ZjM1YTNi
ZGNlZDFiY2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNEdXBsaWNh
dGVUYWlscy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRHVwbGljYXRlVGFp
bHMuY3BwCkBAIC00NCw3ICs0NCw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewog
CiBuYW1lc3BhY2UgewogCi1jb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBC
M0R1cGxpY2F0ZVRhaWxzSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZh
bHNlOworfQogCiBjbGFzcyBEdXBsaWNhdGVUYWlscyB7CiBwdWJsaWM6CkBAIC05NCw3ICs5Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBkZW1vdGVWYWx1
ZXMobV9wcm9jLCB2YWx1ZXNUb0RlbW90ZSk7Ci0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAg
ICAgIGlmIChCM0R1cGxpY2F0ZVRhaWxzSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAg
IGRhdGFMb2coIlByb2NlZHVyZSBhZnRlciB2YWx1ZSBkZW1vdGlvbjpcbiIpOwogICAgICAgICAg
ICAgZGF0YUxvZyhtX3Byb2MpOwogICAgICAgICB9CkBAIC0xMTYsNyArMTE4LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgLy8gcG9pbnQuCiAgICAgICAgICAgICBjYW5kaWRhdGVzLnJlbW92ZShi
bG9jayk7CiAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzRHVw
bGljYXRlVGFpbHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJE
dXBsaWNhdGluZyAiLCAqdGFpbCwgIiBpbnRvICIsICpibG9jaywgIlxuIik7CiAKICAgICAgICAg
ICAgIGJsb2NrLT5yZW1vdmVMYXN0KG1fcHJvYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAKaW5k
ZXggMWFlNDM1NTYxNTE3ZTkxYzA5ZTY2OGM2OWVhZmMxNTRhNzQ4YmRlNi4uOWEyZTk4YWE0Mzg1
NjI4MDA5ZjEyYTQ0NTI0YTRkMWFmZjU1ZjliYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcApA
QCAtNTMsNyArNTMsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogbmFtZXNw
YWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgQjNFbGltaW5h
dGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJv
c2UgPSBmYWxzZTsKK30KIAogLy8gRklYTUU6IFdlIGNvdWxkIHRyZWF0IFBhdGNocG9pbnRzIHdp
dGggYSBub24tZW1wdHkgc2V0IG9mIHJlYWRzIGFzIGEgIm1lbW9yeSB2YWx1ZSIgYW5kIHNvbWVo
b3cKIC8vIGVsaW1pbmF0ZSByZWR1bmRhbnQgb25lcy4gV2Ugd291bGQgbmVlZCBzb21lIHdheSBv
ZiBkZXRlcm1pbmluZyBpZiB0d28gcGF0Y2hwb2ludHMgYXJlIHJlcGxhY2FibGUuCkBAIC0xNjAs
NyArMTYyLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBydW4oKQogICAgIHsKLSAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJCMyBiZWZvcmUgQ1NFOlxuIiwg
bV9wcm9jKTsKICAgICAgICAgCiAgICAgICAgIG1fcHJvYy5yZXNldFZhbHVlT3duZXJzKCk7CkBA
IC0xODgsNyArMTkwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBkYXRhLm1lbW9y
eVZhbHVlc0F0VGFpbC5hZGQobWVtb3J5KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNz
aW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkJsb2NrICIs
ICpibG9jaywgIjogIiwgZGF0YSwgIlxuIik7CiAgICAgICAgIH0KIApAQCAtMTk2LDcgKzE5OCw3
IEBAIHB1YmxpYzoKICAgICAgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBwb3N0T3JkZXIgPSBtX3By
b2MuYmxvY2tzSW5Qb3N0T3JkZXIoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcG9zdE9y
ZGVyLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgbV9ibG9jayA9IHBvc3RPcmRlcltpXTsK
LSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29t
bW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRh
TG9nKCJMb29raW5nIGF0ICIsICptX2Jsb2NrLCAiOlxuIik7CiAKICAgICAgICAgICAgIG1fZGF0
YSA9IEltcHVyZUJsb2NrRGF0YSgpOwpAQCAtMjIyLDcgKzIyNCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Np
b25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJCMyBhZnRlciBDU0U6
XG4iLCBtX3Byb2MpOwogCiAgICAgICAgIHJldHVybiBtX2NoYW5nZWQ7CkBAIC00ODcsNyArNDg5
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gZXhwZW5zaXZlLCBidXQgaW4gdGhlIG92ZXJ3aGVs
bWluZyBtYWpvcml0eSBvZiBjYXNlcyBpdCB3aWxsIGFsbW9zdCBpbW1lZGlhdGVseSBoaXQgYW4g
CiAgICAgICAgIC8vIG9wZXJhdGlvbiB0aGF0IGludGVyZmVyZXMuCiAKLSAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCptX3ZhbHVlLCAiOiBsb29raW5nIGZv
cndhcmQgZm9yIHN0b3JlcyB0byAiLCAqcHRyLCAiLi4uXG4iKTsKIAogICAgICAgICAvLyBGaXJz
dCBzZWFyY2ggZm9yd2FyZCBpbiB0aGlzIGJhc2ljIGJsb2NrLgpAQCAtNTU3LDcgKzU1OSw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGlmIChtYXRjaGVzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEIzRWxpbWlu
YXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRh
dGFMb2coIkVsaW1pbmF0aW5nICIsICptX3ZhbHVlLCAiIGR1ZSB0byAiLCBwb2ludGVyTGlzdER1
bXAobWF0Y2hlcyksICJcbiIpOwogICAgICAgICAKICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsK
QEAgLTU2Niw3ICs1NjgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgTWVtb3J5VmFsdWUqIGRv
bWluYXRpbmdNYXRjaCA9IG1hdGNoZXNbMF07CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCht
X2RvbWluYXRvcnMuZG9taW5hdGVzKGRvbWluYXRpbmdNYXRjaC0+b3duZXIsIG1fYmxvY2spKTsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAo
QjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgICAgIGRhdGFMb2coIiAgICBFbGltaW5hdGluZyB1c2luZyAiLCAqZG9taW5hdGluZ01h
dGNoLCAiXG4iKTsKICAgICAgICAgICAgIFZlY3RvcjxWYWx1ZSo+IGV4dHJhVmFsdWVzOwogICAg
ICAgICAgICAgaWYgKFZhbHVlKiB2YWx1ZSA9IHJlcGxhY2UoZG9taW5hdGluZ01hdGNoLCBleHRy
YVZhbHVlcykpIHsKQEAgLTU5MCw3ICs1OTIsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIFZhcmlh
YmxlVmFsdWUqIGdldCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYXJpYWJsZVZhbHVlPigKICAg
ICAgICAgICAgIG1faW5kZXgsIEdldCwgbV92YWx1ZS0+b3JpZ2luKCksIHZhcmlhYmxlKTsKLSAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJl
c3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgSW5zZXJ0
aW5nIGdldCBvZiB2YWx1ZTogIiwgKmdldCwgIlxuIik7CiAgICAgICAgIG1fdmFsdWUtPnJlcGxh
Y2VXaXRoSWRlbnRpdHkoZ2V0KTsKICAgICAgICAgICAgIApAQCAtNjE1LDIzICs2MTcsMjMgQEAg
cHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXI+CiAgICAgTWVtb3J5TWF0Y2hl
cyBmaW5kTWVtb3J5VmFsdWUoVmFsdWUqIHB0ciwgSGVhcFJhbmdlIHJhbmdlLCBjb25zdCBGaWx0
ZXImIGZpbHRlcikKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQjNF
bGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgZGF0YUxvZygqbV92YWx1ZSwgIjogbG9va2luZyBiYWNrd2FyZCBmb3IgIiwgKnB0ciwgIi4u
LlxuIik7CiAgICAgICAgIAogICAgICAgICBpZiAobV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCkt
Pmhhc0ZlbmNlKCkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYg
KEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1c2UgZmVuY2VzLlxuIik7CiAg
ICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAo
TWVtb3J5VmFsdWUqIG1hdGNoID0gbV9kYXRhLm1lbW9yeVZhbHVlc0F0VGFpbC5maW5kKHB0ciwg
ZmlsdGVyKSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNF
bGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgICAgIGRhdGFMb2coIiAgICBGb3VuZCAiLCAqbWF0Y2gsICIgbG9jYWxseS5cbiIpOwogICAg
ICAgICAgICAgcmV0dXJuIHsgbWF0Y2ggfTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX2Rh
dGEud3JpdGVzLm92ZXJsYXBzKHJhbmdlKSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBHaXZpbmcgdXAgYmVjYXVzZSBv
ZiB3cml0ZXMuXG4iKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KQEAgLTY0
MiwyNyArNjQ0LDI3IEBAIHByaXZhdGU6CiAgICAgICAgIE1lbW9yeU1hdGNoZXMgbWF0Y2hlczsK
IAogICAgICAgICB3aGlsZSAoQmFzaWNCbG9jayogYmxvY2sgPSB3b3JrbGlzdC5wb3AoKSkgewot
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21t
b25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFM
b2coIiAgICBMb29raW5nIGF0ICIsICpibG9jaywgIlxuIik7CiAKICAgICAgICAgICAgIEltcHVy
ZUJsb2NrRGF0YSYgZGF0YSA9IG1faW1wdXJlQmxvY2tEYXRhW2Jsb2NrXTsKIAogICAgICAgICAg
ICAgTWVtb3J5VmFsdWUqIG1hdGNoID0gZGF0YS5tZW1vcnlWYWx1ZXNBdFRhaWwuZmluZChwdHIs
IGZpbHRlcik7CiAgICAgICAgICAgICBpZiAobWF0Y2ggJiYgbWF0Y2ggIT0gbV92YWx1ZSkgewot
ICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChCM0VsaW1p
bmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIiAgICBGb3VuZCBtYXRjaDogIiwgKm1hdGNoLCAiXG4iKTsKICAgICAg
ICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChtYXRjaCk7CiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChkYXRhLndyaXRlcy5vdmVybGFw
cyhyYW5nZSkpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAg
ICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1c2Ugb2Ygd3Jp
dGVzLlxuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKCFibG9jay0+bnVtUHJlZGVjZXNzb3JzKCkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21tb25T
dWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1c2UgaXQncyBsaXZlIGF0IHJvb3QuXG4iKTsKICAgICAg
ICAgICAgICAgICAvLyBUaGlzIGVzc2VudGlhbGx5IHByb3ZlcyB0aGF0IHRoaXMgaXMgbGl2ZSBh
dCB0aGUgcHJvbG9ndWUuIFRoYXQgbWVhbnMgdGhhdCB3ZQogICAgICAgICAgICAgICAgIC8vIGNh
bm5vdCByZWxpYWJseSBvcHRpbWl6ZSB0aGlzIGNhc2UuCkBAIC02NzIsNyArNjc0LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIHdvcmtsaXN0LnB1c2hBbGwoYmxvY2stPnByZWRlY2Vzc29ycygp
KTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQjNFbGlt
aW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ZGF0YUxvZygiICAgIEdvdCBtYXRjaGVzOiAiLCBwb2ludGVyTGlzdER1bXAobWF0Y2hlcyksICJc
biIpOwogICAgICAgICByZXR1cm4gbWF0Y2hlczsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNGaXhTU0EuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzRml4U1NBLmNwcAppbmRleCBkMjAzODFkMjAyMmZhMDRmMjYzYTg3ZWZiMWIzY2Q5MjAyZTY3
NThhLi5iMjhmMjFmMTEwN2M4MjZmYWY2MmIzZjgzNzA2MjU4MzY4N2UzN2Y3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGaXhTU0EuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0ZpeFNTQS5jcHAKQEAgLTQ4LDcgKzQ4LDkgQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5hbWVzcGFjZSB7CiAKLWNvbnN0IGJvb2wgdmVyYm9zZSA9
IGZhbHNlOworbmFtZXNwYWNlIEIzRml4U1NBSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wg
dmVyYm9zZSA9IGZhbHNlOworfQogCiB2b2lkIGtpbGxEZWFkVmFyaWFibGVzKFByb2NlZHVyZSYg
cHJvYykKIHsKQEAgLTE1Nyw3ICsxNTksNyBAQCB2b2lkIGZpeFNTQUdsb2JhbGx5KFByb2NlZHVy
ZSYgcHJvYykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgVmFsdWUqIHBoaSA9IHByb2MuYWRkPFZhbHVlPihQaGks
IHZhcmlhYmxlLT50eXBlKCksIGJsb2NrLT5hdCgwKS0+b3JpZ2luKCkpOwotICAgICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgaWYgKEIzRml4U1NBSW50ZXJuYWw6
OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAg
ICAgICAgICAgICJBZGRpbmcgUGhpIGZvciAiLCBwb2ludGVyRHVtcCh2YXJpYWJsZSksICIgYXQg
IiwgKmJsb2NrLCAiOiAiLAogICAgICAgICAgICAgICAgICAgICAgICAgZGVlcER1bXAocHJvYywg
cGhpKSwgIlxuIik7CkBAIC0yMzEsNyArMjMzLDcgQEAgdm9pZCBmaXhTU0FHbG9iYWxseShQcm9j
ZWR1cmUmIHByb2MpCiAgICAgICAgICAgICAgICAgVmFyaWFibGUqIHZhcmlhYmxlID0gY2FsY1Zh
clRvVmFyaWFibGVbY2FsY1Zhci0+aW5kZXgoKV07CiAKICAgICAgICAgICAgICAgICBWYWx1ZSog
bWFwcGVkVmFsdWUgPSBlbnN1cmVNYXBwaW5nKHZhcmlhYmxlLCB1cHNpbG9uSW5zZXJ0aW9uUG9p
bnQsIHVwc2lsb25PcmlnaW4pOwotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAg
ICAgICAgICAgICAgaWYgKEIzRml4U1NBSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICJNYXBwZWQgdmFsdWUg
Zm9yICIsICp2YXJpYWJsZSwgIiB3aXRoIHN1Y2Nlc3NvciBQaGkgIiwgKnBoaSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICIgYXQgZW5kIG9mICIsICpibG9jaywgIjogIiwgcG9pbnRlckR1bXAo
bWFwcGVkVmFsdWUpLCAiXG4iKTsKQEAgLTI0NSw3ICsyNDcsNyBAQCB2b2lkIGZpeFNTQUdsb2Jh
bGx5KFByb2NlZHVyZSYgcHJvYykKICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2sp
OwogICAgIH0KIAotICAgIGlmICh2ZXJib3NlKSB7CisgICAgaWYgKEIzRml4U1NBSW50ZXJuYWw6
OnZlcmJvc2UpIHsKICAgICAgICAgZGF0YUxvZygiQjMgYWZ0ZXIgU1NBIGNvbnZlcnNpb246XG4i
KTsKICAgICAgICAgZGF0YUxvZyhwcm9jKTsKICAgICB9CkBAIC0yNjYsNyArMjY4LDcgQEAgdm9p
ZCBkZW1vdGVWYWx1ZXMoUHJvY2VkdXJlJiBwcm9jLCBjb25zdCBJbmRleFNldDxWYWx1ZSo+JiB2
YWx1ZXMpCiAgICAgICAgICAgICBwaGlNYXAuYWRkKHZhbHVlLCBwcm9jLmFkZFZhcmlhYmxlKHZh
bHVlLT50eXBlKCkpKTsKICAgICB9CiAKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChCM0Zp
eFNTQUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2coIkRlbW90aW5nIHZhbHVl
cyBhcyBmb2xsb3dzOlxuIik7CiAgICAgICAgIGRhdGFMb2coIiAgIG1hcCA9ICIpOwogICAgICAg
ICBDb21tYVByaW50ZXIgY29tbWE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNGb2xkUGF0aENvbnN0YW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNG
b2xkUGF0aENvbnN0YW50cy5jcHAKaW5kZXggYjliZGM4ZDRmMjg4YjgyYzYzMzFlZjMxMGQzMzNl
M2E1NjQ3ZTA0ZC4uMjIyNTBjYmM3ZjM1YzRjZmNmOTkxNmE1YWIyZWU3MjZhZmM0YWQ1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRm9sZFBhdGhDb25zdGFudHMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZvbGRQYXRoQ29uc3RhbnRzLmNwcApA
QCAtNDEsNyArNDEsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogbmFtZXNw
YWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgQjNGb2xkUGF0
aENvbnN0YW50c0ludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsK
K30KIAogY2xhc3MgRm9sZFBhdGhDb25zdGFudHMgewogcHVibGljOgpAQCAtNTUsNyArNTcsNyBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKIAotICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEIzRm9sZFBhdGhDb25zdGFudHNJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkIzIGJlZm9yZSBmb2xkaW5nIHBhdGggY29u
c3RhbnRzOiBcbiIsIG1fcHJvYywgIlxuIik7CiAgICAgICAgIAogICAgICAgICAvLyBGaW5kIGFs
bCBvZiB0aGUgdmFsdWVzIHRoYXQgYXJlIHRoZSBzdWJqZWN0IG9mIGEgYnJhbmNoIG9yIHN3aXRj
aC4gRm9yIGFueSBzdWNjZXNzb3IKQEAgLTgwLDcgKzgyLDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgICAgICBBU1NFUlRfVU5VU0VEKG90aGVyT3ZlcnJpZGUsIG90aGVyT3ZlcnJpZGUuYmxv
Y2sgIT0gb3ZlcnJpZGUuYmxvY2spOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0ZvbGRQYXRoQ29uc3RhbnRzSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiT3ZlcnJpZGluZyAiLCAqdmFsdWUsICIg
ZnJvbSAiLCAqZnJvbSwgIjogIiwgb3ZlcnJpZGUsICJcbiIpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBmb3JWYWx1ZS5hcHBlbmQob3ZlcnJpZGUpOwpAQCAtMTQ5LDcgKzE1MSw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gb3ZlcnJpZGU7CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzRm9sZFBh
dGhDb25zdGFudHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJJ
biBibG9jayAiLCAqYmxvY2ssICIgZ2V0dGluZyBvdmVycmlkZSBmb3IgIiwgKnZhbHVlLCAiOiAi
LCByZXN1bHQsICJcbiIpOwogCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5mZXJTd2l0Y2hlcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNJbmZlclN3aXRjaGVzLmNwcAppbmRleCBmMjlmNGYwOTU0YjJh
ZTcyMDA1YTEzMDJlZmZjY2Q0ZTM0ZGZiODc4Li5lZTYxMmZlZjI4YzZhNzdhYWMxNWM5OGE5N2Fj
OTM5MmIxM2M1YWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbmZl
clN3aXRjaGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbmZlclN3aXRj
aGVzLmNwcApAQCAtNDIsNyArNDIsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsK
IAogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2Ug
QjNJbmZlclN3aXRjaGVzSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZh
bHNlOworfQogCiBjbGFzcyBJbmZlclN3aXRjaGVzIHsKIHB1YmxpYzoKQEAgLTU1LDcgKzU3LDcg
QEAgcHVibGljOgogICAgIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICBpZiAoQjNJbmZlclN3aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICBkYXRhTG9nKCJCMyBiZWZvcmUgaW5mZXJTd2l0Y2hlczpcbiIsIG1fcHJvYyk7CiAg
ICAgICAgIAogICAgICAgICBib29sIGNoYW5nZWQgPSB0cnVlOwpAQCAtNjMsNyArNjUsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHdoaWxlIChjaGFuZ2VkKSB7CiAgICAgICAgICAgICBjaGFuZ2VkID0g
ZmFsc2U7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAg
ICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAg
IGRhdGFMb2coIlBlcmZvcm1pbmcgZml4cG9pbnQgaXRlcmF0aW9uOlxuIik7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX3Byb2MpCkBAIC03OCw3
ICs4MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9wcm9jLmRlbGV0
ZU9ycGhhbnMoKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgICAgICBpZiAoQjNJbmZlclN3aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiQjMgYWZ0ZXIgaW5mZXJTd2l0Y2hlczpcbiIsIG1fcHJvYyk7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtOTYsMTAgKzk4LDEwIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgICAgICBTd2l0Y2hE
ZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiA9IGRlc2NyaWJlKGJsb2NrKTsKLSAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgIGRhdGFMb2coIkRlc2NyaXB0aW9uIG9mIHByaW1hcnkgYmxvY2sgIiwgKmJsb2Nr
LCAiOiAiLCBkZXNjcmlwdGlvbiwgIlxuIik7CiAgICAgICAgIGlmICghZGVzY3JpcHRpb24pIHsK
LSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzSW5mZXJTd2l0Y2hl
c0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBCYWlsaW5n
IGJlY2F1c2Ugbm90IHN3aXRjaC1saWtlLlxuIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KQEAgLTExNSwxNyArMTE3LDE3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAodmFsdWUgPT0gZGVzY3JpcHRpb24uYnJhbmNo
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisg
ICAgICAgICAgICBpZiAoQjNJbmZlclN3aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiICAgIEJhaWxpbmcgYmVjYXVzZSBvZiAiLCBkZWVwRHVtcChtX3By
b2MsIHZhbHVlKSwgIlxuIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yID0gYmxvY2stPnByZWRl
Y2Vzc29yKDApOwogICAgICAgICBTd2l0Y2hEZXNjcmlwdGlvbiBwcmVkZWNlc3NvckRlc2NyaXB0
aW9uID0gZGVzY3JpYmUocHJlZGVjZXNzb3IpOwotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0
YUxvZygiICAgIERlc2NyaXB0aW9uIG9mIHByZWRlY2Vzc29yIGJsb2NrICIsICpwcmVkZWNlc3Nv
ciwgIjogIiwgcHJlZGVjZXNzb3JEZXNjcmlwdGlvbiwgIlxuIik7CiAgICAgICAgIGlmICghcHJl
ZGVjZXNzb3JEZXNjcmlwdGlvbikgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICBpZiAoQjNJbmZlclN3aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiICAgIEJhaWxpbmcgYmVjYXVzZSBub3Qgc3dpdGNoLWxpa2UuXG4iKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMTMzLDcgKzEzNSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIC8vIEJvdGggdXMgYW5kIHRoZSBwcmVkZWNlc3NvciBhcmUgc3dpdGNo
LWxpa2UsIGJ1dCB0aGF0IGRvZXNuJ3QgbWVhbiB0aGF0IHdlJ3JlIGNvbXBhdGlibGUuCiAgICAg
ICAgIC8vIFdlIG1heSBiZSBzd2l0Y2hpbmcgb24gZGlmZmVyZW50IHZhbHVlcyEKICAgICAgICAg
aWYgKGRlc2NyaXB0aW9uLnNvdXJjZSAhPSBwcmVkZWNlc3NvckRlc2NyaXB0aW9uLnNvdXJjZSkg
ewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNJbmZlclN3aXRj
aGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEJhaWxp
bmcgYmVjYXVzZSBzb3VyY2VzIGRvbid0IG1hdGNoLlxuIik7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KQEAgLTE0Myw3ICsxNDUsNyBAQCBwcml2YXRlOgogICAgICAgICAv
LyBqdXN0IHRvdGFsbHkgcmVkdW5kYW50IGFuZCB3ZSBzaG91bGQgYmUgZ2V0dGluZyByaWQgb2Yg
aXQuIEJ1dCB3ZSBkb24ndCBoYW5kbGUgdGhhdCBoZXJlLAogICAgICAgICAvLyB5ZXQuCiAgICAg
ICAgIGlmIChwcmVkZWNlc3NvckRlc2NyaXB0aW9uLmZhbGxUaHJvdWdoLmJsb2NrKCkgIT0gYmxv
Y2spIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzSW5mZXJT
d2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBC
YWlsaW5nIGJlY2F1c2UgZmFsbC10aHJvdWdoIG9mIHByZWRlY2Vzc29yIGlzIG5vdCB0aGUgcHJp
bWFyeSBibG9jay5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBA
IC0xNTEsMTQgKzE1MywxNCBAQCBwcml2YXRlOgogICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0
aGVyZSBhaW4ndCBubyBsb29wcy4KICAgICAgICAgaWYgKGRlc2NyaXB0aW9uLmZhbGxUaHJvdWdo
LmJsb2NrKCkgPT0gYmxvY2sKICAgICAgICAgICAgIHx8IGRlc2NyaXB0aW9uLmZhbGxUaHJvdWdo
LmJsb2NrKCkgPT0gcHJlZGVjZXNzb3IpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICAgICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgICAgIGRhdGFMb2coIiAgICBCYWlsaW5nIGJlY2F1c2Ugb2YgZmFsbC10aHJvdWdoIGxvb3Au
XG4iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBmb3Ig
KFN3aXRjaENhc2Ugc3dpdGNoQ2FzZSA6IGRlc2NyaXB0aW9uLmNhc2VzKSB7CiAgICAgICAgICAg
ICBpZiAoc3dpdGNoQ2FzZS50YXJnZXRCbG9jaygpID09IGJsb2NrCiAgICAgICAgICAgICAgICAg
fHwgc3dpdGNoQ2FzZS50YXJnZXRCbG9jaygpID09IHByZWRlY2Vzc29yKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0lu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGlu
ZyBiZWNhdXNlIG9mIGxvb3AgaW4gcHJpbWFyeSBjYXNlcy5cbiIpOwogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KQEAgLTE2NiwxMyArMTY4LDEzIEBAIHByaXZh
dGU6CiAgICAgICAgIGZvciAoU3dpdGNoQ2FzZSBzd2l0Y2hDYXNlIDogcHJlZGVjZXNzb3JEZXNj
cmlwdGlvbi5jYXNlcykgewogICAgICAgICAgICAgaWYgKHN3aXRjaENhc2UudGFyZ2V0QmxvY2so
KSA9PSBibG9jawogICAgICAgICAgICAgICAgIHx8IHN3aXRjaENhc2UudGFyZ2V0QmxvY2soKSA9
PSBwcmVkZWNlc3NvcikgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAg
ICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiICAgIEJhaWxpbmcgYmVjYXVzZSBvZiBsb29wIGluIHByZWRlY2Vz
c29yIGNhc2VzLlxuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
aWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxv
ZygiICAgIERvaW5nIGl0IVxuIik7CiAgICAgICAgIC8vIFdlJ3JlIGNvbW1pdHRlZCB0byBkb2lu
ZyB0aGUgdGhpbmcuCiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwCmluZGV4IDk2M2Mx
MGVkYzVlNDkzOWY1ZmJlMmVkNDI1NjRkZDNkN2UwNzYzZGQuLjE0NTY3ZmNjNWJkYWM5ZTBmOGU3
MTgxNjhkNmZmMjc3MGM2NDhmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJBaXJBcmcuaCIKICNp
bmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNCbG9ja0luc2VydGlv
blNldC5oIgogI2luY2x1ZGUgIkIzQ0NhbGxWYWx1ZS5oIgpAQCAtMzksMTEgKzQwLDE1IEBACiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCit1c2luZyBBcmcgPSBBaXI6OkFyZzsK
K3VzaW5nIENvZGUgPSBBaXI6OkNvZGU7Cit1c2luZyBUbXAgPSBBaXI6OlRtcDsKKwogbmFtZXNw
YWNlIHsKIAotY2xhc3MgTG93ZXJNYWNyb3MgeworY2xhc3MgTG93ZXJNYWNyb3NBZnRlck9wdGlt
aXphdGlvbnMgewogcHVibGljOgotICAgIExvd2VyTWFjcm9zKFByb2NlZHVyZSYgcHJvYykKKyAg
ICBMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucyhQcm9jZWR1cmUmIHByb2MpCiAgICAgICAg
IDogbV9wcm9jKHByb2MpCiAgICAgICAgICwgbV9ibG9ja0luc2VydGlvblNldChwcm9jKQogICAg
ICAgICAsIG1faW5zZXJ0aW9uU2V0KHByb2MpCkBAIC0xODMsNyArMTg4LDcgQEAgcHJpdmF0ZToK
IAogYm9vbCBsb3dlck1hY3Jvc0ltcGwoUHJvY2VkdXJlJiBwcm9jKQogewotICAgIExvd2VyTWFj
cm9zIGxvd2VyTWFjcm9zKHByb2MpOworICAgIExvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25z
IGxvd2VyTWFjcm9zKHByb2MpOwogICAgIHJldHVybiBsb3dlck1hY3Jvcy5ydW4oKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCAxNDg5YzMxMWM2
M2VlMDAyZmE5MWE3NjFiMWQ2MDYwY2FmNGUyOTMxLi43NjRkYjRjYmQ4NjhkZDg1MGJkOGEzYWJk
MTQ4MmFmYTQyMzg0MmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWly
LmNwcApAQCAtNjksMjEgKzY5LDI2IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMg
ewogCi11c2luZyBuYW1lc3BhY2UgQWlyOwotCiBuYW1lc3BhY2UgewogCi1jb25zdCBib29sIHZl
cmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBCM0xvd2VyVG9BaXJJbnRlcm5hbCB7CitzdGF0aWMg
Y29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CisKK3VzaW5nIEFyZyA9IEFpcjo6QXJnOwor
dXNpbmcgSW5zdCA9IEFpcjo6SW5zdDsKK3VzaW5nIENvZGUgPSBBaXI6OkNvZGU7Cit1c2luZyBU
bXAgPSBBaXI6OlRtcDsKIAogLy8gRklYTUU6IFdlIHdvdWxkbid0IG5lZWQgdGhpcyBpZiBBaXIg
c3VwcG9ydGVkIFdpZHRoIG1vZGlmaWVycyBpbiBBaXI6OktpbmQuCiAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MjQ3CiAjZGVmaW5lIE9QQ09ERV9GT1JfV0lE
VEgob3Bjb2RlLCB3aWR0aCkgKCBcCi0gICAgKHdpZHRoKSA9PSBXaWR0aDggPyBvcGNvZGUgIyMg
OCA6IFwKLSAgICAod2lkdGgpID09IFdpZHRoMTYgPyBvcGNvZGUgIyMgMTYgOiBcCi0gICAgKHdp
ZHRoKSA9PSBXaWR0aDMyID8gb3Bjb2RlICMjIDMyIDogXAotICAgIG9wY29kZSAjIyA2NCkKKyAg
ICAod2lkdGgpID09IFdpZHRoOCA/IEFpcjo6b3Bjb2RlICMjIDggOiBcCisgICAgKHdpZHRoKSA9
PSBXaWR0aDE2ID8gQWlyOjpvcGNvZGUgIyMgMTYgOiAgICBcCisgICAgKHdpZHRoKSA9PSBXaWR0
aDMyID8gQWlyOjpvcGNvZGUgIyMgMzIgOiAgICBcCisgICAgQWlyOjpvcGNvZGUgIyMgNjQpCiAj
ZGVmaW5lIE9QQ09ERV9GT1JfQ0FOT05JQ0FMX1dJRFRIKG9wY29kZSwgd2lkdGgpICggXAotICAg
ICh3aWR0aCkgPT0gV2lkdGg2NCA/IG9wY29kZSAjIyA2NCA6IG9wY29kZSAjIyAzMikKKyAgICAo
d2lkdGgpID09IFdpZHRoNjQgPyBBaXI6Om9wY29kZSAjIyA2NCA6IEFpcjo6b3Bjb2RlICMjIDMy
KQogCiBjbGFzcyBMb3dlclRvQWlyIHsKIHB1YmxpYzoKQEAgLTEwNyw2ICsxMTIsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHJ1bigpCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWly
OwogICAgICAgICBmb3IgKEIzOjpCYXNpY0Jsb2NrKiBibG9jayA6IG1fcHJvY2VkdXJlKQogICAg
ICAgICAgICAgbV9ibG9ja1RvQmxvY2tbYmxvY2tdID0gbV9jb2RlLmFkZEJsb2NrKGJsb2NrLT5m
cmVxdWVuY3koKSk7CiAgICAgICAgIApAQCAtMTE0LDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHN3aXRjaCAodmFsdWUtPm9wY29kZSgpKSB7CiAgICAgICAgICAgICBjYXNlIFBoaTog
ewogICAgICAgICAgICAgICAgIG1fcGhpVG9UbXBbdmFsdWVdID0gbV9jb2RlLm5ld1RtcCh2YWx1
ZS0+cmVzdWx0QmFuaygpKTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgICAgICBpZiAoQjNMb3dlclRvQWlySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIlBoaSB0bXAgZm9yICIsICp2YWx1ZSwgIjogIiwgbV9waGlUb1RtcFt2
YWx1ZV0sICJcbiIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAt
MTQ2LDcgKzE1Miw3IEBAIHB1YmxpYzoKIAogICAgICAgICAgICAgbV9pc1JhcmUgPSAhbV9mYXN0
V29ya2xpc3Quc2F3KGJsb2NrKTsKIAotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICBpZiAoQjNMb3dlclRvQWlySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiTG93ZXJpbmcgQmxvY2sgIiwgKmJsb2NrLCAiOlxuIik7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBzdWNjZXNzb3JzIGFyZSBzZXQgdXAg
Y29ycmVjdGx5LgpAQCAtMTYzLDEwICsxNjksMTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
IGlmIChtX2xvY2tlZC5jb250YWlucyhtX3ZhbHVlKSkKICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICAgICAgbV9pbnN0cy5hcHBlbmQoVmVjdG9yPEluc3Q+KCkpOwot
ICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChCM0xvd2Vy
VG9BaXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiTG93
ZXJpbmcgIiwgZGVlcER1bXAobV9wcm9jZWR1cmUsIG1fdmFsdWUpLCAiOlxuIik7CiAgICAgICAg
ICAgICAgICAgbG93ZXIoKTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAg
ICAgICAgICAgIGlmIChCM0xvd2VyVG9BaXJJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAg
ICAgICAgICAgICBmb3IgKEluc3QmIGluc3QgOiBtX2luc3RzLmxhc3QoKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2coIiAgICAiLCBpbnN0LCAiXG4iKTsKICAgICAgICAgICAgICAg
ICB9CkBAIC0zNzksNyArMzg1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByZWFsVG1w
ID0gbV9jb2RlLm5ld1RtcCh2YWx1ZS0+cmVzdWx0QmFuaygpKTsKICAgICAgICAgICAgICAgICBp
ZiAobV9wcm9jZWR1cmUuaXNGYXN0Q29uc3RhbnQodmFsdWUtPmtleSgpKSkKICAgICAgICAgICAg
ICAgICAgICAgbV9jb2RlLmFkZEZhc3RUbXAocmVhbFRtcCk7Ci0gICAgICAgICAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEIzTG93ZXJUb0FpckludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJUbXAgZm9yICIsICp2YWx1ZSwgIjog
IiwgcmVhbFRtcCwgIlxuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB0bXAgPSByZWFs
VG1wOwpAQCAtOTA2LDYgKzkxMiw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8QWlyOjpPcGNv
ZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0PgogICAgIHZvaWQgYXBwZW5kU2hpZnQo
VmFsdWUqIHZhbHVlLCBWYWx1ZSogYW1vdW50KQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNw
YWNlIEFpcjsKICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShvcGNv
ZGUzMiwgb3Bjb2RlNjQsIHZhbHVlLT50eXBlKCkpOwogICAgICAgICAKICAgICAgICAgaWYgKGlt
bShhbW91bnQpKSB7CkBAIC0xMDE5LDYgKzEwMjYsNyBAQCBwcml2YXRlOgogCiAgICAgSW5zdCBj
cmVhdGVTdG9yZShBaXI6OktpbmQgbW92ZSwgVmFsdWUqIHZhbHVlLCBjb25zdCBBcmcmIGRlc3Qp
CiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICBpZiAoYXV0byBp
bW1fdmFsdWUgPSBpbW0odmFsdWUpKSB7CiAgICAgICAgICAgICBpZiAoaXNBUk02NCgpICYmIGlt
bV92YWx1ZS52YWx1ZSgpID09IDApIHsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1vdmUub3Bj
b2RlKSB7CkBAIC0xMDQzLDYgKzEwNTEsNyBAQCBwcml2YXRlOgogICAgIAogICAgIEFpcjo6T3Bj
b2RlIHN0b3JlT3Bjb2RlKFdpZHRoIHdpZHRoLCBCYW5rIGJhbmspCiAgICAgeworICAgICAgICB1
c2luZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICBzd2l0Y2ggKHdpZHRoKSB7CiAgICAgICAgIGNh
c2UgV2lkdGg4OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFuayA9PSBHUCk7CkBAIC0x
MDczLDYgKzEwODIsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgYXBwZW5kU3RvcmUoVmFs
dWUqIHZhbHVlLCBjb25zdCBBcmcmIGRlc3QpCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3Bh
Y2UgQWlyOwogICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gdmFsdWUtPmFzPE1lbW9yeVZh
bHVlPigpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChtZW1vcnktPmlzU3RvcmUoKSk7CiAKQEAg
LTExMDAsNiArMTExMCw3IEBAIHByaXZhdGU6CiAKICAgICBBaXI6Ok9wY29kZSBtb3ZlRm9yVHlw
ZShUeXBlIHR5cGUpCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAgICAg
ICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBJbnQzMjoKICAgICAgICAgICAgIHJldHVy
biBNb3ZlMzI7CkBAIC0xMTE5LDYgKzExMzAsNyBAQCBwcml2YXRlOgogCiAgICAgQWlyOjpPcGNv
ZGUgcmVsYXhlZE1vdmVGb3JUeXBlKFR5cGUgdHlwZSkKICAgICB7CisgICAgICAgIHVzaW5nIG5h
bWVzcGFjZSBBaXI7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIEludDMy
OgogICAgICAgICBjYXNlIEludDY0OgpAQCAtMTE2Miw4ICsxMTc0LDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHByaW50KFZhbHVlKiBvcmlnaW4sIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAg
ICB7CiAgICAgICAgIGF1dG8gcHJpbnRMaXN0ID0gUHJpbnRlcjo6bWFrZVByaW50UmVjb3JkTGlz
dChhcmd1bWVudHMuLi4pOwotICAgICAgICBhdXRvIHByaW50U3BlY2lhbCA9IHN0YXRpY19jYXN0
PFByaW50U3BlY2lhbCo+KG1fY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8UHJpbnRT
cGVjaWFsPihwcmludExpc3QpKSk7Ci0gICAgICAgIEluc3QgaW5zdChQYXRjaCwgb3JpZ2luLCBB
cmc6OnNwZWNpYWwocHJpbnRTcGVjaWFsKSk7CisgICAgICAgIGF1dG8gcHJpbnRTcGVjaWFsID0g
c3RhdGljX2Nhc3Q8QWlyOjpQcmludFNwZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChzdGQ6Om1h
a2VfdW5pcXVlPEFpcjo6UHJpbnRTcGVjaWFsPihwcmludExpc3QpKSk7CisgICAgICAgIEluc3Qg
aW5zdChBaXI6OlBhdGNoLCBvcmlnaW4sIEFyZzo6c3BlY2lhbChwcmludFNwZWNpYWwpKTsKICAg
ICAgICAgUHJpbnRlcjo6YXBwZW5kQWlyQXJncyhpbnN0LCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRz
Pihhcmd1bWVudHMpLi4uKTsKICAgICAgICAgYXBwZW5kKFdURk1vdmUoaW5zdCkpOwogICAgIH0K
QEAgLTE3NjIsNiArMTc3NCw3IEBAIHByaXZhdGU6CiAKICAgICBJbnN0IGNyZWF0ZUJyYW5jaChW
YWx1ZSogdmFsdWUsIGJvb2wgaW52ZXJ0ZWQgPSBmYWxzZSkKICAgICB7CisgICAgICAgIHVzaW5n
IG5hbWVzcGFjZSBBaXI7CiAgICAgICAgIHJldHVybiBjcmVhdGVHZW5lcmljQ29tcGFyZSgKICAg
ICAgICAgICAgIHZhbHVlLAogICAgICAgICAgICAgW3RoaXNdICgKQEAgLTE4NDUsNiArMTg1OCw3
IEBAIHByaXZhdGU6CiAKICAgICBJbnN0IGNyZWF0ZUNvbXBhcmUoVmFsdWUqIHZhbHVlLCBib29s
IGludmVydGVkID0gZmFsc2UpCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwog
ICAgICAgICByZXR1cm4gY3JlYXRlR2VuZXJpY0NvbXBhcmUoCiAgICAgICAgICAgICB2YWx1ZSwK
ICAgICAgICAgICAgIFt0aGlzXSAoCkBAIC0xOTI0LDYgKzE5MzgsNyBAQCBwcml2YXRlOgogICAg
IH07CiAgICAgSW5zdCBjcmVhdGVTZWxlY3QoY29uc3QgTW92ZUNvbmRpdGlvbmFsbHlDb25maWcm
IGNvbmZpZykKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAgIGF1
dG8gY3JlYXRlU2VsZWN0SW5zdHJ1Y3Rpb24gPSBbJl0gKEFpcjo6T3Bjb2RlIG9wY29kZSwgY29u
c3QgQXJnJiBjb25kaXRpb24sIEFyZ1Byb21pc2UmIGxlZnQsIEFyZ1Byb21pc2UmIHJpZ2h0KSAt
PiBJbnN0IHsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkRm9ybShvcGNvZGUsIGNvbmRpdGlvbi5r
aW5kKCksIGxlZnQua2luZCgpLCByaWdodC5raW5kKCksIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJn
OjpUbXApKSB7CiAgICAgICAgICAgICAgICAgVG1wIHJlc3VsdCA9IHRtcChtX3ZhbHVlKTsKQEAg
LTE5ODcsNiArMjAwMiw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgYm9vbCB0cnlBcHBlbmRMZWEo
KQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAgQWlyOjpPcGNv
ZGUgbGVhT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShMZWEzMiwgTGVhNjQsIG1fdmFsdWUtPnR5
cGUoKSk7CiAgICAgICAgIGlmICghaXNWYWxpZEZvcm0obGVhT3Bjb2RlLCBBcmc6OkluZGV4LCBB
cmc6OlRtcCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTE2LDYgKzIxMzIsNyBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBhcHBlbmRYODZEaXYoQjM6Ok9wY29kZSBvcCkKICAgICB7
CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAgIEFpcjo6T3Bjb2RlIGNvbnZl
cnRUb0RvdWJsZVdvcmQ7CiAgICAgICAgIEFpcjo6T3Bjb2RlIGRpdjsKICAgICAgICAgc3dpdGNo
IChtX3ZhbHVlLT50eXBlKCkpIHsKQEAgLTIxNDMsNiArMjE2MCw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGFwcGVuZFg4NlVEaXYoQjM6Ok9wY29kZSBvcCkKICAgICB7CisgICAgICAgIHVzaW5n
IG5hbWVzcGFjZSBBaXI7CiAgICAgICAgIEFpcjo6T3Bjb2RlIGRpdiA9IG1fdmFsdWUtPnR5cGUo
KSA9PSBJbnQzMiA/IFg4NlVEaXYzMiA6IFg4NlVEaXY2NDsKIAogICAgICAgICBBU1NFUlQob3Ag
PT0gVURpdiB8fCBvcCA9PSBVTW9kKTsKQEAgLTIxNzgsNiArMjE5Niw3IEBAIHByaXZhdGU6CiAg
ICAgLy8gZ2VuZXJhdGVkLiBJdCBhc3N1bWVzIHRoYXQgeW91J3ZlIGNvbnN1bWVkIGV2ZXJ5dGhp
bmcgdGhhdCBuZWVkcyB0byBiZSBjb25zdW1lZC4KICAgICB2b2lkIGFwcGVuZENBUyhWYWx1ZSog
YXRvbWljVmFsdWUsIGJvb2wgaW52ZXJ0KQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNl
IEFpcjsKICAgICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IGF0b21pY1ZhbHVlLT5hczxBdG9t
aWNWYWx1ZT4oKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXRvbWljKTsKICAgICAgICAgCkBA
IC0yMzQwLDYgKzIzNTksNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgYXBwZW5kR2VuZXJh
bEF0b21pYyhBaXI6Ok9wY29kZSBvcGNvZGUsIENvbW11dGF0aXZpdHkgY29tbXV0YXRpdml0eSA9
IE5vdENvbW11dGF0aXZlKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAg
ICAgICAgQXRvbWljVmFsdWUqIGF0b21pYyA9IG1fdmFsdWUtPmFzPEF0b21pY1ZhbHVlPigpOwog
ICAgICAgICAKICAgICAgICAgQXJnIGFkZHJlc3MgPSBhZGRyKG1fdmFsdWUpOwpAQCAtMjQyNCw2
ICsyNDQ0LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGxvd2VyKCkKICAgICB7CisgICAg
ICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAgIHN3aXRjaCAobV92YWx1ZS0+b3Bjb2Rl
KCkpIHsKICAgICAgICAgY2FzZSBCMzo6Tm9wOiB7CiAgICAgICAgICAgICAvLyBZZXMsIHdlIHdp
bGwgdG90YWxseSBzZWUgTm9wJ3MgYmVjYXVzZSBzb21lIHBoYXNlcyB3aWxsIHJlcGxhY2VXaXRo
Tm9wKCkgaW5zdGVhZCBvZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UGF0Y2hwb2ludFNwZWNpYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGF0Y2hw
b2ludFNwZWNpYWwuY3BwCmluZGV4IDQ3ZjBhYmQyZmZmM2I1MDU3MDgyZDcwM2E1MTQyM2M4Y2Iz
OGIwYjAuLmIzNzVjZGQwZTBmYjBiZjA4NjIwNGQxMjc2M2FhMGQ1MmIxODEyYTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRTcGVjaWFsLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHAKQEAgLTM0
LDcgKzM0LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKLXVzaW5nIG5h
bWVzcGFjZSBBaXI7Cit1c2luZyBBcmcgPSBBaXI6OkFyZzsKK3VzaW5nIEluc3QgPSBBaXI6Oklu
c3Q7CiAKIFBhdGNocG9pbnRTcGVjaWFsOjpQYXRjaHBvaW50U3BlY2lhbCgpCiB7CkBAIC0xMzUs
OCArMTM2LDcgQEAgYm9vbCBQYXRjaHBvaW50U3BlY2lhbDo6YWRtaXRzRXh0ZW5kZWRPZmZzZXRB
ZGRyKEluc3QmIGluc3QsIHVuc2lnbmVkIGFyZ0luZGV4KQogICAgIHJldHVybiBhZG1pdHNTdGFj
ayhpbnN0LCBhcmdJbmRleCk7CiB9CiAKLUNDYWxsSGVscGVyczo6SnVtcCBQYXRjaHBvaW50U3Bl
Y2lhbDo6Z2VuZXJhdGUoCi0gICAgSW5zdCYgaW5zdCwgQ0NhbGxIZWxwZXJzJiBqaXQsIEdlbmVy
YXRpb25Db250ZXh0JiBjb250ZXh0KQorQ0NhbGxIZWxwZXJzOjpKdW1wIFBhdGNocG9pbnRTcGVj
aWFsOjpnZW5lcmF0ZShJbnN0JiBpbnN0LCBDQ2FsbEhlbHBlcnMmIGppdCwgQWlyOjpHZW5lcmF0
aW9uQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBQYXRjaHBvaW50VmFsdWUqIHZhbHVlID0gaW5z
dC5vcmlnaW4tPmFzPFBhdGNocG9pbnRWYWx1ZT4oKTsKICAgICBBU1NFUlQodmFsdWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcApp
bmRleCAxYzdiMGQwMDJhMWI5MTllMjMwZmU2NDZiMDMyZTRhNGU5OWNkMTYxLi42ZDMxZjdjYmMw
NDY3Y2JkZDZmNmUzYzU4YzYwY2MzZTkxN2NjZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcApAQCAtMzksNyArMzksOSBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogbmFtZXNwYWNlIHsKIAotYm9vbCB2ZXJi
b3NlID0gZmFsc2U7CituYW1lc3BhY2UgQjNSZWR1Y2VEb3VibGVUb0Zsb2F0SW50ZXJuYWwgewor
c3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogYm9vbCBwcmludFJlbWFpbmlu
Z0NvbnZlcnNpb25zID0gZmFsc2U7CiAKIGNsYXNzIERvdWJsZVRvRmxvYXRSZWR1Y3Rpb24gewpA
QCAtMTI4LDcgKzEzMCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gd2hp
bGUgKGNoYW5nZWRQaGlTdGF0ZSk7CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAg
aWYgKEIzUmVkdWNlRG91YmxlVG9GbG9hdEludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAg
ICBkYXRhTG9nKCJDb252ZXJzaW9uIGNhbmRpZGF0ZXM6XG4iKTsKICAgICAgICAgICAgIGZvciAo
QmFzaWNCbG9jayogYmxvY2sgOiBtX3Byb2NlZHVyZSkgewogICAgICAgICAgICAgICAgIGZvciAo
VmFsdWUqIHZhbHVlIDogKmJsb2NrKSB7CkBAIC0xOTIsNyArMTk0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIH0KICAgICAgICAgfSB3aGlsZSAoY2hhbmdlZFBoaVN0YXRlKTsKIAotICAgICAg
ICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoQjNSZWR1Y2VEb3VibGVUb0Zsb2F0SW50ZXJu
YWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIlBoaXMgY29udGFpbmluZyBmbG9h
dCB2YWx1ZXM6XG4iKTsKICAgICAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX3By
b2NlZHVyZSkgewogICAgICAgICAgICAgICAgIGZvciAoVmFsdWUqIHZhbHVlIDogKmJsb2NrKSB7
CkBAIC00ODksMTMgKzQ5MSwxMyBAQCB2b2lkIHJlZHVjZURvdWJsZVRvRmxvYXQoUHJvY2VkdXJl
JiBwcm9jZWR1cmUpCiB7CiAgICAgUGhhc2VTY29wZSBwaGFzZVNjb3BlKHByb2NlZHVyZSwgInJl
ZHVjZURvdWJsZVRvRmxvYXQiKTsKIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChCM1JlZHVj
ZURvdWJsZVRvRmxvYXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQmVmb3Jl
IERvdWJsZVRvRmxvYXRSZWR1Y3Rpb246XG4iLCBwcm9jZWR1cmUsICJcbiIpOwogCiAgICAgRG91
YmxlVG9GbG9hdFJlZHVjdGlvbiBkb3VibGVUb0Zsb2F0UmVkdWN0aW9uKHByb2NlZHVyZSk7CiAg
ICAgZG91YmxlVG9GbG9hdFJlZHVjdGlvbi5ydW4oKTsKIAotICAgIGlmICh2ZXJib3NlKQorICAg
IGlmIChCM1JlZHVjZURvdWJsZVRvRmxvYXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0
YUxvZygiQWZ0ZXIgRG91YmxlVG9GbG9hdFJlZHVjdGlvbjpcbiIsIHByb2NlZHVyZSwgIlxuIik7
CiAKICAgICBwcmludEdyYXBoSWZDb252ZXJ0aW5nKHByb2NlZHVyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKaW5kZXggYzIyZTliNDUzZDA5NTI5
NjdmMjJhNmZmYmE2NDkxZmZkMDBmOWM2Yy4uNTUwMmQ1ZTQ3ZTU4NzA2MTA2MmIxNjg2ZDliYjNj
MjY5MzU4Yjk0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNl
U3RyZW5ndGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVu
Z3RoLmNwcApAQCAtODgsNyArODgsOSBAQCBuYW1lc3BhY2UgewogLy8gY29uc3RhbnRzIHRoZW4g
dGhlIGNhbm9uaWNhbCBmb3JtIGludm9sdmVzIHRoZSBsb3dlci1pbmRleGVkIHZhbHVlIGZpcnN0
LiBHaXZlbiBBZGQoeCwgeSksIGl0J3MKIC8vIGNhbm9uaWNhbCBpZiB4LT5pbmRleCgpIDw9IHkt
PmluZGV4KCkuCiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEIzUmVkdWNlU3Ry
ZW5ndGhJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAK
IC8vIEZJWE1FOiBUaGlzIEludFJhbmdlIHN0dWZmIHNob3VsZCBiZSByZWZhY3RvcmVkIGludG8g
YSBnZW5lcmFsIGNvbnN0YW50IHByb3BhZ2F0b3IuIEl0J3Mgd2VpcmQKIC8vIHRoYXQgaXQncyBq
dXN0IHNpdHRpbmcgaGVyZSBpbiB0aGlzIGZpbGUuCkBAIC00MTQsNyArNDE2LDcgQEAgcHVibGlj
OgogCiAgICAgICAgICAgICBpZiAoZmlyc3QpCiAgICAgICAgICAgICAgICAgZmlyc3QgPSBmYWxz
ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGVsc2UgaWYg
KEIzUmVkdWNlU3RyZW5ndGhJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgIGRh
dGFMb2coIkIzIGFmdGVyIGl0ZXJhdGlvbiAjIiwgaW5kZXggLSAxLCAiIG9mIHJlZHVjZVN0cmVu
Z3RoOlxuIik7CiAgICAgICAgICAgICAgICAgZGF0YUxvZyhtX3Byb2MpOwogICAgICAgICAgICAg
fQpAQCAtNDUyLDcgKzQ1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBtX2Jsb2NrID0g
YmxvY2s7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZm9yIChtX2luZGV4ID0g
MDsgbV9pbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbV9pbmRleCkgewotICAgICAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoQjNSZWR1Y2VTdHJl
bmd0aEludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMb29raW5nIGF0ICIsICpibG9jaywgIiAj
IiwgbV9pbmRleCwgIjogIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWVwRHVtcCht
X3Byb2MsIGJsb2NrLT5hdChtX2luZGV4KSksICJcbiIpOwpAQCAtMjAzNSw3ICsyMDM3LDcgQEAg
cHJpdmF0ZToKICAgICAvLyBlYXJseS4KICAgICB2b2lkIHNwZWNpYWxpemVTZWxlY3QoVmFsdWUq
IHNvdXJjZSkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQjNSZWR1
Y2VTdHJlbmd0aEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiU3BlY2lh
bGl6aW5nIHNlbGVjdDogIiwgZGVlcER1bXAobV9wcm9jLCBzb3VyY2UpLCAiXG4iKTsKIAogICAg
ICAgICAvLyBUaGlzIG11dGF0ZXMgc3RhcnRJbmRleCB0byBhY2NvdW50IGZvciB0aGUgZmFjdCB0
aGF0IG1fYmxvY2sgZ290IHRoZSBmcm9udCBvZiBpdApAQCAtMjI3Niw3ICsyMjc4LDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgc2ltcGxpZnlDRkcoKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJv
c2UpIHsKKyAgICAgICAgaWYgKEIzUmVkdWNlU3RyZW5ndGhJbnRlcm5hbDo6dmVyYm9zZSkgewog
ICAgICAgICAgICAgZGF0YUxvZygiQmVmb3JlIHNpbXBsaWZ5Q0ZHOlxuIik7CiAgICAgICAgICAg
ICBkYXRhTG9nKG1fcHJvYyk7CiAgICAgICAgIH0KQEAgLTIzMDEsNyArMjMwMyw3IEBAIHByaXZh
dGU6CiAgICAgICAgIC8vIGl0ZXJhdGlvbnMgbmVlZGVkIHRvIGtpbGwgYSBsb3Qgb2YgY29kZS4K
IAogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jKSB7Ci0gICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM1JlZHVjZVN0cmVuZ3RoSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ29uc2lkZXJpbmcgYmxvY2sgIiwg
KmJsb2NrLCAiOlxuIik7CiAKICAgICAgICAgICAgIGNoZWNrUHJlZGVjZXNzb3JWYWxpZGl0eSgp
OwpAQCAtMjMxNyw3ICsyMzE5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgJiYg
c3VjY2Vzc29yLT5sYXN0KCktPm9wY29kZSgpID09IEp1bXApIHsKICAgICAgICAgICAgICAgICAg
ICAgQmFzaWNCbG9jayogbmV3U3VjY2Vzc29yID0gc3VjY2Vzc29yLT5zdWNjZXNzb3JCbG9jaygw
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1N1Y2Nlc3NvciAhPSBzdWNjZXNzb3IpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoQjNSZWR1Y2VTdHJlbmd0aEludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIlJlcGxhY2luZyAiLCBwb2ludGVyRHVtcChibG9jayksICItPiIsIHBvaW50ZXJEdW1w
KHN1Y2Nlc3NvciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgd2l0aCAiLCBw
b2ludGVyRHVtcChibG9jayksICItPiIsIHBvaW50ZXJEdW1wKG5ld1N1Y2Nlc3NvciksCkBAIC0y
MzQ4LDcgKzIzNTAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChhbGxTYW1lKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKEIzUmVkdWNlU3RyZW5ndGhJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJDaGFuZ2luZyAiLCBwb2ludGVyRHVtcChibG9jayksICIncyB0ZXJtaW5hbCB0byBhIEp1
bXAuXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTIzODcsNyArMjM4OSw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGZvciAoQmFzaWNCbG9jayogbmV3U3VjY2Vz
c29yIDogYmxvY2stPnN1Y2Nlc3NvckJsb2NrcygpKQogICAgICAgICAgICAgICAgICAgICAgICAg
bmV3U3VjY2Vzc29yLT5yZXBsYWNlUHJlZGVjZXNzb3Ioc3VjY2Vzc29yLCBibG9jayk7CiAKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KEIzUmVkdWNlU3RyZW5ndGhJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWVyZ2VkICIsIHBv
aW50ZXJEdW1wKGJsb2NrKSwgIi0+IiwgcG9pbnRlckR1bXAoc3VjY2Vzc29yKSwgIlxuIik7CiAg
ICAgICAgICAgICAgICAgICAgIH0KQEAgLTIzOTcsNyArMjM5OSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobV9jaGFuZ2VkQ0ZHICYmIHZlcmJv
c2UpIHsKKyAgICAgICAgaWYgKG1fY2hhbmdlZENGRyAmJiBCM1JlZHVjZVN0cmVuZ3RoSW50ZXJu
YWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkIzIGFmdGVyIHNpbXBsaWZ5Q0ZH
OlxuIik7CiAgICAgICAgICAgICBkYXRhTG9nKG1fcHJvYyk7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMu
Y3BwCmluZGV4IGJiYTg0Y2FmOGI0YmUwOWMyODg2M2M0MjkwMjA4NTJlNzA1MTE2MjIuLjM4OWVm
OGI5Y2EyZDYxMGVmZGE1N2I5ZDgwZWE5M2ViYjU4MmUxOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmNwcApAQCAt
MzQsOCArMzQsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAotdXNpbmcg
bmFtZXNwYWNlIEFpcjsKLQogY29uc3QgUmVnaXN0ZXJTZXQmIFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtczo6dXNlZFJlZ2lzdGVycygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fY29udGV4dC5jb2Rl
LT5uZWVkc1VzZWRSZWdpc3RlcnMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
U3RhY2ttYXBTcGVjaWFsLmNwcAppbmRleCA2MDM3MGM1NzhkZGZjMzI5MThlZmZiNWExYmRlODU3
OGU5M2YyZjcwLi41ZWI1YjliMGU2N2QzNzNjMzliYzdkOTZkOTNlZDlmNmFjNWQxODQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHAKQEAgLTM0
LDcgKzM0LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKLXVzaW5nIG5h
bWVzcGFjZSBBaXI7Cit1c2luZyBBcmcgPSBBaXI6OkFyZzsKK3VzaW5nIEluc3QgPSBBaXI6Oklu
c3Q7Cit1c2luZyBUbXAgPSBBaXI6OlRtcDsKIAogU3RhY2ttYXBTcGVjaWFsOjpTdGFja21hcFNw
ZWNpYWwoKQogewpAQCAtMjEwLDggKzIxMiw3IEBAIGJvb2wgU3RhY2ttYXBTcGVjaWFsOjphZG1p
dHNTdGFja0ltcGwoCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1WZWN0b3I8VmFsdWVSZXA+IFN0
YWNrbWFwU3BlY2lhbDo6cmVwc0ltcGwoCi0gICAgR2VuZXJhdGlvbkNvbnRleHQmIGNvbnRleHQs
IHVuc2lnbmVkIG51bUlnbm9yZWRCM0FyZ3MsIHVuc2lnbmVkIG51bUlnbm9yZWRBaXJBcmdzLCBJ
bnN0JiBpbnN0KQorVmVjdG9yPFZhbHVlUmVwPiBTdGFja21hcFNwZWNpYWw6OnJlcHNJbXBsKEFp
cjo6R2VuZXJhdGlvbkNvbnRleHQmIGNvbnRleHQsIHVuc2lnbmVkIG51bUlnbm9yZWRCM0FyZ3Ms
IHVuc2lnbmVkIG51bUlnbm9yZWRBaXJBcmdzLCBJbnN0JiBpbnN0KQogewogICAgIFZlY3RvcjxW
YWx1ZVJlcD4gcmVzdWx0OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnN0Lm9yaWdp
bi0+bnVtQ2hpbGRyZW4oKSAtIG51bUlnbm9yZWRCM0FyZ3M7ICsraSkKQEAgLTI2Nyw3ICsyNjgs
NyBAQCBib29sIFN0YWNrbWFwU3BlY2lhbDo6aXNBcmdWYWxpZEZvclJlcChBaXI6OkNvZGUmIGNv
ZGUsIGNvbnN0IEFpcjo6QXJnJiBhcmcsIGNvbgogICAgIH0KIH0KIAotVmFsdWVSZXAgU3RhY2tt
YXBTcGVjaWFsOjpyZXBGb3JBcmcoQ29kZSYgY29kZSwgY29uc3QgQXJnJiBhcmcpCitWYWx1ZVJl
cCBTdGFja21hcFNwZWNpYWw6OnJlcEZvckFyZyhBaXI6OkNvZGUmIGNvZGUsIGNvbnN0IEFyZyYg
YXJnKQogewogICAgIHN3aXRjaCAoYXJnLmtpbmQoKSkgewogICAgIGNhc2UgQXJnOjpUbXA6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlU3RhY2tC
eUdyYXBoQ29sb3JpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxv
Y2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcAppbmRleCBlODYwZDljY2M1Y2IwYWUxZDg3YzNh
ZmVmZGFiZjg4NjZmMzE3ZDFhLi5lZDY3ZDFjN2NkODlkYjA4YzBmOThjZjFmNjYzYTFmNWFiYzUy
ZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRl
U3RhY2tCeUdyYXBoQ29sb3JpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZy5jcHAKQEAgLTQyLDcgKzQyLDkgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewogCiBuYW1lc3Bh
Y2UgewogCi1jb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBBaXJBbGxvY2F0
ZVN0YWNrQnlHcmFwaENvbG9yaW5nSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9z
ZSA9IGZhbHNlOworfQogCiBzdHJ1Y3QgQ29hbGVzY2FibGVNb3ZlIHsKICAgICBDb2FsZXNjYWJs
ZU1vdmUoKQpAQCAtMTUzLDcgKzE1NSw3IEBAIHZvaWQgYWxsb2NhdGVTdGFja0J5R3JhcGhDb2xv
cmluZyhDb2RlJiBjb2RlKQogICAgICAgICBTdGFja1Nsb3RMaXZlbmVzczo6TG9jYWxDYWxjIGxv
Y2FsQ2FsYyhsaXZlbmVzcywgYmxvY2spOwogCiAgICAgICAgIGF1dG8gaW50ZXJmZXJlID0gWyZd
ICh1bnNpZ25lZCBpbnN0SW5kZXgpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgaWYgKEFpckFsbG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmdJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJJbnRlcmZlcmluZzogIiwgV1RGOjpwb2ludGVy
TGlzdER1bXAobG9jYWxDYWxjLmxpdmUoKSksICJcbiIpOwogCiAgICAgICAgICAgICBJbnN0KiBw
cmV2SW5zdCA9IGJsb2NrLT5nZXQoaW5zdEluZGV4KTsKQEAgLTE4NSw3ICsxODcsNyBAQCB2b2lk
IGFsbG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcoQ29kZSYgY29kZSkKICAgICAgICAgfTsKIAog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGluc3RJbmRleCA9IGJsb2NrLT5zaXplKCk7IGluc3RJbmRl
eC0tOykgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQWlyQWxs
b2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZ0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkFuYWx5emluZzogIiwgYmxvY2stPmF0KGluc3RJbmRleCksICJcbiIpOwog
CiAgICAgICAgICAgICAvLyBLaWxsIGRlYWQgc3RvcmVzLiBGb3Igc2ltcGxpY2l0eSB3ZSBzYXkg
dGhhdCBhIHN0b3JlIGlzIGtpbGxhYmxlIGlmIGl0IGhhcyBvbmx5IGxhdGUKQEAgLTIzMiw3ICsy
MzQsNyBAQCB2b2lkIGFsbG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcoQ29kZSYgY29kZSkKICAg
ICAgICAgICAgIH0pOwogICAgIH0KIAotICAgIGlmICh2ZXJib3NlKSB7CisgICAgaWYgKEFpckFs
bG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmdJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICBm
b3IgKFN0YWNrU2xvdCogc2xvdCA6IGNvZGUuc3RhY2tTbG90cygpKQogICAgICAgICAgICAgZGF0
YUxvZygiSW50ZXJmZXJlbmNlIG9mICIsIHBvaW50ZXJEdW1wKHNsb3QpLCAiOiAiLCBwb2ludGVy
TGlzdER1bXAoaW50ZXJmZXJlbmNlW3Nsb3RdKSwgIlxuIik7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbWl0U2h1ZmZsZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVtaXRTaHVmZmxlLmNwcAppbmRleCA3M2Q3MTBmZjY5
ZTcxOGViNGJlMzA2OWMxYzFkODBhZmI5YzY0OTY3Li43MTY2ZWQ4Njk0ZWEzZjE4NDI0ZmQyM2U4
MDIxMDk4MDVmNjEyYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckVtaXRTaHVmZmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckVtaXRTaHVmZmxlLmNwcApAQCAtMzcsNyArMzcsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9
IGZhbHNlOworbmFtZXNwYWNlIEFpckVtaXRTaHVmZmxlSW50ZXJuYWwgeworc3RhdGljIGNvbnN0
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgog
VG1wIGZpbmRQb3NzaWJsZVNjcmF0Y2goQ29kZSYgY29kZSwgQmFuayBiYW5rLCBjb25zdCBGdW5j
dG9yJiBmdW5jdG9yKSB7CkBAIC0xMjUsNyArMTI3LDcgQEAgVmVjdG9yPEluc3Q+IGVtaXRTaHVm
ZmxlKAogICAgIENvZGUmIGNvZGUsIFZlY3RvcjxTaHVmZmxlUGFpcj4gcGFpcnMsIHN0ZDo6YXJy
YXk8QXJnLCAyPiBzY3JhdGNoZXMsIEJhbmsgYmFuaywKICAgICBWYWx1ZSogb3JpZ2luKQogewot
ICAgIGlmICh2ZXJib3NlKSB7CisgICAgaWYgKEFpckVtaXRTaHVmZmxlSW50ZXJuYWw6OnZlcmJv
c2UpIHsKICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICJEZWFsaW5nIHdpdGggcGFpcnM6
ICIsIGxpc3REdW1wKHBhaXJzKSwgIiBhbmQgc2NyYXRjaGVzICIsIHNjcmF0Y2hlc1swXSwgIiwg
IiwKICAgICAgICAgICAgIHNjcmF0Y2hlc1sxXSwgIlxuIik7CkBAIC0xODUsNyArMTg3LDcgQEAg
VmVjdG9yPEluc3Q+IGVtaXRTaHVmZmxlKAogICAgICAgICAgICAgQVNTRVJUKGN1cnJlbnRQYWly
cy5pc0VtcHR5KCkpOwogICAgICAgICAgICAgQXJnIG9yaWdpbmFsU3JjID0gbWFwcGluZy5iZWdp
bigpLT5rZXk7CiAgICAgICAgICAgICBBU1NFUlQoIXNoaWZ0cy5jb250YWlucyhvcmlnaW5hbFNy
YykpOwotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQWlyRW1pdFNo
dWZmbGVJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJQcm9jZXNz
aW5nIGZyb20gIiwgb3JpZ2luYWxTcmMsICJcbiIpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBHcmFwaE5vZGVXb3JrbGlzdDxBcmc+IHdvcmtsaXN0OwpAQCAtMTk1LDcgKzE5Nyw3IEBAIFZl
Y3RvcjxJbnN0PiBlbWl0U2h1ZmZsZSgKICAgICAgICAgICAgICAgICBpZiAoaXRlciA9PSBtYXBw
aW5nLmVuZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdpdGggYSBzaGlmdCBpdCdzIHBv
c3NpYmxlIHRoYXQgd2UgcHJldmlvdXNseSBidWlsdCB0aGUgdGFpbCBvZiB0aGlzIHNoaWZ0Lgog
ICAgICAgICAgICAgICAgICAgICAvLyBTZWUgaWYgdGhhdCdzIHRoZSBjYXNlIG5vdy4KLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChBaXJF
bWl0U2h1ZmZsZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZygiVHJ5aW5nIHRvIGFwcGVuZCBzaGlmdCBhdCAiLCBzcmMsICJcbiIpOwogICAgICAgICAg
ICAgICAgICAgICBjdXJyZW50UGFpcnMuYXBwZW5kVmVjdG9yKHNoaWZ0cy50YWtlKHNyYykpOwog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIxMyw3ICsyMTUsNyBAQCBWZWN0b3I8
SW5zdD4gZW1pdFNodWZmbGUoCiAgICAgICAgICAgICBBU1NFUlQoY3VycmVudFBhaXJzLnNpemUo
KSk7CiAgICAgICAgICAgICBBU1NFUlQoY3VycmVudFBhaXJzWzBdLnNyYygpID09IG9yaWdpbmFs
U3JjKTsKIAotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQWlyRW1p
dFNodWZmbGVJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJjdXJy
ZW50UGFpcnMgPSAiLCBsaXN0RHVtcChjdXJyZW50UGFpcnMpLCAiXG4iKTsKIAogICAgICAgICAg
ICAgYm9vbCBpc1JvdGF0ZSA9IGZhbHNlOwpAQCAtMjI1LDcgKzIyNyw3IEBAIFZlY3RvcjxJbnN0
PiBlbWl0U2h1ZmZsZSgKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGlzUm90YXRl
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEFp
ckVtaXRTaHVmZmxlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIkl0J3MgYSByb3RhdGUuXG4iKTsKICAgICAgICAgICAgICAgICBSb3RhdGUgcm90YXRlOwog
CkBAIC0yNzcsMTQgKzI3OSwxNCBAQCBWZWN0b3I8SW5zdD4gZW1pdFNodWZmbGUoCiAgICAgICAg
ICAgICAgICAgcm90YXRlcy5hcHBlbmQoV1RGTW92ZShyb3RhdGUpKTsKICAgICAgICAgICAgICAg
ICBjdXJyZW50UGFpcnMuc2hyaW5rKDApOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQWlyRW1pdFNodWZmbGVJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiSXQncyBhIHNo
aWZ0LlxuIik7CiAgICAgICAgICAgICAgICAgc2hpZnRzLmFkZChvcmlnaW5hbFNyYywgV1RGTW92
ZShjdXJyZW50UGFpcnMpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAg
IGlmICh2ZXJib3NlKSB7CisgICAgaWYgKEFpckVtaXRTaHVmZmxlSW50ZXJuYWw6OnZlcmJvc2Up
IHsKICAgICAgICAgZGF0YUxvZygiU2hpZnRzOlxuIik7CiAgICAgICAgIGZvciAoYXV0byYgZW50
cnkgOiBzaGlmdHMpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgIiwgZW50cnkua2V5LCAiOiAi
LCBsaXN0RHVtcChlbnRyeS52YWx1ZSksICJcbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAKaW5kZXggOWNiMTEwMWExMWYy
MzUxN2MyOTkzM2JmYWJhOWEzYzkyMWE4NjZhZS4uNjBhOGNjMDM1ZmYxMjkwNTkxMDVlZDY1ZWNm
MjUzMzI2YzhlNTM5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJGaXhPYnZpb3VzU3BpbGxzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCkBAIC0zOSw3ICszOSw5IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKIAogbmFtZXNwYWNlIHsKIAotYm9vbCB2
ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgQWlyRml4T2J2aW91c1NwaWxsc0ludGVybmFsIHsK
K3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogY2xhc3MgRml4T2J2aW91
c1NwaWxscyB7CiBwdWJsaWM6CkBAIC01MSw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
cnVuKCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQWlyRml4T2J2
aW91c1NwaWxsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQ29kZSBi
ZWZvcmUgZml4T2J2aW91c1NwaWxsczpcbiIsIG1fY29kZSk7CiAgICAgICAgIAogICAgICAgICBj
b21wdXRlQWxpYXNlcygpOwpAQCAtNzMsNyArNzUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIGlmICghbV9zdGF0ZS53YXNWaXNpdGVkKQogICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChB
aXJGaXhPYnZpb3VzU3BpbGxzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2coIkV4ZWN1dGluZyBibG9jayAiLCAqbV9ibG9jaywgIjogIiwgbV9zdGF0ZSwgIlxu
Iik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZm9yIChtX2luc3RJbmRleCA9
IDA7IG1faW5zdEluZGV4IDwgYmxvY2stPnNpemUoKTsgKyttX2luc3RJbmRleCkKQEAgLTE2OSwx
MyArMTcxLDEzIEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBJbnN0JiBpbnN0ID0gbV9ibG9j
ay0+YXQobV9pbnN0SW5kZXgpOwogCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAo
QWlyRml4T2J2aW91c1NwaWxsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxv
ZygiICAgIEV4ZWN1dGluZyAiLCBpbnN0LCAiOiAiLCBtX3N0YXRlLCAiXG4iKTsKIAogICAgICAg
ICBJbnN0Ojpmb3JFYWNoRGVmV2l0aEV4dHJhQ2xvYmJlcmVkUmVnczxBcmc+KAogICAgICAgICAg
ICAgJmluc3QsICZpbnN0LAogICAgICAgICAgICAgWyZdIChjb25zdCBBcmcmIGFyZywgQXJnOjpS
b2xlLCBCYW5rLCBXaWR0aCkgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgICAgIGlmIChBaXJGaXhPYnZpb3VzU3BpbGxzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgQ2xvYmJlcmluZyAiLCBhcmcsICJcbiIp
OwogICAgICAgICAgICAgICAgIG1fc3RhdGUuY2xvYmJlcihhcmcpOwogICAgICAgICAgICAgfSk7
CkBAIC0xOTAsNyArMTkyLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEluc3QmIGluc3Qg
PSBtX2Jsb2NrLT5hdChtX2luc3RJbmRleCk7CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgIGlmIChBaXJGaXhPYnZpb3VzU3BpbGxzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICBkYXRhTG9nKCJGaXhpbmcgaW5zdCAiLCBpbnN0LCAiOiAiLCBtX3N0YXRlLCAiXG4iKTsKICAg
ICAgICAgCiAgICAgICAgIC8vIENoZWNrIGlmIGFsaWFzIGFuYWx5c2lzIHNheXMgdGhhdCB0aGlz
IGlzIHVubmVjZXNzYXJ5LgpAQCAtMjY3LDEzICsyNjksMTMgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICBjYXNlIFdpZHRoNjQ6CiAgICAgICAgICAgICAgICAgICAgIGlmIChhbGlhcy0+bW9k
ZSAhPSBSZWdTbG90OjpBbGxCaXRzKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYg
KEFpckZpeE9idmlvdXNTcGlsbHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIiAgICBSZXBsYWNpbmcgIiwgYXJnLCAiIHdpdGggIiwgYWxpYXMtPnJl
ZywgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIGFyZyA9IFRtcChhbGlhcy0+cmVnKTsKICAg
ICAgICAgICAgICAgICAgICAgZGlkVGhpbmdzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgICAgIGNhc2UgV2lkdGgzMjoKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChBaXJGaXhPYnZpb3VzU3Bp
bGxzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgUmVwbGFjaW5nICIsIGFyZywgIiB3aXRoICIsIGFsaWFzLT5yZWcsICIgKHN1YndpZHRoIGNh
c2UpXG4iKTsKICAgICAgICAgICAgICAgICAgICAgYXJnID0gVG1wKGFsaWFzLT5yZWcpOwogICAg
ICAgICAgICAgICAgICAgICBkaWRUaGluZ3MgPSB0cnVlOwpAQCAtMjg1LDcgKzI4Nyw3IEBAIHBy
aXZhdGU6CiAKICAgICAgICAgICAgIC8vIFJldmVydCB0byBpbW1lZGlhdGUgaWYgdGhhdCBkaWRu
J3Qgd29yay4KICAgICAgICAgICAgIGlmIChjb25zdCBTbG90Q29uc3QqIGFsaWFzID0gbV9zdGF0
ZS5nZXRTbG90Q29uc3QoYXJnLnN0YWNrU2xvdCgpKSkgewotICAgICAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChBaXJGaXhPYnZpb3VzU3BpbGxzSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBSZXBsYWNpbmcgIiwg
YXJnLCAiIHdpdGggY29uc3RhbnQgIiwgYWxpYXMtPmNvbnN0YW50LCAiXG4iKTsKICAgICAgICAg
ICAgICAgICBpZiAoQXJnOjppc1ZhbGlkSW1tRm9ybShhbGlhcy0+Y29uc3RhbnQpKQogICAgICAg
ICAgICAgICAgICAgICBhcmcgPSBBcmc6OmltbShhbGlhcy0+Y29uc3RhbnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3Bw
CmluZGV4IDFmYTA1M2RiOWNhN2ZjNGMzODZmYjE5MzcxNTIyNTViZWVkNzEzOWIuLmJmZWYzYjNm
NGYxMWE1OWEyMWQyYjgxY2NlMTkyNWJjZDgxZTU0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyQWZ0ZXJSZWdBbGxvYy5jcHAKQEAgLTQ2LDcg
KzQ2LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewog
CiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBBaXJMb3dl
ckFmdGVyUmVnQWxsb2NJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFs
c2U7Cit9CiAgICAgCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIApAQCAtNTQsNyArNTYsNyBA
QCB2b2lkIGxvd2VyQWZ0ZXJSZWdBbGxvYyhDb2RlJiBjb2RlKQogewogICAgIFBoYXNlU2NvcGUg
cGhhc2VTY29wZShjb2RlLCAibG93ZXJBZnRlclJlZ0FsbG9jIik7CiAKLSAgICBpZiAodmVyYm9z
ZSkKKyAgICBpZiAoQWlyTG93ZXJBZnRlclJlZ0FsbG9jSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgIGRhdGFMb2coIkNvZGUgYmVmb3JlIGxvd2VyQWZ0ZXJSZWdBbGxvYzpcbiIsIGNvZGUpOwog
ICAgIAogICAgIGF1dG8gaXNSZWxldmFudCA9IFtdIChJbnN0JiBpbnN0KSAtPiBib29sIHsKQEAg
LTIyMSw3ICsyMjMsNyBAQCB2b2lkIGxvd2VyQWZ0ZXJSZWdBbGxvYyhDb2RlJiBjb2RlKQogICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhY2tTbG90cy5hcHBlbmQoc3RhY2tTbG90KTsKICAgICAg
ICAgICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgICAgICAgICBpZiAoQWlyTG93ZXJBZnRlclJlZ0FsbG9jSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIlByZS1jYWxsIHBhaXJzIGZvciAiLCBpbnN0LCAi
OiAiLCBsaXN0RHVtcChwYWlycyksICJcbiIpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIGluc2VydGlvblNldC5pbnNlcnRJbnN0cygKQEAgLTI3Myw3ICsyNzUsNyBAQCB2b2lk
IGxvd2VyQWZ0ZXJSZWdBbGxvYyhDb2RlJiBjb2RlKQogICAgICAgICAgICAgfSk7CiAgICAgfQog
Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEFpckxvd2VyQWZ0ZXJSZWdBbGxvY0ludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJDb2RlIGFmdGVyIGxvd2VyQWZ0ZXJSZWdBbGxv
YzpcbiIsIGNvZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpclN0YWNrQWxsb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpclN0YWNrQWxsb2NhdGlvbi5jcHAKaW5kZXggMzkyMjIzY2E4ODU4MDVjNWY5NmQyZmJiODgz
OWQxMjAzOWM2NmNjZi4uNmI2YTI2YWU3ZWZiYjdkOWYzZjJlYTFiZWE2NmJhZTM0ZDU4YjZmNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTdGFja0FsbG9jYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3RhY2tBbGxvY2F0
aW9uLmNwcApAQCAtMzgsNyArMzgsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsg
bmFtZXNwYWNlIEFpciB7CiAKIG5hbWVzcGFjZSB7CiAKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZh
bHNlOworbmFtZXNwYWNlIEFpclN0YWNrQWxsb2NhdGlvbkludGVybmFsIHsKK3N0YXRpYyBjb25z
dCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29sbGVjdGlv
bj4KIHZvaWQgdXBkYXRlRnJhbWVTaXplQmFzZWRPblN0YWNrU2xvdHNJbXBsKENvZGUmIGNvZGUs
IGNvbnN0IENvbGxlY3Rpb24mIGNvbGxlY3Rpb24pCkBAIC01NCw3ICs1Niw3IEBAIHZvaWQgdXBk
YXRlRnJhbWVTaXplQmFzZWRPblN0YWNrU2xvdHNJbXBsKENvZGUmIGNvZGUsIGNvbnN0IENvbGxl
Y3Rpb24mIGNvbGxlY3RpCiBib29sIGF0dGVtcHRBc3NpZ25tZW50KAogICAgIFN0YWNrU2xvdCog
c2xvdCwgaW50cHRyX3Qgb2Zmc2V0RnJvbUZQLCBjb25zdCBWZWN0b3I8U3RhY2tTbG90Kj4mIG90
aGVyU2xvdHMpCiB7Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEFpclN0YWNrQWxsb2NhdGlv
bkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJBdHRlbXB0aW5nIHRvIGFzc2ln
biAiLCBwb2ludGVyRHVtcChzbG90KSwgIiB0byAiLCBvZmZzZXRGcm9tRlAsICIgd2l0aCBpbnRl
cmZlcmVuY2UgIiwgcG9pbnRlckxpc3REdW1wKG90aGVyU2xvdHMpLCAiXG4iKTsKIAogICAgIC8v
IE5lZWQgdG8gYWxpZ24gaXQgdG8gdGhlIHNsb3QncyBkZXNpcmVkIGFsaWdubWVudC4KQEAgLTcy
LDcgKzc0LDcgQEAgYm9vbCBhdHRlbXB0QXNzaWdubWVudCgKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQWlyU3RhY2tBbGxvY2F0
aW9uSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkFzc2lnbmVkICIsIHBvaW50
ZXJEdW1wKHNsb3QpLCAiIHRvICIsIG9mZnNldEZyb21GUCwgIlxuIik7CiAgICAgc2xvdC0+c2V0
T2Zmc2V0RnJvbUZQKG9mZnNldEZyb21GUCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC04MCw3ICs4
Miw3IEBAIGJvb2wgYXR0ZW1wdEFzc2lnbm1lbnQoCiAKIHZvaWQgYXNzaWduKFN0YWNrU2xvdCog
c2xvdCwgY29uc3QgVmVjdG9yPFN0YWNrU2xvdCo+JiBvdGhlclNsb3RzKQogewotICAgIGlmICh2
ZXJib3NlKQorICAgIGlmIChBaXJTdGFja0FsbG9jYXRpb25JbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgZGF0YUxvZygiQXR0ZW1wdGluZyB0byBhc3NpZ24gIiwgcG9pbnRlckR1bXAoc2xvdCks
ICIgd2l0aCBpbnRlcmZlcmVuY2UgIiwgcG9pbnRlckxpc3REdW1wKG90aGVyU2xvdHMpLCAiXG4i
KTsKICAgICAKICAgICBpZiAoYXR0ZW1wdEFzc2lnbm1lbnQoc2xvdCwgLXN0YXRpY19jYXN0PGlu
dHB0cl90PihzbG90LT5ieXRlU2l6ZSgpKSwgb3RoZXJTbG90cykpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggMzVmZmJmMWFiYWI4MmVkN2Y0
NDZiNTZiNGVkYzE1NWE0OWZlZDhkMC4uNDE5ODY1NTA0NzQ0Mzg3N2VjYTYxMzBjY2ZmYTdhNWFh
MjNmODRhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcApAQCAtNTEsNyArNTEsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFtZXNwYWNlIEFj
Y2Vzc0Nhc2VJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9
CiAKIEFjY2Vzc0Nhc2U6OkFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NU
eXBlIHR5cGUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNv
bnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQpCiAgICAgOiBtX3R5
cGUodHlwZSkKQEAgLTQwOCw3ICs0MTAsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlKEFj
Y2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1w
bChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogewogICAgIFN1cGVyU2FtcGxlclNjb3Bl
IHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQWNj
ZXNzQ2FzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJcblxuR2VuZXJhdGlu
ZyBjb2RlIGZvcjogIiwgKnRoaXMsICJcbiIpOwogCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gR2Vu
ZXJhdGVkKTsgLy8gV2UgcmVseSBvbiB0aGUgY2FsbGVycyBzZXR0aW5nIHRoaXMgZm9yIHVzLgpA
QCAtNzkwLDExICs3OTIsMTEgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNz
R2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKIAogICAgIGNhc2UgUmVwbGFjZTogewogICAgICAgICBp
ZiAoSW5mZXJyZWRUeXBlKiB0eXBlID0gc3RydWN0dXJlKCktPmluZmVycmVkVHlwZUZvcihpZGVu
dC5pbXBsKCkpKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChB
Y2Nlc3NDYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiSGF2
ZSB0eXBlOiAiLCB0eXBlLT5kZXNjcmlwdG9yKCksICJcbiIpOwogICAgICAgICAgICAgc3RhdGUu
ZmFpbEFuZFJlcGF0Y2guYXBwZW5kKAogICAgICAgICAgICAgICAgIGppdC5icmFuY2hJZk5vdFR5
cGUodmFsdWVSZWdzLCBzY3JhdGNoR1BSLCB0eXBlLT5kZXNjcmlwdG9yKCkpKTsKLSAgICAgICAg
fSBlbHNlIGlmICh2ZXJib3NlKQorICAgICAgICB9IGVsc2UgaWYgKEFjY2Vzc0Nhc2VJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkRvbid0IGhhdmUgdHlwZS5cbiIpOwog
CiAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChtX29mZnNldCkpIHsKQEAgLTgyMCwxMSArODIy
LDExIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0
ZSYgc3RhdGUpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEdQUkluZm86Om51bWJlck9mUmVnaXN0
ZXJzID49IDYgfHwgIXN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpIHx8IHN0cnVjdHVy
ZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpID09IG5ld1N0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpKTsKIAogICAgICAgICBpZiAoSW5mZXJyZWRUeXBlKiB0eXBlID0gbmV3U3RydWN0dXJl
KCktPmluZmVycmVkVHlwZUZvcihpZGVudC5pbXBsKCkpKSB7Ci0gICAgICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgICAgIGlmIChBY2Nlc3NDYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiSGF2ZSB0eXBlOiAiLCB0eXBlLT5kZXNjcmlwdG9yKCksICJc
biIpOwogICAgICAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKAogICAgICAgICAg
ICAgICAgIGppdC5icmFuY2hJZk5vdFR5cGUodmFsdWVSZWdzLCBzY3JhdGNoR1BSLCB0eXBlLT5k
ZXNjcmlwdG9yKCkpKTsKLSAgICAgICAgfSBlbHNlIGlmICh2ZXJib3NlKQorICAgICAgICB9IGVs
c2UgaWYgKEFjY2Vzc0Nhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2co
IkRvbid0IGhhdmUgdHlwZS5cbiIpOwogCiAgICAgICAgIC8vIE5PVEU6IFRoaXMgbG9naWMgaXMg
ZHVwbGljYXRlZCBpbiBBY2Nlc3NDYXNlOjpkb2VzQ2FsbHMoKS4gSXQncyBpbXBvcnRhbnQgdGhh
dCBkb2VzQ2FsbHMoKSBrbm93cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5jcHAKaW5kZXggZjM0YzI3NDIwNTNjYjI5M2RhYTVjMTYzODY2YmZh
YzRhMDIyNTY5OC4uNTNiODRkOWMwMzdlMTdmNmFlOTNkYzg1NTE5Mjc4OGI2M2U2N2FlYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3Bw
CkBAIC0zOCw3ICszOCw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCituYW1lc3BhY2UgQ2FsbExp
bmtTdGF0dXNJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9
CiAKIENhbGxMaW5rU3RhdHVzOjpDYWxsTGlua1N0YXR1cyhKU1ZhbHVlIHZhbHVlKQogICAgIDog
bV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKQEAgLTI4OSw3ICsyOTEsNyBAQCB2b2lkIENhbGxM
aW5rU3RhdHVzOjpjb21wdXRlREZHU3RhdHVzZXMoCiAgICAgVU5VU0VEX1BBUkFNKGRmZ0NvZGVC
bG9jayk7CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCiAgICAgCi0gICAgaWYgKHZlcmJvc2Up
IHsKKyAgICBpZiAoQ2FsbExpbmtTdGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICBk
YXRhTG9nKCJDb250ZXh0IG1hcDpcbiIpOwogICAgICAgICBDb250ZXh0TWFwOjppdGVyYXRvciBp
dGVyID0gbWFwLmJlZ2luKCk7CiAgICAgICAgIENvbnRleHRNYXA6Oml0ZXJhdG9yIGVuZCA9IG1h
cC5lbmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0
ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcAppbmRleCBjNGRhODBlY2MxOWMyMTQ3ZTJmYTdiNWQ5
OTY4NGNkZmViMmU0NzgwLi42MDY2OTFiM2IyMDNhZWUxYWNiYTI3NGY0NTVjNGI0ZWVjNzdmN2Vj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRl
clNldHRlckFjY2Vzc0Nhc2UuY3BwCkBAIC0zOCw3ICszOCw5IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCituYW1lc3BhY2UgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZUludGVybmFsIHsKIHN0YXRpYyBj
b25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6
R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUg
YWNjZXNzVHlwZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Y29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgYm9vbCB2aWFQ
cm94eSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCwgSlNPYmplY3QqIGN1c3RvbVNsb3RC
YXNlKQogICAgIDogQmFzZSh2bSwgb3duZXIsIGFjY2Vzc1R5cGUsIG9mZnNldCwgc3RydWN0dXJl
LCBjb25kaXRpb25TZXQsIHZpYVByb3h5LCBhZGRpdGlvbmFsU2V0KQpAQCAtMTg1LDcgKzE4Nyw3
IEBAIHZvaWQgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdERPTUpJVEdldHRlcihBY2Nlc3NH
ZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zCiAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
OjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9CiAgICAgYWxsb2NhdG9yLnByZXNlcnZl
UmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpF
eHRyYVN0YWNrU3BhY2U6OlNwYWNlRm9yQ0NhbGwpOwogCi0gICAgaWYgKHZlcmJvc2UpIHsKKyAg
ICBpZiAoR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAg
IGRhdGFMb2coImJhc2VHUFIgPSAiLCBiYXNlR1BSLCAiXG4iKTsKICAgICAgICAgZGF0YUxvZygi
dmFsdWVSZWdzID0gIiwgdmFsdWVSZWdzLCAiXG4iKTsKICAgICAgICAgZGF0YUxvZygic2NyYXRj
aEdQUiA9ICIsIHNjcmF0Y2hHUFIsICJcbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAKaW5k
ZXggNjE5ZWE1ZDljYjQ3YjFmMTk1YjBlOGI0N2Q1OTk2Y2E4NTljMzRlZi4uOTY3OTUyMzc3ODhj
YzE5NjUwNzQxYmRjZjY5YWU0N2NkMjhkYTRiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3Bw
CkBAIC0xODIsMTMgKzE4MiwxNSBAQCBib29sIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Ojpp
c1ZhbGlkQW5kV2F0Y2hhYmxlKCkgY29uc3QKIAogbmFtZXNwYWNlIHsKIAotYm9vbCB2ZXJib3Nl
ID0gZmFsc2U7CituYW1lc3BhY2UgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbCB7
CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uIGdlbmVyYXRlQ29uZGl0aW9uKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwg
SlNPYmplY3QqIG9iamVjdCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgUHJvcGVydHlDb25kaXRp
b246OktpbmQgY29uZGl0aW9uS2luZCkKIHsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG9i
amVjdC0+c3RydWN0dXJlKCk7Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkNyZWF0
aW5nIGNvbmRpdGlvbiAiLCBjb25kaXRpb25LaW5kLCAiIGZvciAiLCBwb2ludGVyRHVtcChzdHJ1
Y3R1cmUpLCAiXG4iKTsKIAogICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIHJlc3VsdDsKQEAg
LTIyNiwxMiArMjI4LDEyIEBAIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGdlbmVyYXRlQ29uZGl0
aW9uKAogICAgIH0KIAogICAgIGlmICghcmVzdWx0LmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJl
UHJvcGVydHlXYXRjaHBvaW50KCkpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlm
IChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgZGF0YUxvZygiRmFpbGVkIHRvIGNyZWF0ZSBjb25kaXRpb246ICIsIHJlc3VsdCwgIlxuIik7
CiAgICAgICAgIHJldHVybiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbigpOwogICAgIH0KIAotICAg
IGlmICh2ZXJib3NlKQorICAgIGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJOZXcgY29uZGl0aW9uOiAiLCByZXN1bHQsICJc
biIpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0yNDgsMTEgKzI1MCwxMSBAQCBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCBnZW5lcmF0ZUNvbmRpdGlvbnMoCiAgICAgVmVjdG9yPE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uPiBjb25kaXRpb25zOwogICAgIAogICAgIGZvciAoOzspIHsKLSAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQ29uc2lkZXJpbmcgc3Ry
dWN0dXJlOiAiLCBwb2ludGVyRHVtcChzdHJ1Y3R1cmUpLCAiXG4iKTsKICAgICAgICAgCiAgICAg
ICAgIGlmIChzdHJ1Y3R1cmUtPmlzUHJveHkoKSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJJdCdzIGEgcHJveHksIHNvIGludmFsaWQu
XG4iKTsKICAgICAgICAgICAgIHJldHVybiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aW52
YWxpZCgpOwogICAgICAgICB9CkBAIC0yNjEsMTEgKzI2MywxMSBAQCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCBnZW5lcmF0ZUNvbmRpdGlvbnMoCiAgICAgICAgIAogICAgICAgICBpZiAodmFs
dWUuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIGlmICghcHJvdG90eXBlKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
IlJlYWNoZWQgZW5kIG9mIHByb3RvdHlwZSBjaGFpbiBhcyBleHBlY3RlZCwgZG9uZS5cbiIpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJVbmV4cGVjdGVkbHkgcmVhY2hl
ZCBlbmQgb2YgcHJvdG90eXBlIGNoYWluLCBzbyBpbnZhbGlkLlxuIik7CiAgICAgICAgICAgICBy
ZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmludmFsaWQoKTsKICAgICAgICAgfQpA
QCAtMjc2LDM1ICsyNzgsMzUgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVD
b25kaXRpb25zKAogICAgICAgICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgewogICAg
ICAgICAgICAgaWYgKGNvbmN1cnJlbmN5ID09IE1haW5UaHJlYWQpIHsKICAgICAgICAgICAgICAg
ICBpZiAoc3RydWN0dXJlLT5oYXNCZWVuRmxhdHRlbmVkQmVmb3JlKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiRGljdGlvbmFyeSBoYXMgYmVlbiBmbGF0dGVuZWQgYmVmb3JlLCBzbyBpbnZh
bGlkLlxuIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldDo6aW52YWxpZCgpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJGbGF0
dGVuaW5nICIsIHBvaW50ZXJEdW1wKHN0cnVjdHVyZSkpOwogICAgICAgICAgICAgICAgIHN0cnVj
dHVyZS0+ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUodm0sIG9iamVjdCk7CiAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAg
IGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCJDYW5ub3QgZmxhdHRlbiBkaWN0aW9uYXJ5IHdoZW4gbm90
IG9uIG1haW4gdGhyZWFkLCBzbyBpbnZhbGlkLlxuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjppbnZhbGlkKCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoIWZ1bmN0b3IoY29uZGl0aW9ucywgb2JqZWN0KSkgewot
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJG
dW5jdG9yIGZhaWxlZCwgaW52YWxpZC5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0OjppbnZhbGlkKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIGlmIChvYmplY3QgPT0gcHJvdG90eXBlKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgIGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIlJlYWNoZWQgZGVzaXJlZCBwcm90b3R5cGUs
IGRvbmUuXG4iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogCi0gICAg
aWYgKHZlcmJvc2UpCisgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIlJldHVybmluZyBjb25kaXRpb25zOiAiLCBsaXN0
RHVtcChjb25kaXRpb25zKSwgIlxuIik7CiAgICAgcmV0dXJuIE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0OjpjcmVhdGUoY29uZGl0aW9ucyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAppbmRleCBmYjBiNmE5ZDhjMmRk
YzhmYzNmOWM5MTkxZGJmMjJiOWJkNDAyOTg4Li40MjI4MGM1YWU2Zjc2ZGI2NzAzYTYwMTZkNTgz
YzFiMGEwMWRjMzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTQ0LDcgKzQ0LDkgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKK25hbWVzcGFjZSBQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsIHsKIHN0YXRpYyBjb25z
dCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogdm9pZCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CkBAIC0yNDcsNyArMjQ5LDcgQEAgQWNj
ZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMoCiAgICAgICAg
IGNhc2VzVG9BZGQuYXBwZW5kKFdURk1vdmUobXlDYXNlKSk7CiAgICAgfQogCi0gICAgaWYgKHZl
cmJvc2UpCisgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgIGRhdGFMb2coImNhc2VzVG9BZGQ6ICIsIGxpc3REdW1wKGNhc2VzVG9BZGQpLCAiXG4iKTsK
IAogICAgIC8vIElmIHRoZXJlIGFyZW4ndCBhbnkgY2FzZXMgdG8gYWRkLCB0aGVuIGZhaWwgb24g
dGhlIGdyb3VuZHMgdGhhdCB0aGVyZSdzIG5vIHBvaW50IHRvIGdlbmVyYXRpbmcgYQpAQCAtMjYz
LDcgKzI2NSw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFk
ZENhc2VzKAogICAgICAgICBtX2xpc3QuYXBwZW5kKFdURk1vdmUoY2FzZVRvQWRkKSk7CiAgICAg
fQogICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJBZnRlciBhZGRDYXNlczogbV9saXN0OiAi
LCBsaXN0RHVtcChtX2xpc3QpLCAiXG4iKTsKIAogICAgIHJldHVybiBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0OjpCdWZmZXJlZDsKQEAgLTMzNCw3ICszMzYsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVz
dWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKAogewogICAgIFN1cGVyU2FtcGxlclNj
b3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKLSAgICBpZiAodmVyYm9zZSkKKyAg
ICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxv
ZygiUmVnZW5lcmF0ZSB3aXRoIG1fbGlzdDogIiwgbGlzdER1bXAobV9saXN0KSwgIlxuIik7CiAg
ICAgCiAgICAgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHN0YXRlKHZtKTsKQEAgLTQwMiw3ICs0MDQs
NyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRl
KAogICAgIH0KICAgICBtX2xpc3QucmVzaXplKGRzdEluZGV4KTsKICAgICAKLSAgICBpZiAodmVy
Ym9zZSkKKyAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgZGF0YUxvZygiT3B0aW1pemVkIGNhc2VzOiAiLCBsaXN0RHVtcChjYXNlcyksICJcbiIpOwog
ICAgIAogICAgIC8vIEF0IHRoaXMgcG9pbnQgd2UncmUgY29udmluY2VkIHRoYXQgJ2Nhc2VzJyBj
b250YWlucyB0aGUgY2FzZXMgdGhhdCB3ZSB3YW50IHRvIEpJVCBub3cgYW5kIHdlCkBAIC01MTcs
NyArNTE5LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVn
ZW5lcmF0ZSgKIAogICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIGNvZGVCbG9jaywgSklU
Q29tcGlsYXRpb25DYW5GYWlsKTsKICAgICBpZiAobGlua0J1ZmZlci5kaWRGYWlsVG9BbGxvY2F0
ZSgpKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoUG9seW1vcnBoaWNBY2Nl
c3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkRpZCBmYWlsIHRvIGFs
bG9jYXRlLlxuIik7CiAgICAgICAgIHJldHVybiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpHYXZl
VXA7CiAgICAgfQpAQCAtNTI4LDcgKzUzMCw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9s
eW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoCiAKICAgICBsaW5rQnVmZmVyLmxpbmsoZmFpbHVy
ZSwgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKCkpOwogICAgIAotICAgIGlmICh2ZXJi
b3NlKQorICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICBkYXRhTG9nKEZ1bGxDb2RlT3JpZ2luKGNvZGVCbG9jaywgc3R1YkluZm8uY29kZU9yaWdpbiks
ICI6IEdlbmVyYXRpbmcgcG9seW1vcnBoaWMgYWNjZXNzIHN0dWIgZm9yICIsIGxpc3REdW1wKGNh
c2VzKSwgIlxuIik7CiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZSA9IEZJTkFMSVpF
X0NPREVfRk9SKApAQCAtNTQ0LDcgKzU0Niw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9s
eW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoCiAgICAgbV93YXRjaHBvaW50cyA9IFdURk1vdmUo
c3RhdGUud2F0Y2hwb2ludHMpOwogICAgIGlmICghc3RhdGUud2Vha1JlZmVyZW5jZXMuaXNFbXB0
eSgpKQogICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8
V3JpdGVCYXJyaWVyPEpTQ2VsbD4+PihXVEZNb3ZlKHN0YXRlLndlYWtSZWZlcmVuY2VzKSk7Ci0g
ICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgIGRhdGFMb2coIlJldHVybmluZzogIiwgY29kZS5jb2RlKCksICJcbiIpOwog
ICAgIAogICAgIG1fbGlzdCA9IFdURk1vdmUoY2FzZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHAKaW5kZXggNDIzYmMyMTBl
ZDQ4M2NhMTE5N2UzOTliNTk1NTQ2NjZjZGYzOTVjOS4uMDc2NDRhMzA3ZjljZjRlOWM1ZjMyYTcx
YzE4MWMyYmY4Mzk5NTVkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uY3BwCkBAIC0zMiw3ICszMiw5IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCituYW1lc3BhY2UgUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbCB7CiBzdGF0aWMg
Ym9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIHZvaWQgUHJvcGVydHlDb25kaXRpb246OmR1bXBJ
bkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0CiB7
CkBAIC02NSwyMCArNjcsMjAgQEAgdm9pZCBQcm9wZXJ0eUNvbmRpdGlvbjo6ZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdAogYm9vbCBQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNz
dW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTT2JqZWN0KiBiYXNlKSBjb25zdAogewotICAgIGlmICh2ZXJib3NlKSB7CisgICAgaWYgKFBy
b3BlcnR5Q29uZGl0aW9uSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZGF0YUxvZygKICAg
ICAgICAgICAgICJEZXRlcm1pbmluZyB2YWxpZGl0eSBvZiAiLCAqdGhpcywgIiB3aXRoIHN0cnVj
dHVyZSAiLCBwb2ludGVyRHVtcChzdHJ1Y3R1cmUpLCAiIGFuZCBiYXNlICIsCiAgICAgICAgICAg
ICBKU1ZhbHVlKGJhc2UpLCAiIGFzc3VtaW5nIGltcHVyZSBwcm9wZXJ0eSB3YXRjaHBvaW50cyBh
cmUgc2V0LlxuIik7CiAgICAgfQogICAgIAogICAgIGlmICghKnRoaXMpIHsKLSAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgZGF0YUxvZygiSW52YWxpZCBiZWNhdXNlIHVuc2V0LlxuIik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgaWYgKCFzdHJ1Y3R1cmUtPnByb3Bl
cnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgaWYgKFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBk
YXRhTG9nKCJJbnZhbGlkIGJlY2F1c2UgYWNjZXNzZXMgYXJlIG5vdCBjYWNoZWFibGUuXG4iKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTg4LDcgKzkwLDcgQEAgYm9vbCBQcm9w
ZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9p
bnQoCiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgICAgICBQcm9wZXJ0
eU9mZnNldCBjdXJyZW50T2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkodWlkKCks
IGN1cnJlbnRBdHRyaWJ1dGVzKTsKICAgICAgICAgaWYgKGN1cnJlbnRPZmZzZXQgIT0gb2Zmc2V0
KCkgfHwgY3VycmVudEF0dHJpYnV0ZXMgIT0gYXR0cmlidXRlcygpKSB7Ci0gICAgICAgICAgICBp
ZiAodmVyYm9zZSkgeworICAgICAgICAgICAgaWYgKFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWw6
OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAg
ICAiSW52YWxpZCBiZWNhdXNlIHdlIG5lZWQgb2Zmc2V0LCBhdHRyaWJ1dGVzIHRvIGJlICIsIG9m
ZnNldCgpLCAiLCAiLCBhdHRyaWJ1dGVzKCksCiAgICAgICAgICAgICAgICAgICAgICIgYnV0IHRo
ZXkgYXJlICIsIGN1cnJlbnRPZmZzZXQsICIsICIsIGN1cnJlbnRBdHRyaWJ1dGVzLCAiXG4iKTsK
QEAgLTEwMCwyMCArMTAyLDIwIEBAIGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxp
ZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KAogICAgICAgICAKICAgICBjYXNlIEFi
c2VuY2U6IHsKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKLSAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKFByb3BlcnR5Q29uZGl0aW9uSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiSW52YWxpZCBiZWNhdXNl
IGl0J3MgYSBkaWN0aW9uYXJ5LlxuIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KIAogICAgICAgICBQcm9wZXJ0eU9mZnNldCBjdXJyZW50T2Zmc2V0ID0gc3RydWN0dXJl
LT5nZXRDb25jdXJyZW50bHkodWlkKCkpOwogICAgICAgICBpZiAoY3VycmVudE9mZnNldCAhPSBp
bnZhbGlkT2Zmc2V0KSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlm
IChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRh
dGFMb2coIkludmFsaWQgYmVjYXVzZSB0aGUgcHJvcGVydHkgZXhpc3RzIGF0IG9mZnNldDogIiwg
Y3VycmVudE9mZnNldCwgIlxuIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZU9iamVj
dCgpICE9IHByb3RvdHlwZSgpKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAg
ICAgICAgaWYgKFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAg
ICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBiZWNhdXNlIHRo
ZSBwcm90b3R5cGUgaXMgIiwgc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKSwgIiBldmVuIHRo
b3VnaCAiCiAgICAgICAgICAgICAgICAgICAgICJpdCBzaG91bGQgaGF2ZSBiZWVuICIsIEpTVmFs
dWUocHJvdG90eXBlKCkpLCAiXG4iKTsKQEAgLTEyNiw3ICsxMjgsNyBAQCBib29sIFByb3BlcnR5
Q29uZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgK
ICAgICAKICAgICBjYXNlIEFic2VuY2VPZlNldEVmZmVjdDogewogICAgICAgICBpZiAoc3RydWN0
dXJlLT5pc0RpY3Rpb25hcnkoKSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJJbnZhbGlkIGJlY2F1c2UgaXQncyBhIGRpY3Rpb25hcnkuXG4iKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMTM1LDcgKzEzNyw3IEBAIGJv
b2wgUHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlX
YXRjaHBvaW50KAogICAgICAgICBQcm9wZXJ0eU9mZnNldCBjdXJyZW50T2Zmc2V0ID0gc3RydWN0
dXJlLT5nZXRDb25jdXJyZW50bHkodWlkKCksIGN1cnJlbnRBdHRyaWJ1dGVzKTsKICAgICAgICAg
aWYgKGN1cnJlbnRPZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICAgICAgaWYgKGN1
cnJlbnRBdHRyaWJ1dGVzICYgKFJlYWRPbmx5IHwgQWNjZXNzb3IgfCBDdXN0b21BY2Nlc3Nvcikp
IHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgICAgIGlmIChQ
cm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBiZWNhdXNlIHdlIGV4
cGVjdGVkIG5vdCB0byBoYXZlIGEgc2V0dGVyLCBidXQgd2UgaGF2ZSBvbmUgYXQgb2Zmc2V0ICIs
CiAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50T2Zmc2V0LCAiIHdpdGggYXR0cmlidXRl
cyAiLCBjdXJyZW50QXR0cmlidXRlcywgIlxuIik7CkBAIC0xNDUsNyArMTQ3LDcgQEAgYm9vbCBQ
cm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNo
cG9pbnQoCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPnN0b3Jl
ZFByb3RvdHlwZU9iamVjdCgpICE9IHByb3RvdHlwZSgpKSB7Ci0gICAgICAgICAgICBpZiAodmVy
Ym9zZSkgeworICAgICAgICAgICAgaWYgKFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWw6OnZlcmJv
c2UpIHsKICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAiSW52
YWxpZCBiZWNhdXNlIHRoZSBwcm90b3R5cGUgaXMgIiwgc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5
cGUoKSwgIiBldmVuIHRob3VnaCAiCiAgICAgICAgICAgICAgICAgICAgICJpdCBzaG91bGQgaGF2
ZSBiZWVuICIsIEpTVmFsdWUocHJvdG90eXBlKCkpLCAiXG4iKTsKQEAgLTE2MCw3ICsxNjIsNyBA
QCBib29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3Bl
cnR5V2F0Y2hwb2ludCgKICAgICAgICAgaWYgKCFiYXNlIHx8IGJhc2UtPnN0cnVjdHVyZSgpICE9
IHN0cnVjdHVyZSkgewogICAgICAgICAgICAgLy8gQ29uc2VydmF0aXZlbHkgcmV0dXJuIGZhbHNl
LCBzaW5jZSB3ZSBjYW5ub3QgdmVyaWZ5IHRoaXMgb25lIHdpdGhvdXQgaGF2aW5nIHRoZQogICAg
ICAgICAgICAgLy8gb2JqZWN0LgotICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAg
ICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAg
ICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgYmVjYXVzZSB3ZSBk
b24ndCBoYXZlIGEgYmFzZSBvciB0aGUgYmFzZSBoYXMgdGhlIHdyb25nIHN0cnVjdHVyZTogIiwK
ICAgICAgICAgICAgICAgICAgICAgUmF3UG9pbnRlcihiYXNlKSwgIlxuIik7CkBAIC0xNzMsNyAr
MTc1LDcgQEAgYm9vbCBQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1
cmVQcm9wZXJ0eVdhdGNocG9pbnQoCiAgICAgICAgIAogICAgICAgICBQcm9wZXJ0eU9mZnNldCBj
dXJyZW50T2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkodWlkKCkpOwogICAgICAg
ICBpZiAoY3VycmVudE9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KSB7Ci0gICAgICAgICAgICBpZiAo
dmVyYm9zZSkgeworICAgICAgICAgICAgaWYgKFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWw6OnZl
cmJvc2UpIHsKICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAi
SW52YWxpZCBiZWNhdXNlIHRoZSBiYXNlIG5vIGxvbmcgYXBwZWFycyB0byBoYXZlICIsIHVpZCgp
LCAiIG9uIGl0cyBzdHJ1Y3R1cmU6ICIsCiAgICAgICAgICAgICAgICAgICAgICAgICBSYXdQb2lu
dGVyKGJhc2UpLCAiXG4iKTsKQEAgLTE4Myw3ICsxODUsNyBAQCBib29sIFByb3BlcnR5Q29uZGl0
aW9uOjppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgKIAogICAg
ICAgICBKU1ZhbHVlIGN1cnJlbnRWYWx1ZSA9IGJhc2UtPmdldERpcmVjdChjdXJyZW50T2Zmc2V0
KTsKICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSAhPSByZXF1aXJlZFZhbHVlKCkpIHsKLSAgICAg
ICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25J
bnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAg
ICAgICAgICAgICJJbnZhbGlkIGJlY2F1c2UgdGhlIHZhbHVlIGlzICIsIGN1cnJlbnRWYWx1ZSwg
IiBidXQgd2UgcmVxdWlyZSAiLCByZXF1aXJlZFZhbHVlKCksCiAgICAgICAgICAgICAgICAgICAg
ICJcbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1
cmVTdHViSW5mby5jcHAKaW5kZXggMjE4Nzc1MTc2ZjI3N2UzNjY4ZGMxMmRlYjY2NjVkYTE0ZTQ3
ZDFiNy4uM2UzYmYyNDNhYTk1YTI5M2ViMjZhZGMyODVhYTk5NjA2MGU4OWQ1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3Bw
CkBAIC0zNSw3ICszNSw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgRU5BQkxFKEpJVCkKIAor
bmFtZXNwYWNlIFN0cnVjdHVyZVN0dWJJbmZvSW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wg
dmVyYm9zZSA9IGZhbHNlOworfQogCiBTdHJ1Y3R1cmVTdHViSW5mbzo6U3RydWN0dXJlU3R1Yklu
Zm8oQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogICAgIDogY2FsbFNpdGVJbmRleChVSU5UX01BWCkK
QEAgLTExNSw3ICsxMTcsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJ
bmZvOjphZGRBY2Nlc3NDYXNlKAogewogICAgIFZNJiB2bSA9ICpjb2RlQmxvY2stPnZtKCk7CiAg
ICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkFkZGluZyBhY2Nlc3MgY2FzZTogIiwgYWNjZXNz
Q2FzZSwgIlxuIik7CiAgICAgCiAgICAgaWYgKCFhY2Nlc3NDYXNlKQpAQCAtMTI2LDcgKzEyOCw3
IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nh
c2UoCiAgICAgaWYgKGNhY2hlVHlwZSA9PSBDYWNoZVR5cGU6OlN0dWIpIHsKICAgICAgICAgcmVz
dWx0ID0gdS5zdHViLT5hZGRDYXNlKGxvY2tlciwgdm0sIGNvZGVCbG9jaywgKnRoaXMsIGlkZW50
LCBXVEZNb3ZlKGFjY2Vzc0Nhc2UpKTsKICAgICAgICAgCi0gICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICBpZiAoU3RydWN0dXJlU3R1YkluZm9JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgIGRhdGFMb2coIkhhZCBzdHViLCByZXN1bHQ6ICIsIHJlc3VsdCwgIlxuIik7CiAKICAgICAg
ICAgaWYgKCFyZXN1bHQuYnVmZmVyZWQoKSkgewpAQCAtMTQ3LDcgKzE0OSw3IEBAIEFjY2Vzc0dl
bmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAgICAgICAg
IAogICAgICAgICByZXN1bHQgPSBhY2Nlc3MtPmFkZENhc2VzKGxvY2tlciwgdm0sIGNvZGVCbG9j
aywgKnRoaXMsIGlkZW50LCBXVEZNb3ZlKGFjY2Vzc0Nhc2VzKSk7CiAgICAgICAgIAotICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJDcmVhdGVkIHN0dWIsIHJlc3VsdDogIiwgcmVz
dWx0LCAiXG4iKTsKIAogICAgICAgICBpZiAoIXJlc3VsdC5idWZmZXJlZCgpKSB7CkBAIC0xNjQs
NyArMTY2LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRk
QWNjZXNzQ2FzZSgKICAgICAvLyBJZiB3ZSBkaWRuJ3QgYnVmZmVyIGFueSBjYXNlcyB0aGVuIGJh
aWwuIElmIHRoaXMgbWFkZSBubyBjaGFuZ2VzIHRoZW4gd2UnbGwganVzdCB0cnkgYWdhaW4KICAg
ICAvLyBzdWJqZWN0IHRvIGNvb2wtZG93bi4KICAgICBpZiAoIXJlc3VsdC5idWZmZXJlZCgpKSB7
Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoU3RydWN0dXJlU3R1YkluZm9JbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkRpZG4ndCBidWZmZXIgYW55dGhp
bmcsIGJhaWxpbmcuXG4iKTsKICAgICAgICAgYnVmZmVyZWRTdHJ1Y3R1cmVzLmNsZWFyKCk7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNzIsNyArMTc0LDcgQEAgQWNjZXNzR2VuZXJhdGlv
blJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgKICAgICAKICAgICAvLyBU
aGUgYnVmZmVyaW5nIGNvdW50ZG93biB0ZWxscyB1cyBpZiB3ZSBzaG91bGQgYmUgcmVwYXRjaGlu
ZyBub3cuCiAgICAgaWYgKGJ1ZmZlcmluZ0NvdW50ZG93bikgewotICAgICAgICBpZiAodmVyYm9z
ZSkKKyAgICAgICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICBkYXRhTG9nKCJDb3VudGRvd24gaXMgdG9vIGhpZ2g6ICIsIGJ1ZmZlcmluZ0NvdW50
ZG93biwgIi5cbiIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTE4Myw3ICsx
ODUsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nl
c3NDYXNlKAogICAgIAogICAgIHJlc3VsdCA9IHUuc3R1Yi0+cmVnZW5lcmF0ZShsb2NrZXIsIHZt
LCBjb2RlQmxvY2ssICp0aGlzLCBpZGVudCk7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAg
aWYgKFN0cnVjdHVyZVN0dWJJbmZvSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2co
IlJlZ2VuZXJhdGlvbiByZXN1bHQ6ICIsIHJlc3VsdCwgIlxuIik7CiAgICAgCiAgICAgUkVMRUFT
RV9BU1NFUlQoIXJlc3VsdC5idWZmZXJlZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RIZWFwLmNwcAppbmRleCBjZDY5NGJiZWJhYzgwN2Q1MThmNjZjNDdjYWFh
YjZlNzhlOTFkMjNjLi5iODNmZWUwZDNjMDlkMTQ5N2FhN2VhMWRlM2UwNDkwNjJmMjI2YzE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuY3BwCkBAIC02
Miw3ICs2Miw3IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBYnN0cmFj
dEhlYXBLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7CiAjZGVmaW5lIEFCU1RSQUNU
X0hFQVBfRFVNUChuYW1lKSAgICAgICAgICAgIFwKLSAgICBjYXNlIG5hbWU6ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIGNhc2UgQWJzdHJhY3RIZWFwS2luZDo6bmFtZTogICAg
ICAgICAgICBcCiAgICAgICAgIG91dC5wcmludCgjbmFtZSk7ICAgICAgICAgICAgICAgICAgIFwK
ICAgICAgICAgcmV0dXJuOwogICAgIEZPUl9FQUNIX0FCU1RSQUNUX0hFQVBfS0lORChBQlNUUkFD
VF9IRUFQX0RVTVApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
Z3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAppbmRleCA1MTY1MGY1ODVkNGU4ZWE2YTMz
OWU3ZjYzMDI4ZWEwOGVkNThlYTRmLi5hNDU3ZjhmNTdkNDljYzNlMjczMzk3NmI4MGIyZmQ5ODYz
YTQ2MGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50
c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTUwLDcgKzUwLDkgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBm
YWxzZTsKK25hbWVzcGFjZSBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlSW50ZXJuYWwgewor
c3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBjbGFzcyBBcmd1bWVudHNF
bGltaW5hdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKIHB1YmxpYzoKQEAgLTY1LDcgKzY3LDcg
QEAgcHVibGljOgogICAgICAgICAvLyB2ZXJzaW9uIG92ZXIgTG9hZFN0b3JlLgogICAgICAgICBE
RkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9mb3JtID09IFNTQSk7CiAgICAg
ICAgIAotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHQXJndW1lbnRzRWxp
bWluYXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJH
cmFwaCBiZWZvcmUgYXJndW1lbnRzIGVsaW1pbmF0aW9uOlxuIik7CiAgICAgICAgICAgICBtX2dy
YXBoLmR1bXAoKTsKICAgICAgICAgfQpAQCAtMTU3LDcgKzE1OSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICBpZiAoREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgZGF0YUxvZygiQ2FuZGlkYXRlczogIiwgbGlzdER1bXAobV9jYW5kaWRhdGVz
KSwgIlxuIik7CiAgICAgfQogCkBAIC0yMTAsNyArMjEyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHRyYW5zaXRpdmVseVJlbW92ZUNhbmRpZGF0ZShOb2RlKiBub2RlLCBOb2RlKiBzb3VyY2UgPSBu
dWxscHRyKQogICAgIHsKICAgICAgICAgYm9vbCByZW1vdmVkID0gbV9jYW5kaWRhdGVzLnJlbW92
ZShub2RlKTsKLSAgICAgICAgaWYgKHJlbW92ZWQgJiYgdmVyYm9zZSAmJiBzb3VyY2UpCisgICAg
ICAgIGlmIChyZW1vdmVkICYmIERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6
dmVyYm9zZSAmJiBzb3VyY2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJlbGltaW5hdGluZyBjYW5k
aWRhdGU6ICIsIG5vZGUsICIgYmVjYXVzZSBpdCBlc2NhcGVzIGZyb206ICIsIHNvdXJjZSwgIlxu
Iik7CiAKICAgICAgICAgaWYgKHJlbW92ZWQpCkBAIC00MTgsNyArNDIwLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICBpZiAoREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICAgICAgZGF0YUxvZygiQWZ0ZXIgZXNjYXBlIGFuYWx5c2lzOiAiLCBsaXN0RHVtcChtX2Nh
bmRpZGF0ZXMpLCAiXG4iKTsKICAgICB9CiAKQEAgLTUxOSw3ICs1MjEsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICAvLyBmb3IgdGhpcyBhcmd1bWVudHMgYWxsb2NhdGlvbiwgYW5k
IHdlJ2QgaGF2ZSB0byBleGFtaW5lIGV2ZXJ5IG5vZGUgaW4gdGhlIGJsb2NrLAogICAgICAgICAg
ICAgICAgICAgICAvLyB0aGVuIHdlIGNhbiBqdXN0IGVsaW1pbmF0ZSB0aGUgY2FuZGlkYXRlLgog
ICAgICAgICAgICAgICAgICAgICBpZiAobm9kZUluZGV4ID09IGJsb2NrLT5zaXplKCkgJiYgY2Fu
ZGlkYXRlLT5vd25lciAhPSBibG9jaykgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREZHQXJndW1lbnRzRWxpbWluYXRp
b25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2coImVsaW1pbmF0aW5nIGNhbmRpZGF0ZTogIiwgY2FuZGlkYXRlLCAiIGJlY2F1c2UgaXQg
aXMgY2xvYmJlcmVkIGJ5OiAiLCBibG9jay0+YXQobm9kZUluZGV4KSwgIlxuIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICB0cmFuc2l0aXZlbHlSZW1vdmVDYW5kaWRhdGUoY2FuZGlkYXRlKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTU0Niw3ICs1NDgsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vT3BDbG9iYmVyaXplKCkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmQp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZUludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJlbGlt
aW5hdGluZyBjYW5kaWRhdGU6ICIsIGNhbmRpZGF0ZSwgIiBiZWNhdXNlIGl0IGlzIGNsb2JiZXJl
ZCBieSAiLCBibG9jay0+YXQobm9kZUluZGV4KSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHJhbnNpdGl2ZWx5UmVtb3ZlQ2FuZGlkYXRlKGNhbmRpZGF0ZSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTY4LDcgKzU3MCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIC8vIHNpbmNlIHRob3NlIGF2YWlsYWJpbGl0aWVzIHNwZWFrIG9mIHRoZSBzdGFj
ayBiZWZvcmUgdGhlIG9wdGltaXppbmcgY29tcGlsZXIgc3RhY2sgZnJhbWUgaXMKICAgICAgICAg
Ly8gdG9ybiBkb3duLgogCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHQXJn
dW1lbnRzRWxpbWluYXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0
YUxvZygiQWZ0ZXIgaW50ZXJmZXJlbmNlIGFuYWx5c2lzOiAiLCBsaXN0RHVtcChtX2NhbmRpZGF0
ZXMpLCAiXG4iKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGI0OWYyZTljY2FjY2NmOGRiNTI2ZTI1YzM0Njhm
NDIzYjA2YTU3MDYuLmM4ZTA5NmVkNGU2MDM4YjUxNDM1MjNlYmUwY2RkYzdkOGRkZGRiZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBA
IC03MCwyMiArNzAsMTggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1l
c3BhY2UgewogCi1OT19SRVRVUk5fRFVFX1RPX0NSQVNIIE5FVkVSX0lOTElORSB2b2lkIGNyYXNo
KCkKLXsKLSAgICBDUkFTSCgpOwotfQotCi0jdW5kZWYgUkVMRUFTRV9BU1NFUlQKLSNkZWZpbmUg
UkVMRUFTRV9BU1NFUlQoYXNzZXJ0aW9uKSBkbyB7IFwKKyNkZWZpbmUgUEFSU0VSX0FTU0VSVChh
c3NlcnRpb24sIC4uLikgZG8geyAgICAgICAgICBcCiAgICAgaWYgKFVOTElLRUxZKCEoYXNzZXJ0
aW9uKSkpIHsgXAogICAgICAgICBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKF9fRklMRV9fLCBf
X0xJTkVfXywgV1RGX1BSRVRUWV9GVU5DVElPTiwgI2Fzc2VydGlvbik7IFwKLSAgICAgICAgY3Jh
c2goKTsgXAorICAgICAgICBDUkFTSF9XSVRIX0lORk8oX19WQV9BUkdTX18pOyBcCiAgICAgfSBc
CiB9IHdoaWxlICgwKQogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAorbmFtZXNwYWNlIERG
R0J5dGVDb2RlUGFyc2VySW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZh
bHNlOworfQogCiBjbGFzcyBDb25zdGFudEJ1ZmZlcktleSB7CiBwdWJsaWM6CkBAIC0xMjA3LDcg
KzEyMDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgICAg
ICAgICAgLCBtX3NldE1vZGUoc2V0TW9kZSkKICAgICAgICAgewotICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQob3BlcmFuZC5pc1ZhbGlkKCkpOworICAgICAgICAgICAgUEFSU0VSX0FTU0VSVChv
cGVyYW5kLmlzVmFsaWQoKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIE5vZGUqIGV4
ZWN1dGUoQnl0ZUNvZGVQYXJzZXIqIHBhcnNlcikKQEAgLTE0MzAsMTggKzE0MjYsMTggQEAgdW5z
aWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGlu
dCwgSW5saW5lQ2FsbEZyYW1lOjoKIHsKICAgICBDYWxsTW9kZSBjYWxsTW9kZSA9IElubGluZUNh
bGxGcmFtZTo6Y2FsbE1vZGVGb3Ioa2luZCk7CiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBz
cGVjaWFsaXphdGlvbktpbmQgPSBzcGVjaWFsaXphdGlvbktpbmRGb3IoY2FsbE1vZGUpOwotICAg
IGlmICh2ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBpbmxpbmluZyAiLCBjYWxsZWUsICIgaW50
byAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICAKICAgICBpZiAobV9oYXNEZWJ1
Z2dlckVuYWJsZWQpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdCeXRl
Q29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZh
aWxpbmcgYmVjYXVzZSB0aGUgZGVidWdnZXIgaXMgaW4gdXNlLlxuIik7CiAgICAgICAgIHJldHVy
biBVSU5UX01BWDsKICAgICB9CiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUg
PSBjYWxsZWUuZnVuY3Rpb25FeGVjdXRhYmxlKCk7CiAgICAgaWYgKCFleGVjdXRhYmxlKSB7Ci0g
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgdGhl
cmUgaXMgbm8gZnVuY3Rpb24gZXhlY3V0YWJsZS5cbiIpOwogICAgICAgICByZXR1cm4gVUlOVF9N
QVg7CiAgICAgfQpAQCAtMTQ1NSwxNCArMTQ1MSwxNCBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNl
cjo6aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50LCBJbmxpbmVDYWxsRnJhbWU6
OgogICAgIC8vIGl0J3MgYSByYXJlIGNhc2UgYmVjYXVzZSB3ZSBleHBlY3QgdGhhdCBhbnkgaG90
IGNhbGxlZXMgd291bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY29tcGlsZWQuCiAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5iYXNlbGluZUNvZGVCbG9ja0ZvcihzcGVjaWFsaXph
dGlvbktpbmQpOwogICAgIGlmICghY29kZUJsb2NrKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2Ugbm8gY29kZSBibG9jayBhdmFpbGFibGUu
XG4iKTsKICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KIAogICAgIENhcGFiaWxpdHlM
ZXZlbCBjYXBhYmlsaXR5TGV2ZWwgPSBpbmxpbmVGdW5jdGlvbkZvckNhcGFiaWxpdHlMZXZlbCgK
ICAgICAgICAgY29kZUJsb2NrLCBzcGVjaWFsaXphdGlvbktpbmQsIGNhbGxlZS5pc0Nsb3N1cmVD
YWxsKCkpOwotICAgIGlmICh2ZXJib3NlKSB7CisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50
ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgZGF0YUxvZygiICAgIENhbGwgbW9kZTogIiwgY2Fs
bE1vZGUsICJcbiIpOwogICAgICAgICBkYXRhTG9nKCIgICAgSXMgY2xvc3VyZSBjYWxsOiAiLCBj
YWxsZWUuaXNDbG9zdXJlQ2FsbCgpLCAiXG4iKTsKICAgICAgICAgZGF0YUxvZygiICAgIENhcGFi
aWxpdHkgbGV2ZWw6ICIsIGNhcGFiaWxpdHlMZXZlbCwgIlxuIik7CkBAIC0xNDcyLDcgKzE0Njgs
NyBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNh
bGxlZSwgaW50LCBJbmxpbmVDYWxsRnJhbWU6OgogICAgICAgICBkYXRhTG9nKCIgICAgSXMgaW5s
aW5pbmcgY2FuZGlkYXRlOiAiLCBjb2RlQmxvY2stPm93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5p
c0lubGluaW5nQ2FuZGlkYXRlKCksICJcbiIpOwogICAgIH0KICAgICBpZiAoIWNhbklubGluZShj
YXBhYmlsaXR5TGV2ZWwpKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZH
Qnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICBGYWlsaW5nIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzIG5vdCBpbmxpbmVhYmxlLlxuIik7CiAg
ICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CkBAIC0xNDgyLDcgKzE0NzgsNyBAQCB1bnNp
Z25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50
LCBJbmxpbmVDYWxsRnJhbWU6OgogICAgIC8vIHB1cnBvc2Ugb2YgdW5zZXR0aW5nIFNBQkkuCiAg
ICAgaWYgKCFpc1NtYWxsRW5vdWdoVG9JbmxpbmVDb2RlSW50byhtX2NvZGVCbG9jaykpIHsKICAg
ICAgICAgY29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwotICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZSBjYWxs
ZXIgaXMgdG9vIGxhcmdlLlxuIik7CiAgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CkBA
IC0xNTA2LDcgKzE1MDIsNyBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0
KENhbGxWYXJpYW50IGNhbGxlZSwgaW50LCBJbmxpbmVDYWxsRnJhbWU6OgogICAgIGZvciAoSW5s
aW5lU3RhY2tFbnRyeSogZW50cnkgPSBtX2lubGluZVN0YWNrVG9wOyBlbnRyeTsgZW50cnkgPSBl
bnRyeS0+bV9jYWxsZXIpIHsKICAgICAgICAgKytkZXB0aDsKICAgICAgICAgaWYgKGRlcHRoID49
IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ0RlcHRoKCkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBkZXB0aCBleGNl
ZWRlZC5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgICAgICB9CkBAIC0x
NTE0LDE0ICsxNTEwLDE0IEBAIHVuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3Qo
Q2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQsIElubGluZUNhbGxGcmFtZTo6CiAgICAgICAgIGlmIChl
bnRyeS0+ZXhlY3V0YWJsZSgpID09IGV4ZWN1dGFibGUpIHsKICAgICAgICAgICAgICsrcmVjdXJz
aW9uOwogICAgICAgICAgICAgaWYgKHJlY3Vyc2lvbiA+PSBPcHRpb25zOjptYXhpbXVtSW5saW5p
bmdSZWN1cnNpb24oKSkgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAg
ICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHJlY3Vyc2lvbiBkZXRlY3Rl
ZC5cbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0
ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiICAgIElubGlu
aW5nIHNob3VsZCBiZSBwb3NzaWJsZS5cbiIpOwogICAgIAogICAgIC8vIEl0IG1pZ2h0IGJlIHBv
c3NpYmxlIHRvIGlubGluZS4KQEAgLTE2MTgsMTEgKzE2MTQsMTEgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQs
IENhbGxWYXIKICAgICBpbmxpbmVWYXJpYWJsZURhdGEuYXJndW1lbnRQb3NpdGlvblN0YXJ0ID0g
YXJndW1lbnRQb3NpdGlvblN0YXJ0OwogICAgIGlubGluZVZhcmlhYmxlRGF0YS5jYWxsZWVWYXJp
YWJsZSA9IDA7CiAgICAgCi0gICAgUkVMRUFTRV9BU1NFUlQoCisgICAgUEFSU0VSX0FTU0VSVCgK
ICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNh
bGwKICAgICAgICAgPT0gY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSk7CiAgICAgaWYgKGNhbGxlZS5p
c0Nsb3N1cmVDYWxsKCkpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGVlVmFyaWFibGUp
OworICAgICAgICBQQVJTRVJfQVNTRVJUKGNhbGxlZVZhcmlhYmxlKTsKICAgICAgICAgaW5saW5l
VmFyaWFibGVEYXRhLmNhbGxlZVZhcmlhYmxlID0gY2FsbGVlVmFyaWFibGU7CiAgICAgfQogICAg
IApAQCAtMTY2OSw3ICsxNjY1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChO
b2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXIKICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgICAgIFJlcHVycG9zaW5nIGxhc3QgYmxvY2sgZnJvbSAiLCBs
YXN0QmxvY2stPmJ5dGVjb2RlQmVnaW4sICIgdG8gIiwgbV9jdXJyZW50SW5kZXgsICJcbiIpOwog
ICAgICAgICAgICAgbGFzdEJsb2NrLT5ieXRlY29kZUJlZ2luID0gbV9jdXJyZW50SW5kZXg7CiAg
ICAgICAgICAgICBpZiAoY2FsbGVyTGlua2FiaWxpdHkgPT0gQ2FsbGVyRG9lc05vcm1hbExpbmtp
bmcpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAo
REZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiQWRkaW5nIHVubGlua2VkIGJsb2NrICIsIFJhd1BvaW50ZXIobV9ncmFwaC5sYXN0
QmxvY2soKSksICIgKG9uZSByZXR1cm4pXG4iKTsKICAgICAgICAgICAgICAgICBtX2lubGluZVN0
YWNrVG9wLT5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9jayht
X2dyYXBoLmxhc3RCbG9jaygpKSk7CiAgICAgICAgICAgICB9CkBAIC0xNjk5LDE0ICsxNjk1LDE0
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUs
IGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyCiAgICAgICAgIEFTU0VSVCghbm9kZS0+dGFyZ2V0
QmxvY2soKSk7CiAgICAgICAgIG5vZGUtPnRhcmdldEJsb2NrKCkgPSBibG9jay5wdHIoKTsKICAg
ICAgICAgaW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzW2ldLm1fbmVlZHNFYXJseVJl
dHVybkxpbmtpbmcgPSBmYWxzZTsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChE
RkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygi
TWFya2luZyAiLCBSYXdQb2ludGVyKGJsb2NrVG9MaW5rKSwgIiBhcyBsaW5rZWQgKGp1bXBzIHRv
IHJldHVybilcbiIpOwogICAgICAgICBibG9ja1RvTGluay0+ZGlkTGluaygpOwogICAgIH0KICAg
ICAKICAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrLnB0cigpOwogICAgIEFTU0VSVChtX2lubGlu
ZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmlzRW1wdHkoKSB8fCBt
X2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmxhc3QoKS0+
Ynl0ZWNvZGVCZWdpbiA8IG5leHRPZmZzZXQpOwotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChE
RkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJBZGRp
bmcgdW5saW5rZWQgYmxvY2sgIiwgUmF3UG9pbnRlcihibG9jay5wdHIoKSksICIgKG1hbnkgcmV0
dXJucylcbiIpOwogICAgIGlmIChjYWxsZXJMaW5rYWJpbGl0eSA9PSBDYWxsZXJEb2VzTm9ybWFs
TGlua2luZykgewogICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV91bmxpbmtl
ZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9jayhibG9jay5wdHIoKSkpOwpAQCAtMTc0Miw3ICsx
NzM4LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5lQ2FsbChOb2RlKiBj
YWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQKICAgICBpZiAoIWlubGluaW5nQmFsYW5j
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlm
IChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCIg
ICAgQ29uc2lkZXJpbmcgY2FsbGVlICIsIGNhbGxlZSwgIlxuIik7CiAgICAgCiAgICAgLy8gSW50
cmluc2ljcyBhbmQgaW50ZXJuYWwgZnVuY3Rpb25zIGNhbiBvbmx5IGJlIGlubGluZWQgaWYgd2Un
cmUgbm90IGRvaW5nIHZhcmFyZ3MuIFRoaXMgaXMgYmVjYXVzZQpAQCAtMTc2Miw0MCArMTc1OCw0
MCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKE5vZGUqIGNhbGxU
YXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZAogICAgIAogICAgICAgICBpZiAoSW50ZXJuYWxG
dW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUuaW50ZXJuYWxGdW5jdGlvbigpKSB7CiAgICAgICAg
ICAgICBpZiAoaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKGNhbGxUYXJnZXROb2RlLCBy
ZXN1bHRPcGVyYW5kLCBmdW5jdGlvbiwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQsIHByZWRpY3Rpb24sIGluc2VydENoZWNrc1dp
dGhBY2NvdW50aW5nKSkgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRpZEluc2Vy
dENoZWNrcyk7CisgICAgICAgICAgICAgICAgUEFSU0VSX0FTU0VSVChkaWRJbnNlcnRDaGVja3Mp
OwogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOwog
ICAgICAgICAgICAgICAgIGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CiAgICAgICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNl
LS07CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghZGlkSW5zZXJ0Q2hlY2tzKTsKKyAgICAgICAgICAgIFBBUlNF
Ul9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KICAgICAKICAgICAgICAgSW50cmluc2ljIGludHJpbnNpYyA9IGNhbGxlZS5pbnRy
aW5zaWNGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICAgICAgaWYgKGludHJpbnNpYyAhPSBO
b0ludHJpbnNpYykgewogICAgICAgICAgICAgaWYgKGhhbmRsZUludHJpbnNpY0NhbGwoY2FsbFRh
cmdldE5vZGUsIHJlc3VsdE9wZXJhbmQsIGludHJpbnNpYywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBwcmVkaWN0aW9uLCBpbnNlcnRDaGVja3NXaXRoQWNjb3Vu
dGluZykpIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChkaWRJbnNlcnRDaGVja3Mp
OworICAgICAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKICAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXROb2RlKTsKICAgICAgICAg
ICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpOwogICAgICAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZS0tOwogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVCghZGlkSW5zZXJ0Q2hlY2tzKTsKKyAgICAgICAgICAgIFBBUlNFUl9BU1NF
UlQoIWRpZEluc2VydENoZWNrcyk7CiAgICAgICAgICAgICAvLyBXZSBtaWdodCBzdGlsbCB0cnkg
dG8gaW5saW5lIHRoZSBJbnRyaW5zaWMgYmVjYXVzZSBpdCBtaWdodCBiZSBhIGJ1aWx0aW4gSlMg
ZnVuY3Rpb24uCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoT3B0aW9uczo6dXNlRE9NSklUKCkp
IHsKICAgICAgICAgICAgIGlmIChjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlID0g
Y2FsbGVlLnNpZ25hdHVyZUZvcihzcGVjaWFsaXphdGlvbktpbmQpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGhhbmRsZURPTUpJVENhbGwoY2FsbFRhcmdldE5vZGUsIHJlc3VsdE9wZXJhbmQsIHNp
Z25hdHVyZSwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBwcmVk
aWN0aW9uLCBpbnNlcnRDaGVja3NXaXRoQWNjb3VudGluZykpIHsKLSAgICAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKKyAgICAgICAgICAgICAgICAgICAg
UEFSU0VSX0FTU0VSVChkaWRJbnNlcnRDaGVja3MpOwogICAgICAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXROb2RlKTsKICAgICAgICAgICAgICAgICAgICAgZW1p
dEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKTsKICAgICAgICAgICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNlLS07CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghZGlkSW5zZXJ0Q2hlY2tzKTsKKyAgICAgICAgICAgICAgICBQQVJT
RVJfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQpAQCAtMTgxNywyMSArMTgxMywyMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bmxpbmluZygKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzQXJndW1lbnQsIHVuc2lnbmVk
IGFyZ3VtZW50c09mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAogICAgIHVu
c2lnbmVkIG5leHRPZmZzZXQsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5k
IGtpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiB7Ci0gICAgaWYgKHZlcmJvc2UpIHsK
KyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICBk
YXRhTG9nKCJIYW5kbGluZyBpbmxpbmluZy4uLlxuIik7CiAgICAgICAgIGRhdGFMb2coIlN0YWNr
OiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICB9CiAgICAgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxp
emF0aW9uS2luZEZvcihraW5kKTsKICAgICAKICAgICBpZiAoIWNhbGxMaW5rU3RhdHVzLnNpemUo
KSkgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2Vy
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJCYWlsaW5nIGlubGluaW5n
LlxuIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgaWYgKElubGlu
ZUNhbGxGcmFtZTo6aXNWYXJhcmdzKGtpbmQpCiAgICAgICAgICYmIGNhbGxMaW5rU3RhdHVzLm1h
eE51bUFyZ3VtZW50cygpID4gT3B0aW9uczo6bWF4aW11bVZhcmFyZ3NGb3JJbmxpbmluZygpKSB7
Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkJhaWxpbmcgaW5saW5pbmcgYmVj
YXVzZSBvZiB2YXJhcmdzLlxuIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0x
OTUwLDcgKzE5NDYsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0pOwot
ICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRl
cm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiRG9uZSBpbmxpbmluZyAoc2lt
cGxlKS5cbiIpOwogICAgICAgICAgICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1cnJlbnRDb2RlT3Jp
Z2luKCksICJcbiIpOwogICAgICAgICAgICAgZGF0YUxvZygiUmVzdWx0OiAiLCByZXN1bHQsICJc
biIpOwpAQCAtMTk2Niw3ICsxOTYyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5s
aW5pbmcoCiAgICAgLy8gYWxzby4KICAgICBpZiAoIWlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUp
IHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0NhbGxJbmxpbmluZygpCiAgICAgICAgIHx8IElu
bGluZUNhbGxGcmFtZTo6aXNWYXJhcmdzKGtpbmQpKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKSB7
CisgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKSB7CiAgICAg
ICAgICAgICBkYXRhTG9nKCJCYWlsaW5nIGlubGluaW5nIChoYXJkKS5cbiIpOwogICAgICAgICAg
ICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOwogICAgICAg
ICB9CkBAIC0xOTc4LDcgKzE5NzQsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxp
bmluZygKICAgICAvLyBpdCBoYXMgbm8gaWRlYS4KICAgICBpZiAoIU9wdGlvbnM6OnVzZVBvbHlt
b3JwaGljQ2FsbElubGluaW5nRm9yTm9uU3R1YlN0YXR1cygpCiAgICAgICAgICYmICFjYWxsTGlu
a1N0YXR1cy5pc0Jhc2VkT25TdHViKCkpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAg
ICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAg
IGRhdGFMb2coIkJhaWxpbmcgaW5saW5pbmcgKG5vbi1zdHViIHBvbHltb3JwaGlzbSkuXG4iKTsK
ICAgICAgICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4i
KTsKICAgICAgICAgfQpAQCAtMjAwNiwxNCArMjAwMiwxNCBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbmxpbmluZygKICAgICAgICAgLy8gd2hlcmUgaXQgd291bGQgYmUgYmVuZWZpY2lh
bC4gSXQgbWlnaHQgYmUgYmVzdCB0byBoYW5kbGUgdGhlc2UgY2FzZXMgYXMgaWYgYWxsIGNhbGxz
IHdlcmUKICAgICAgICAgLy8gY2xvc3VyZSBjYWxscy4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjAyMAotICAgICAgICBpZiAodmVyYm9zZSkg
eworICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkgewogICAg
ICAgICAgICAgZGF0YUxvZygiQmFpbGluZyBpbmxpbmluZyAobWl4KS5cbiIpOwogICAgICAgICAg
ICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCi0gICAgaWYgKHZlcmJvc2Up
IHsKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAg
ICBkYXRhTG9nKCJEb2luZyBoYXJkIGlubGluaW5nLi4uXG4iKTsKICAgICAgICAgZGF0YUxvZygi
U3RhY2s6ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOwogICAgIH0KQEAgLTIwMjQsMTEg
KzIwMjAsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgLy8g
c3RvcmUgdGhlIGNhbGxlZSBzbyB0aGF0IGl0IHdpbGwgYmUgYWNjZXNzaWJsZSB0byBhbGwgb2Yg
dGhlIGJsb2NrcyB3ZSdyZSBhYm91dCB0byBjcmVhdGUuIFdlCiAgICAgLy8gZ2V0IGF3YXkgd2l0
aCBkb2luZyBhbiBpbW1lZGlhdGUtc2V0IGhlcmUgYmVjYXVzZSB3ZSB3b3VsZG4ndCBoYXZlIHBl
cmZvcm1lZCBhbnkgc2lkZSBlZmZlY3RzCiAgICAgLy8geWV0LgotICAgIGlmICh2ZXJib3NlKQor
ICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRh
TG9nKCJSZWdpc3RlciBvZmZzZXQ6ICIsIHJlZ2lzdGVyT2Zmc2V0KTsKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgY2FsbGVlUmVnKHJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKTsK
ICAgICBjYWxsZWVSZWcgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQoY2FsbGVlUmVn
KTsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQ2FsbGVlIGlzIGdvaW5nIHRvIGJlICIsIGNhbGxl
ZVJlZywgIlxuIik7CiAgICAgc2V0RGlyZWN0KGNhbGxlZVJlZywgY2FsbFRhcmdldE5vZGUsIElt
bWVkaWF0ZVNldFdpdGhGbHVzaCk7CiAKQEAgLTIwNDIsNyArMjAzOCw3IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgIGFkZFRvR3JhcGgoU3dpdGNoLCBPcEluZm8o
JmRhdGEpLCB0aGluZ1RvU3dpdGNoT24pOwogICAgIAogICAgIEJhc2ljQmxvY2sqIG9yaWdpbkJs
b2NrID0gbV9jdXJyZW50QmxvY2s7Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0J5dGVD
b2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIk1hcmtpbmcgIiwg
UmF3UG9pbnRlcihvcmlnaW5CbG9jayksICIgYXMgbGlua2VkIChvcmlnaW4gb2YgcG9seSBpbmxp
bmUpXG4iKTsKICAgICBvcmlnaW5CbG9jay0+ZGlkTGluaygpOwogICAgIGNhbmNlbExpbmtpbmdG
b3JCbG9jayhtX2lubGluZVN0YWNrVG9wLCBvcmlnaW5CbG9jayk7CkBAIC0yMDU0LDcgKzIwNTAs
NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICAvLyBXZSBtYXkg
Zm9yY2UgdGhpcyB0cnVlIGlmIHdlIGdpdmUgdXAgb24gaW5saW5pbmcgYW55IG9mIHRoZSBlZGdl
cy4KICAgICBib29sIGNvdWxkVGFrZVNsb3dQYXRoID0gY2FsbExpbmtTdGF0dXMuY291bGRUYWtl
U2xvd1BhdGgoKTsKICAgICAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQ
YXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQWJvdXQgdG8gbG9vcCBv
dmVyIGZ1bmN0aW9ucyBhdCAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiLlxuIik7CiAgICAgCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxMaW5rU3RhdHVzLnNpemUoKTsgKytpKSB7
CkBAIC0yMTAxLDExICsyMDk3LDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGlu
aW5nKAogICAgICAgICAgICAgYWRkVG9HcmFwaChKdW1wKTsKICAgICAgICAgICAgIGxhbmRpbmdC
bG9ja3MuYXBwZW5kKG1fY3VycmVudEJsb2NrKTsKICAgICAgICAgfQotICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIobV9jdXJyZW50QmxvY2sp
LCAiIGFzIGxpbmtlZCAodGFpbCBvZiBwb2x5IGlubGluZWUpXG4iKTsKICAgICAgICAgbV9jdXJy
ZW50QmxvY2stPmRpZExpbmsoKTsKIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYg
KERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9n
KCJGaW5pc2hlZCBpbmxpbmluZyAiLCBjYWxsTGlua1N0YXR1c1tpXSwgIiBhdCAiLCBjdXJyZW50
Q29kZU9yaWdpbigpLCAiLlxuIik7CiAgICAgfQogICAgIApAQCAtMjExNSw3ICsyMTExLDcgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgbV9leGl0T0sgPSB0cnVl
OwogICAgIGRhdGEuZmFsbFRocm91Z2ggPSBCcmFuY2hUYXJnZXQoc2xvd1BhdGhCbG9jay5wdHIo
KSk7CiAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhzbG93UGF0aEJsb2NrLmNvcHlSZWYoKSk7Ci0g
ICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9pbnRlcihzbG93UGF0aEJsb2Nr
LnB0cigpKSwgIiBhcyBsaW5rZWQgKHNsb3cgcGF0aCBibG9jaylcbiIpOwogICAgIHNsb3dQYXRo
QmxvY2stPmRpZExpbmsoKTsKICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CkBAIC0yMTQ2LDcg
KzIxNDIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICBSZWY8
QmFzaWNCbG9jaz4gY29udGludWF0aW9uQmxvY2sgPSBhZG9wdFJlZigKICAgICAgICAgKm5ldyBC
YXNpY0Jsb2NrKFVJTlRfTUFYLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIDEpKTsKICAg
ICBtX2dyYXBoLmFwcGVuZEJsb2NrKGNvbnRpbnVhdGlvbkJsb2NrLmNvcHlSZWYoKSk7Ci0gICAg
aWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgIGRhdGFMb2coIkFkZGluZyB1bmxpbmtlZCBibG9jayAiLCBSYXdQb2ludGVyKGNv
bnRpbnVhdGlvbkJsb2NrLnB0cigpKSwgIiAoY29udGludWF0aW9uKVxuIik7CiAgICAgbV9pbmxp
bmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9jayhjb250aW51
YXRpb25CbG9jay5wdHIoKSkpOwogICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKQEAgLTIxNTgs
NyArMjE1NCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgIG1f
Y3VycmVudEluZGV4ID0gb2xkT2Zmc2V0OwogICAgIG1fZXhpdE9LID0gdHJ1ZTsKICAgICAKLSAg
ICBpZiAodmVyYm9zZSkgeworICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJi
b3NlKSB7CiAgICAgICAgIGRhdGFMb2coIkRvbmUgaW5saW5pbmcgKGhhcmQpLlxuIik7CiAgICAg
ICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICB9
CkBAIC0zNDgzLDE0ICszNDc5LDE0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Om5lZWRzRHluYW1p
Y0xvb2t1cChSZXNvbHZlVHlwZSB0eXBlLCBPcGNvZGVJRCBvcGNvZGUpCiAKIEdldEJ5T2Zmc2V0
TWV0aG9kIEJ5dGVDb2RlUGFyc2VyOjpwbGFuTG9hZChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvbiYgY29uZGl0aW9uKQogewotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29k
ZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJQbGFubmluZyBhIGxv
YWQ6ICIsIGNvbmRpdGlvbiwgIlxuIik7CiAgICAgCiAgICAgLy8gV2UgbWlnaHQgcHJvbW90ZSB0
aGlzIHRvIEVxdWl2YWxlbmNlLCBhbmQgYSBsYXRlciBERkcgcGFzcyBtaWdodCBhbHNvIGRvIHN1
Y2ggcHJvbW90aW9uCiAgICAgLy8gZXZlbiBpZiB3ZSBmYWlsLCBidXQgZm9yIHNpbXBsaWNpdHkg
dGhpcyBjYW5ub3QgYmUgYXNrZWQgdG8gbG9hZCBhbiBlcXVpdmFsZW5jZSBjb25kaXRpb24uCiAg
ICAgLy8gTm9uZSBvZiB0aGUgY2xpZW50cyBvZiB0aGlzIG1ldGhvZCB3aWxsIHJlcXVlc3QgYSBs
b2FkIG9mIGFuIEVxdWl2YWxlbmNlIGNvbmRpdGlvbiBhbnl3YXksCiAgICAgLy8gYW5kIHN1cHBv
cnRpbmcgaXQgd291bGQgY29tcGxpY2F0ZSB0aGUgaGV1cmlzdGljcyBiZWxvdy4KLSAgICBSRUxF
QVNFX0FTU0VSVChjb25kaXRpb24ua2luZCgpID09IFByb3BlcnR5Q29uZGl0aW9uOjpQcmVzZW5j
ZSk7CisgICAgUEFSU0VSX0FTU0VSVChjb25kaXRpb24ua2luZCgpID09IFByb3BlcnR5Q29uZGl0
aW9uOjpQcmVzZW5jZSk7CiAgICAgCiAgICAgLy8gSGVyZSdzIHRoZSByYW5raW5nIG9mIGhvdyB0
byBoYW5kbGUgdGhpcywgZnJvbSBtb3N0IHByZWZlcnJlZCB0byBsZWFzdCBwcmVmZXJyZWQ6CiAg
ICAgLy8KQEAgLTM1OTMsMTQgKzM1ODksMTQgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6Y2hlY2so
Y29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCkKIAogR2V0QnlP
ZmZzZXRNZXRob2QgQnl0ZUNvZGVQYXJzZXI6OnBsYW5Mb2FkKGNvbnN0IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQpCiB7Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYg
KERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coImNv
bmRpdGlvblNldCA9ICIsIGNvbmRpdGlvblNldCwgIlxuIik7CiAgICAgCiAgICAgR2V0QnlPZmZz
ZXRNZXRob2QgcmVzdWx0OwogICAgIGZvciAoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24m
IGNvbmRpdGlvbiA6IGNvbmRpdGlvblNldCkgewogICAgICAgICBzd2l0Y2ggKGNvbmRpdGlvbi5r
aW5kKCkpIHsKICAgICAgICAgY2FzZSBQcm9wZXJ0eUNvbmRpdGlvbjo6UHJlc2VuY2U6Ci0gICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVzdWx0KTsgLy8gU2hvdWxkIG9ubHkgc2VlIGV4YWN0
bHkgb25lIG9mIHRoZXNlLgorICAgICAgICAgICAgUEFSU0VSX0FTU0VSVCghcmVzdWx0KTsgLy8g
U2hvdWxkIG9ubHkgc2VlIGV4YWN0bHkgb25lIG9mIHRoZXNlLgogICAgICAgICAgICAgcmVzdWx0
ID0gcGxhbkxvYWQoY29uZGl0aW9uKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0KQogICAgICAg
ICAgICAgICAgIHJldHVybiBHZXRCeU9mZnNldE1ldGhvZCgpOwpAQCAtMzc3MCw3ICszNzY2LDcg
QEAgTm9kZSogQnl0ZUNvZGVQYXJzZXI6OmxvYWQoCiAKIE5vZGUqIEJ5dGVDb2RlUGFyc2VyOjpz
dG9yZShOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBjb25zdCBQdXRCeUlkVmFyaWFu
dCYgdmFyaWFudCwgTm9kZSogdmFsdWUpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQodmFyaWFudC5r
aW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2UpOworICAgIFBBUlNFUl9BU1NFUlQodmFy
aWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2UpOwogCiAgICAgY2hlY2tQcmVz
ZW5jZUxpa2UoYmFzZSwgbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJdLCB2YXJpYW50
Lm9mZnNldCgpLCB2YXJpYW50LnN0cnVjdHVyZSgpKTsKICAgICByZXR1cm4gaGFuZGxlUHV0QnlP
ZmZzZXQoYmFzZSwgaWRlbnRpZmllciwgdmFyaWFudC5vZmZzZXQoKSwgdmFyaWFudC5yZXF1aXJl
ZFR5cGUoKSwgdmFsdWUpOwpAQCAtNDE2OSw3ICs0MTY1LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAvLyBvcHBvc2VkIHRvIHVzaW5nIGEg
dmFsdWUgd2Ugc2V0IGV4cGxpY2l0bHkuCiAgICAgaWYgKG1fY3VycmVudEJsb2NrID09IG1fZ3Jh
cGguYmxvY2soMCkgJiYgIWlubGluZUNhbGxGcmFtZSgpKSB7CiAgICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9ncmFwaC5tX3Jvb3RUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIEFyZ3Vt
ZW50c1ZlY3RvcigpKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50
cnkpOworICAgICAgICBQQVJTRVJfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICAg
ICAgQXJndW1lbnRzVmVjdG9yJiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZTsKICAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50cy5yZXNpemUobV9udW1Bcmd1
bWVudHMpOwogCkBAIC01MjY2LDcgKzUyNjIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2Nh
dGNoKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY3Vy
cmVudEJsb2NrLT5zaXplKCkpOworICAgICAgICAgICAgUEFSU0VSX0FTU0VSVCghbV9jdXJyZW50
QmxvY2stPnNpemUoKSk7CiAKICAgICAgICAgICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZm
ZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihj
dXJyZW50SW5zdHJ1Y3Rpb25bM10udS5wb2ludGVyKTsKIApAQCAtNTI5MSw4ICs1Mjg3LDggQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAg
ICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNMb2NhbCgpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgbG9jYWxQcmVkaWN0aW9ucy5hcHBlbmQocHJlZGljdGlvbik7CiAgICAgICAgICAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQob3BlcmFu
ZC5pc0FyZ3VtZW50KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KG9wZXJhbmQudG9Bcmd1bWVudCgpKSA8IGFyZ3VtZW50UHJl
ZGljdGlvbnMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQo
b3BlcmFuZC5pc0FyZ3VtZW50KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgUEFSU0VSX0FT
U0VSVChzdGF0aWNfY2FzdDx1aW50MzJfdD4ob3BlcmFuZC50b0FyZ3VtZW50KCkpIDwgYXJndW1l
bnRQcmVkaWN0aW9ucy5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlk
YXRpb25FbmFibGVkKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlbkFyZ3VtZW50
cy5hZGQob3BlcmFuZC50b0FyZ3VtZW50KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYXJn
dW1lbnRQcmVkaWN0aW9uc1tvcGVyYW5kLnRvQXJndW1lbnQoKV0gPSBwcmVkaWN0aW9uOwpAQCAt
NTMwMSw3ICs1Mjk3LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZCBsaW1pdCkKIAogICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8
IG1fbnVtQXJndW1lbnRzOyArK2FyZ3VtZW50KQotICAgICAgICAgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoc2VlbkFyZ3VtZW50cy5jb250YWlucyhhcmd1bWVudCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgUEFSU0VSX0FTU0VSVChzZWVuQXJndW1lbnRzLmNvbnRhaW5zKGFyZ3Vt
ZW50KSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCkBAIC01MzQyLDcgKzUz
MzgsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2dyYXBo
Lm1fcm9vdFRvQXJndW1lbnRzLmFkZChtX2N1cnJlbnRCbG9jaywgQXJndW1lbnRzVmVjdG9yKCkp
OwotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsK
KyAgICAgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAg
ICAgICAgICAgICAgICBBcmd1bWVudHNWZWN0b3ImIGVudHJ5cG9pbnRBcmd1bWVudHMgPSBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVu
dHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKIApAQCAtNTQ4Nyw4ICs1NDgzLDggQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIGNh
c2UgR2xvYmFsTGV4aWNhbFZhcjoKICAgICAgICAgICAgIGNhc2UgR2xvYmFsTGV4aWNhbFZhcldp
dGhWYXJJbmplY3Rpb25DaGVja3M6IHsKICAgICAgICAgICAgICAgICBKU1Njb3BlKiBjb25zdGFu
dFNjb3BlID0gSlNTY29wZTo6Y29uc3RhbnRTY29wZUZvckNvZGVCbG9jayhyZXNvbHZlVHlwZSwg
bV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2spOwotICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGNvbnN0YW50U2NvcGUpOwotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0
YXRpY19jYXN0PEpTU2NvcGUqPihjdXJyZW50SW5zdHJ1Y3Rpb25bNl0udS5wb2ludGVyKSA9PSBj
b25zdGFudFNjb3BlKTsKKyAgICAgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKGNvbnN0YW50U2Nv
cGUpOworICAgICAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoc3RhdGljX2Nhc3Q8SlNTY29wZSo+
KGN1cnJlbnRJbnN0cnVjdGlvbls2XS51LnBvaW50ZXIpID09IGNvbnN0YW50U2NvcGUpOwogICAg
ICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoZHN0KSwgd2Vha0pTQ29uc3RhbnQoY29u
c3RhbnRTY29wZSkpOwogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgZ2V0KFZp
cnR1YWxSZWdpc3RlcihzY29wZSkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTU4Mjks
NyArNTgyNSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGlt
aXQpCiAgICAgICAgICAgICAvLyBCYXNlbGluZS0+REZHIE9TUiBqdW1wcyBiZXR3ZWVuIGxvb3Ag
aGludHMuIFRoZSBERkcgYXNzdW1lcyB0aGF0IEJhc2VsaW5lLT5ERkcKICAgICAgICAgICAgIC8v
IE9TUiBjYW4gb25seSBoYXBwZW4gYXQgYmFzaWMgYmxvY2sgYm91bmRhcmllcy4gQXNzZXJ0IHRo
YXQgdGhlc2UgdHdvIHN0YXRlbWVudHMKICAgICAgICAgICAgIC8vIGFyZSBjb21wYXRpYmxlLgot
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9jdXJyZW50SW5kZXggPT0gYmxvY2tCZWdpbik7
CisgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKG1fY3VycmVudEluZGV4ID09IGJsb2NrQmVnaW4p
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBXZSBuZXZlciBkbyBPU1IgaW50byBhbiBp
bmxpbmVkIGNvZGUgYmxvY2suIFRoYXQgY291bGQgbm90IGhhcHBlbiwgc2luY2UgT1NSCiAgICAg
ICAgICAgICAvLyBsb29rcyB1cCB0aGUgY29kZSBibG9jayB0aGF0IGlzIHRoZSByZXBsYWNlbWVu
dCBmb3IgdGhlIGJhc2VsaW5lIEpJVCBjb2RlCkBAIC02MTc5LDcgKzYxNzUsNyBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2soQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxCYXNpY0Js
b2NrKj4mIHBvc3NpYmxlVAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0gICAgaWYgKHZl
cmJvc2UpCisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9pbnRlcihibG9jayksICIgYXMgbGlua2VkIChh
Y3R1YWxseSBkaWQgbGlua2luZylcbiIpOwogICAgIGJsb2NrLT5kaWRMaW5rKCk7CiB9CkBAIC02
MTg3LDEwICs2MTgzLDEwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmxpbmtCbG9jayhCYXNpY0Js
b2NrKiBibG9jaywgVmVjdG9yPEJhc2ljQmxvY2sqPiYgcG9zc2libGVUCiB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpsaW5rQmxvY2tzKFZlY3RvcjxVbmxpbmtlZEJsb2NrPiYgdW5saW5rZWRCbG9ja3Ms
IFZlY3RvcjxCYXNpY0Jsb2NrKj4mIHBvc3NpYmxlVGFyZ2V0cykKIHsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHVubGlua2VkQmxvY2tzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgICAgIGRhdGFMb2coIkF0dGVtcHRpbmcgdG8gbGluayAiLCBSYXdQb2ludGVyKHVu
bGlua2VkQmxvY2tzW2ldLm1fYmxvY2spLCAiXG4iKTsKICAgICAgICAgaWYgKHVubGlua2VkQmxv
Y2tzW2ldLm1fbmVlZHNOb3JtYWxMaW5raW5nKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICAgICAgICAgIGRhdGFMb2coIiAgICBEb2VzIG5lZWQgbm9ybWFsIGxpbmtpbmcuXG4iKTsK
ICAgICAgICAgICAgIGxpbmtCbG9jayh1bmxpbmtlZEJsb2Nrc1tpXS5tX2Jsb2NrLCBwb3NzaWJs
ZVRhcmdldHMpOwogICAgICAgICAgICAgdW5saW5rZWRCbG9ja3NbaV0ubV9uZWVkc05vcm1hbExp
bmtpbmcgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q1NFUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAK
aW5kZXggNTdlYzRhODBlNGIyOWQyY2JkNDk2ZWVhYzM4ZDFiMjkzOWI4NjE3My4uZWJkMWI4ZWZl
ZjdjMjUzMGUyOGY5MjcxN2NmNzBkYWMyNzBlZDNjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDU0VQaGFzZS5jcHAKQEAgLTQ4LDcgKzQ4LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogCiBuYW1lc3BhY2UgewogCi1jb25zdCBib29sIHZlcmJvc2UgPSBmYWxz
ZTsKK25hbWVzcGFjZSBERkdDU0VQaGFzZUludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZl
cmJvc2UgPSBmYWxzZTsKK30KIAogY2xhc3MgSW1wdXJlRGF0YVNsb3QgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEltcHVyZURhdGFTbG90KTsKQEAgLTYyNyw3ICs2MjksNyBAQCBwdWJsaWM6
CiAgICAgCiAgICAgYm9vbCBpdGVyYXRlKCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRh
dGFMb2coIlBlcmZvcm1pbmcgaXRlcmF0aW9uLlxuIik7CiAgICAgICAgIAogICAgICAgICBtX2No
YW5nZWQgPSBmYWxzZTsKQEAgLTYzOCwxMyArNjQwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAg
IG1faW1wdXJlRGF0YSA9ICZtX2ltcHVyZURhdGFNYXBbbV9ibG9ja107CiAgICAgICAgICAgICBt
X3dyaXRlc1NvRmFyLmNsZWFyKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiUHJvY2Vzc2luZyBibG9jayAiLCAqbV9ibG9jaywgIjpcbiIp
OwogCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRleCA9IDA7IG5vZGVJbmRleCA8
IG1fYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAgICAgICAgICAgICAgICBtX25vZGVJ
bmRleCA9IG5vZGVJbmRleDsKICAgICAgICAgICAgICAgICBtX25vZGUgPSBtX2Jsb2NrLT5hdChu
b2RlSW5kZXgpOwotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAg
IGlmIChERkdDU0VQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgIExvb2tpbmcgYXQgbm9kZSAiLCBtX25vZGUsICI6XG4iKTsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBtX2dyYXBoLnBlcmZvcm1TdWJzdGl0dXRpb24obV9ub2Rl
KTsKQEAgLTcwNyw3ICs3MDksNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGEgZ2xvYmFsIHNlYXJj
aC4KICAgICAgICAgTGF6eU5vZGUgbWF0Y2ggPSBtX2ltcHVyZURhdGEtPmF2YWlsYWJsZUF0VGFp
bC5nZXQobG9jYXRpb24pOwogICAgICAgICBpZiAoISFtYXRjaCkgewotICAgICAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBGb3VuZCBsb2NhbCBtYXRjaDogIiwgbWF0
Y2gsICJcbiIpOwogICAgICAgICAgICAgcmV0dXJuIG1hdGNoOwogICAgICAgICB9CkBAIC03MTUs
NyArNzE3LDcgQEAgcHVibGljOgogICAgICAgICAvLyBJZiBpdCdzIG5vdCBhdmFpbGFibGUgYXQg
dGhpcyBwb2ludCBpbiB0aGUgYmxvY2ssIGFuZCBhdCBzb21lIHByaW9yIHBvaW50IGluIHRoZSBi
bG9jawogICAgICAgICAvLyB3ZSBoYXZlIGNsb2JiZXJlZCB0aGlzIGhlYXAgbG9jYXRpb24sIHRo
ZW4gdGhlcmUgaXMgbm8gcG9pbnQgaW4gZG9pbmcgYSBnbG9iYWwgc2VhcmNoLgogICAgICAgICBp
ZiAobV93cml0ZXNTb0Zhci5vdmVybGFwcyhsb2NhdGlvbi5oZWFwKCkpKSB7Ci0gICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdDU0VQaGFzZUludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIE5vdCBsb29raW5nIGdsb2JhbGx5
IGJlY2F1c2Ugb2YgbG9jYWwgY2xvYmJlcjogIiwgbV93cml0ZXNTb0ZhciwgIlxuIik7CiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQpAQCAtNzcyLDcgKzc3NCw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gd29ya2xpc3QudGFrZUxhc3Qo
KTsKICAgICAgICAgICAgIHNlZW5MaXN0LmFwcGVuZChibG9jayk7CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgU2VhcmNoaW5nIGlu
IGJsb2NrICIsICpibG9jaywgIlxuIik7CiAgICAgICAgICAgICBJbXB1cmVCbG9ja0RhdGEmIGRh
dGEgPSBtX2ltcHVyZURhdGFNYXBbYmxvY2tdOwogICAgICAgICAgICAgCkBAIC03ODAsMTIgKzc4
MiwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyB0aGV5IGNhbWUgKmFmdGVyKiBvdXIgcG9z
aXRpb24gaW4gdGhlIGJsb2NrLiBDbGVhcmx5LCB3aGlsZSBvdXIgYmxvY2sgZG9taW5hdGVzCiAg
ICAgICAgICAgICAvLyBpdHNlbGYsIHRoZSB0aGluZ3MgaW4gdGhlIGJsb2NrIGFmdGVyIHVzIGRv
bid0IGRvbWluYXRlIHVzLgogICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3Jz
LT5zdHJpY3RseURvbWluYXRlcyhibG9jaywgbV9ibG9jaykpIHsKLSAgICAgICAgICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBJdCBzdHJpY3RseSBk
b21pbmF0ZXMuXG4iKTsKICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9k
ZSwgZGF0YS5kaWRWaXNpdCk7CiAgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBt
X25vZGUsICFtYXRjaCk7CiAgICAgICAgICAgICAgICAgbWF0Y2ggPSBkYXRhLmF2YWlsYWJsZUF0
VGFpbC5nZXQobG9jYXRpb24pOwotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgICAgIGlmIChERkdDU0VQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgICAgIEF2YWlsYWJpbGl0eTogIiwgbWF0Y2gsICJcbiIpOwog
ICAgICAgICAgICAgICAgIGlmICghIW1hdGNoKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIERv
bid0IGV4YW1pbmUgdGhlIHByZWRlY2Vzc29ycyBvZiBhIG1hdGNoLiBBdCB0aGlzIHBvaW50IHdl
IGp1c3Qgd2FudCB0bwpAQCAtNzk1LDEwICs3OTcsMTAgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgIERlYWxpbmcgd2l0aCB3cml0ZSBzZXQgIiwgZGF0
YS53cml0ZXMsICJcbiIpOwogICAgICAgICAgICAgaWYgKGRhdGEud3JpdGVzLm92ZXJsYXBzKGxv
Y2F0aW9uLmhlYXAoKSkpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiICAgICAgICBDbG9iYmVyZWQuXG4iKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIH0KQEAgLTgzMCwxNiArODMyLDE2IEBAIHB1Ymxp
YzoKICAgICAKICAgICB2b2lkIGRlZihIZWFwTG9jYXRpb24gbG9jYXRpb24sIExhenlOb2RlIHZh
bHVlKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdDU0VQaGFz
ZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEdvdCBoZWFwIGxv
Y2F0aW9uIGRlZjogIiwgbG9jYXRpb24sICIgLT4gIiwgdmFsdWUsICJcbiIpOwogICAgICAgICAK
ICAgICAgICAgTGF6eU5vZGUgbWF0Y2ggPSBmaW5kUmVwbGFjZW1lbnQobG9jYXRpb24pOwogICAg
ICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdDU0VQaGFzZUludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgICAgR290IG1hdGNoOiAiLCBt
YXRjaCwgIlxuIik7CiAgICAgICAgIAogICAgICAgICBpZiAoIW1hdGNoKSB7Ci0gICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdDU0VQaGFzZUludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIEFkZGluZyBhdC10YWlsIG1hcHBp
bmc6ICIsIGxvY2F0aW9uLCAiIC0+ICIsIHZhbHVlLCAiXG4iKTsKICAgICAgICAgICAgIGF1dG8g
cmVzdWx0ID0gbV9pbXB1cmVEYXRhLT5hdmFpbGFibGVBdFRhaWwuYWRkKGxvY2F0aW9uLCB2YWx1
ZSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgIXJlc3VsdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3Bw
CmluZGV4IGIwYzU1YmU5OWEyMDUzMTg4MWUxNDYyYmU4NzFkZThhMGRiNzFmMjAuLmI0OWNiNGNk
OTYyMzRhOTI3MWNjYWI4MmM0ZTY3OGJhOTNkNzgyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCkBAIC0zNyw3ICsz
Nyw5IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAorbmFtZXNwYWNlIERG
R0luUGxhY2VBYnN0cmFjdFN0YXRlSW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9z
ZSA9IGZhbHNlOworfQogCiBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6SW5QbGFjZUFic3RyYWN0U3Rh
dGUoR3JhcGgmIGdyYXBoKQogICAgIDogbV9ncmFwaChncmFwaCkKQEAgLTI3Niw3ICsyNzgsNyBA
QCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZVN0YXRlQXRUYWlsKEFic3RyYWN0VmFs
dWUmIGRlc3RpbmF0aW9uLCBBYnN0cmFjdAogCiBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjpt
ZXJnZShCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykKIHsKLSAgICBpZiAodmVyYm9z
ZSkKKyAgICBpZiAoREZHSW5QbGFjZUFic3RyYWN0U3RhdGVJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgZGF0YUxvZygiICAgTWVyZ2luZyBmcm9tICIsIHBvaW50ZXJEdW1wKGZyb20pLCAiIHRv
ICIsIHBvaW50ZXJEdW1wKHRvKSwgIlxuIik7CiAgICAgQVNTRVJUKGZyb20tPnZhcmlhYmxlc0F0
VGFpbC5udW1iZXJPZkFyZ3VtZW50cygpID09IHRvLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZB
cmd1bWVudHMoKSk7CiAgICAgQVNTRVJUKGZyb20tPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxv
Y2FscygpID09IHRvLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKSk7CkBAIC0zMDcs
NyArMzA5LDcgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbG9jayog
ZnJvbSwgQmFzaWNCbG9jayogdG8pCiAKICAgICAgICAgZm9yIChOb2RlQWJzdHJhY3RWYWx1ZVBh
aXImIGVudHJ5IDogdG8tPnNzYS0+dmFsdWVzQXRIZWFkKSB7CiAgICAgICAgICAgICBOb2RlRmxv
d1Byb2plY3Rpb24gbm9kZSA9IGVudHJ5Lm5vZGU7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgICAgIGlmIChERkdJblBsYWNlQWJzdHJhY3RTdGF0ZUludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIE1lcmdpbmcgZm9yICIsIG5vZGUsICI6
IGZyb20gIiwgZm9yTm9kZShub2RlKSwgIiB0byAiLCBlbnRyeS52YWx1ZSwgIlxuIik7CiAjaWZu
ZGVmIE5ERUJVRwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWVDb3VudEluRnJvbUJsb2NrID0g
MDsKQEAgLTMyMiw3ICszMjQsNyBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZShC
YXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykKIAogICAgICAgICAgICAgY2hhbmdlZCB8
PSBlbnRyeS52YWx1ZS5tZXJnZShmb3JOb2RlKG5vZGUpKTsKIAotICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICBpZiAoREZHSW5QbGFjZUFic3RyYWN0U3RhdGVJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgICBSZXN1bHQ6ICIsIGVu
dHJ5LnZhbHVlLCAiXG4iKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTMzNiw3ICsz
MzgsNyBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZShCYXNpY0Jsb2NrKiBmcm9t
LCBCYXNpY0Jsb2NrKiB0bykKICAgICBpZiAoIXRvLT5jZmFIYXNWaXNpdGVkKQogICAgICAgICBj
aGFuZ2VkID0gdHJ1ZTsKICAgICAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHSW5QbGFj
ZUFic3RyYWN0U3RhdGVJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiICAgICAg
V2lsbCByZXZpc2l0OiAiLCBjaGFuZ2VkLCAiXG4iKTsKICAgICB0by0+Y2ZhU2hvdWxkUmV2aXNp
dCB8PSBjaGFuZ2VkOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcAppbmRleCA1ZDFjYmM3NmM0
ZWUyNTJhMzM3MjlmYmUxODVkOTkyYjJhZmVlY2RiLi45OGUwZjZmZGYyODgxNDdhODFlOWNiN2Y5
ZjFiODk5NjU2ZmQ5MWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcApAQCAtNDEsNyArNDEsOSBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKK25hbWVz
cGFjZSBERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZUludGVybmFsIHsKIHN0YXRpYyBjb25z
dCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogZW51bSBSYW5nZUtpbmQgewogICAgIEludmFs
aWRSYW5nZUtpbmQsCkBAIC0yMDMsMTMgKzIwNSwxMyBAQCBwcml2YXRlOgogICAgICAgICAKICAg
ICAgICAgZm9yIChhdXRvKiBub2RlIDogKmJsb2NrKSB7CiAgICAgICAgICAgICBSYW5nZUtleUFu
ZEFkZGVuZCBkYXRhID0gcmFuZ2VLZXlBbmRBZGRlbmQobm9kZSk7Ci0gICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZUlu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkZvciAiLCBub2RlLCAi
OiAiLCBkYXRhLCAiXG4iKTsKICAgICAgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUmFuZ2UmIHJhbmdlID0gbV9t
YXBbZGF0YS5tX2tleV07Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlm
IChERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgICAgIGRhdGFMb2coIiAgICBSYW5nZTogIiwgcmFuZ2UsICJcbiIpOwogICAgICAgICAg
ICAgaWYgKHJhbmdlLm1fY291bnQpIHsKICAgICAgICAgICAgICAgICBpZiAoZGF0YS5tX2FkZGVu
ZCA+IHJhbmdlLm1fbWF4Qm91bmQpIHsKQEAgLTIyNiw3ICsyMjgsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIHJhbmdlLm1fbWF4T3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgcmFuZ2UubV9jb3VudCsrOwotICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhh
c2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgTmV3IHJh
bmdlOiAiLCByYW5nZSwgIlxuIik7CiAgICAgICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0
aW9uUGhhc2UuY3BwCmluZGV4IDA3YjZhYzM0ODJmZDBlN2YzMmVmODRlZjgyYjMxMTUxMjc3YmQy
MTIuLjRhMzgzMWViMTYwZGM0OTc2NGU4NzM5MGU4OGFmNWFhOTVlODZlODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0
aW1pemF0aW9uUGhhc2UuY3BwCkBAIC00Miw3ICs0Miw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7
CituYW1lc3BhY2UgREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbCB7Citz
dGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiBjb25zdCB1bnNpZ25lZCBnaXZl
VXBUaHJlc2hvbGQgPSA1MDsKIAogaW50NjRfdCBjbGFtcGVkU3VtSW1wbCgpIHsgcmV0dXJuIDA7
IH0KQEAgLTEwMTksNyArMTAyMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1faW5zZXJ0aW9u
U2V0LmV4ZWN1dGUobV9ncmFwaC5ibG9jaygwKSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRp
b25QaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJHcmFwaCBi
ZWZvcmUgaW50ZWdlciByYW5nZSBvcHRpbWl6YXRpb246XG4iKTsKICAgICAgICAgICAgIG1fZ3Jh
cGguZHVtcCgpOwogICAgICAgICB9CkBAIC0xMTEwLDcgKzExMTIsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgbV9yZWxhdGlvbnNoaXBzID0gbV9yZWxhdGlvbnNoaXBzQXRIZWFkW2Jsb2Nr
XTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZvciAoYXV0byogbm9kZSA6ICpibG9j
aykgewotICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJBbmFseXNpczogYXQgIiwgbm9kZSwg
IjogIiwgbGlzdER1bXAoc29ydGVkUmVsYXRpb25zaGlwcygpKSwgIlxuIik7CiAgICAgICAgICAg
ICAgICAgICAgIGV4ZWN1dGVOb2RlKG5vZGUpOwogICAgICAgICAgICAgICAgIH0KQEAgLTExOTUs
MTEgKzExOTcsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpb25z
aGlwTWFwIGZvclRydWUgPSBtX3JlbGF0aW9uc2hpcHM7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBSZWxhdGlvbnNoaXBNYXAgZm9yRmFsc2UgPSBtX3JlbGF0aW9uc2hpcHM7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNl
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
RGVhbGluZyB3aXRoIHRydWU6XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlbGF0
aW9uc2hpcChmb3JUcnVlLCByZWxhdGlvbnNoaXBGb3JUcnVlKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChSZWxhdGlvbnNoaXAgcmVsYXRpb25zaGlwRm9yRmFsc2UgPSByZWxhdGlvbnNo
aXBGb3JUcnVlLmludmVyc2UoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VP
cHRpbWl6YXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJEZWFsaW5nIHdpdGggZmFsc2U6XG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRSZWxhdGlvbnNoaXAoZm9yRmFsc2UsIHJlbGF0aW9uc2hpcEZv
ckZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTEyMjMsNyArMTIyNSw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIG1fcmVsYXRpb25zaGlwcyA9IG1fcmVsYXRpb25zaGlwc0F0
SGVhZFtibG9ja107CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRleCA9IDA7IG5v
ZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbm9kZUluZGV4KSB7CiAgICAgICAgICAgICAgICAg
Tm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwotICAgICAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25Q
aGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJUcmFu
c2Zvcm1hdGlvbjogYXQgIiwgbm9kZSwgIjogIiwgbGlzdER1bXAoc29ydGVkUmVsYXRpb25zaGlw
cygpKSwgIlxuIik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBl
bmRzIHVwIGJlaW5nIHByZXR0eSBhd2t3YXJkIHRvIHdyaXRlIGJlY2F1c2Ugd2UgbmVlZCB0byBk
ZWNpZGUgaWYgd2UKQEAgLTEyODcsMTQgKzEyODksMTQgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICAgICAgICAgbWF4VmFsdWUgPSBzdGQ6Om1pbihtYXhWYWx1ZSwgcmVsYXRpb25zaGlwLm1h
eFZhbHVlT2ZMZWZ0KCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdJbnRlZ2VyUmFu
Z2VPcHRpbWl6YXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiICAgIG1pblZhbHVlID0gIiwgbWluVmFsdWUsICIsIG1heFZhbHVlID0g
IiwgbWF4VmFsdWUsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgaWYgKHN1bU92ZXJmbG93czxpbnQ+KG1pblZhbHVlLCBub2RlLT5jaGlsZDIoKS0+YXNJ
bnQzMigpKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgc3VtT3ZlcmZsb3dzPGludD4obWF4
VmFsdWUsIG5vZGUtPmNoaWxkMigpLT5hc0ludDMyKCkpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAg
ICAgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZUludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEl0J3MgaW4gYm91
bmRzLlxuIik7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBleGVj
dXRlTm9kZShibG9jay0+YXQobm9kZUluZGV4KSk7CkBAIC0xNTQ4LDcgKzE1NTAsNyBAQCBwcml2
YXRlOgogICAgICAgICBpZiAoIXJlbGF0aW9uc2hpcCkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdl
T3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2co
IiAgICBTZXR0aW5nOiAiLCByZWxhdGlvbnNoaXAsICIgKHR0bCA9ICIsIHRpbWVUb0xpdmUsICIp
XG4iKTsKIAogICAgICAgICBhdXRvIHJlc3VsdCA9IHJlbGF0aW9uc2hpcE1hcC5hZGQoCkBAIC0x
NjAyLDcgKzE2MDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXJS
ZWxhdGlvbnNoaXAudmFndWVuZXNzKCkgPCByZWxhdGlvbnNoaXAudmFndWVuZXNzKCkKICAgICAg
ICAgICAgICAgICAgICAgICAgICYmIG90aGVyUmVsYXRpb25zaGlwLnJpZ2h0KCktPmlzSW50MzJD
b25zdGFudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGlvbnNoaXAgbmV3UmVs
YXRpb25zaGlwID0gcmVsYXRpb25zaGlwLmZpbHRlckNvbnN0YW50KG90aGVyUmVsYXRpb25zaGlw
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlICYmIG5ld1JlbGF0aW9uc2hp
cCAhPSByZWxhdGlvbnNoaXApCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdl
clJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSAmJiBuZXdSZWxhdGlvbnNo
aXAgIT0gcmVsYXRpb25zaGlwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
IiAgICAgIFJlZmluZWQgdG86ICIsIG5ld1JlbGF0aW9uc2hpcCwgIiBiYXNlZCBvbiAiLCBvdGhl
clJlbGF0aW9uc2hpcCwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbnNo
aXAgPSBuZXdSZWxhdGlvbnNoaXA7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTE2MTYsNyAr
MTYxOCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGlmIChvdGhlclJlbGF0aW9u
c2hpcC52YWd1ZW5lc3MoKSA+IHJlbGF0aW9uc2hpcC52YWd1ZW5lc3MoKQogICAgICAgICAgICAg
ICAgICAgICAgICAgJiYgb3RoZXJSZWxhdGlvbnNoaXAucmlnaHQoKS0+aXNJbnQzMkNvbnN0YW50
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aW9uc2hpcCBuZXdSZWxhdGlvbnNo
aXAgPSBvdGhlclJlbGF0aW9uc2hpcC5maWx0ZXJDb25zdGFudChyZWxhdGlvbnNoaXApOwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UgJiYgbmV3UmVsYXRpb25zaGlwICE9IG90
aGVyUmVsYXRpb25zaGlwKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR0ludGVnZXJS
YW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UgJiYgbmV3UmVsYXRpb25zaGlw
ICE9IG90aGVyUmVsYXRpb25zaGlwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIiAgICAgIFJlZmluZWQgIiwgb3RoZXJSZWxhdGlvbnNoaXAsICIgdG86ICIsIG5ld1JlbGF0
aW9uc2hpcCwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlclJlbGF0aW9uc2hp
cCA9IG5ld1JlbGF0aW9uc2hpcDsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTYzOSw3ICsx
NjQxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIEB4ID09IEBjIGFuZCBAeCAhPSBAZCwg
d2hlcmUgQGQgPiBAYywgdGhlbiB3ZSB3YW50IHRvIHR1cm4gQHggIT0gQGQgaW50byBAeCA8IEBk
LgogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAodGltZVRvTGl2ZSAmJiBvdGhlclJlbGF0
aW9uc2hpcC5raW5kKCkgPT0gUmVsYXRpb25zaGlwOjpFcXVhbCkgewotICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6
YXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgICBDb25zaWRlcmluZzogIiwgb3RoZXJSZWxhdGlvbnNoaXAsICJcbiIpOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIC8vIFdlIGhhdmU6CkBAIC0xNjc1LDcgKzE2Nzcs
NyBAQCBwcml2YXRlOgogICAgIAogICAgIGJvb2wgbWVyZ2VUbyhSZWxhdGlvbnNoaXBNYXAmIHJl
bGF0aW9uc2hpcE1hcCwgQmFzaWNCbG9jayogdGFyZ2V0KQogICAgIHsKLSAgICAgICAgaWYgKHZl
cmJvc2UpIHsKKyAgICAgICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50
ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIk1lcmdpbmcgdG8gIiwgcG9p
bnRlckR1bXAodGFyZ2V0KSwgIjpcbiIpOwogICAgICAgICAgICAgZGF0YUxvZygiICAgIEluY29t
aW5nOiAiLCBsaXN0RHVtcChzb3J0ZWRSZWxhdGlvbnNoaXBzKHJlbGF0aW9uc2hpcE1hcCkpLCAi
XG4iKTsKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBBdCBoZWFkOiAiLCBsaXN0RHVtcChzb3J0
ZWRSZWxhdGlvbnNoaXBzKG1fcmVsYXRpb25zaGlwc0F0SGVhZFt0YXJnZXRdKSksICJcbiIpOwpA
QCAtMTY5Nyw3ICsxNjk5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmb3IgKFJlbGF0
aW9uc2hpcCByZWxhdGlvbnNoaXAgOiBlbnRyeS52YWx1ZSkgewogICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQocmVsYXRpb25zaGlwLmxlZnQoKSA9PSBlbnRyeS5rZXkpOwogICAgICAgICAgICAg
ICAgICAgICBpZiAoaXNMaXZlKHJlbGF0aW9uc2hpcC5yaWdodCgpKSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREZH
SW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgIFByb3BhZ2F0aW5nICIsIHJlbGF0aW9uc2hp
cCwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKHJlbGF0aW9u
c2hpcCk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTE3MzQsMTIgKzE3MzYsMTIgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIFZlY3RvcjxSZWxhdGlvbnNoaXA+IG1lcmdlZFJlbGF0aW9uc2hp
cHM7CiAgICAgICAgICAgICBmb3IgKFJlbGF0aW9uc2hpcCB0YXJnZXRSZWxhdGlvbnNoaXAgOiBl
bnRyeS52YWx1ZSkgewogICAgICAgICAgICAgICAgIGZvciAoUmVsYXRpb25zaGlwIHNvdXJjZVJl
bGF0aW9uc2hpcCA6IGl0ZXItPnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9u
UGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
IiAgTWVyZ2luZyAiLCB0YXJnZXRSZWxhdGlvbnNoaXAsICIgYW5kICIsIHNvdXJjZVJlbGF0aW9u
c2hpcCwgIjpcbiIpOwogICAgICAgICAgICAgICAgICAgICB0YXJnZXRSZWxhdGlvbnNoaXAubWVy
Z2UoCiAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VSZWxhdGlvbnNoaXAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBbJl0gKFJlbGF0aW9uc2hpcCBuZXdSZWxhdGlvbnNoaXApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEdv
dCAiLCBuZXdSZWxhdGlvbnNoaXAsICJcbiIpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG5ld1JlbGF0aW9uc2hpcC5yaWdodCgpLT5pc0ludDMyQ29uc3RhbnQoKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNb3ZIaW50UmVtb3ZhbFBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTW92SGludFJlbW92YWxQaGFzZS5j
cHAKaW5kZXggOWYzNDRiMzdkY2Q4N2ZjMTRjMGExMmRlNGYxMDcwOGI2ZDc0OGY4Ni4uMWFlZDJj
MTg1NmUyYmY2MmNlZjdhM2M0NmRhMjQyMTkzMmY1ZjcwMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdNb3ZIaW50UmVtb3ZhbFBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR01vdkhpbnRSZW1vdmFsUGhhc2UuY3BwCkBAIC00Miw3ICs0
Miw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAot
Ym9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgREZHTW92SGludFJlbW92YWxQaGFzZUlu
dGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogY2xhc3Mg
TW92SGludFJlbW92YWxQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJsaWM6CkBAIC01NSw3ICs1
Nyw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIHJ1bigpCiAgICAgewotICAgICAgICBpZiAo
dmVyYm9zZSkgeworICAgICAgICBpZiAoREZHTW92SGludFJlbW92YWxQaGFzZUludGVybmFsOjp2
ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJHcmFwaCBiZWZvcmUgTW92SGludCByZW1v
dmFsOlxuIik7CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQpAQCAtNjks
NyArNzEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlQmxvY2soQmFzaWNC
bG9jayogYmxvY2spCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERG
R01vdkhpbnRSZW1vdmFsUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFM
b2coIkhhbmRpbmcgYmxvY2sgIiwgcG9pbnRlckR1bXAoYmxvY2spLCAiXG4iKTsKICAgICAgICAg
CiAgICAgICAgIC8vIEEgTW92SGludCBpcyB1bm5lY2Vzc2FyeSBpZiB0aGUgbG9jYWwgZGllcyBi
ZWZvcmUgaXQgaXMgdXNlZC4gV2UgYW5zd2VyIHRoaXMgcXVlc3Rpb24gYnkKQEAgLTg3LDcgKzg5
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX3N0YXRlLm9wZXJhbmQocmVnKSA9IGN1
cnJlbnRFcG9jaDsKICAgICAgICAgICAgIH0pOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgIGlmIChERkdNb3ZIaW50UmVtb3ZhbFBoYXNlSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgTG9jYWxzOiAiLCBtX3N0YXRlLCAiXG4iKTsKICAg
ICAgICAgCiAgICAgICAgIC8vIEFzc3VtZSB0aGF0IGJsb2NrcyBhZnRlciB1cyBleGl0LgpAQCAt
OTgsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5v
ZGUtPm9wKCkgPT0gTW92SGludCkgewogICAgICAgICAgICAgICAgIEVwb2NoIGxvY2FsRXBvY2gg
PSBtX3N0YXRlLm9wZXJhbmQobm9kZS0+dW5saW5rZWRMb2NhbCgpKTsKLSAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHTW92SGludFJlbW92YWxQaGFz
ZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQXQg
Iiwgbm9kZSwgIjogY3VycmVudCA9ICIsIGN1cnJlbnRFcG9jaCwgIiwgbG9jYWwgPSAiLCBsb2Nh
bEVwb2NoLCAiXG4iKTsKICAgICAgICAgICAgICAgICBpZiAoIWxvY2FsRXBvY2ggfHwgbG9jYWxF
cG9jaCA9PSBjdXJyZW50RXBvY2gpIHsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BB
bmREZWZhdWx0RmxhZ3MoWm9tYmllSGludCk7CkBAIC0xMjAsNyArMTIyLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIW1fc3RhdGUub3BlcmFuZChyZWcpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoREZHTW92SGludFJlbW92YWxQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBLaWxsZWQgb3BlcmFuZCBhdCAi
LCBub2RlLCAiOiAiLCByZWcsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0
ZS5vcGVyYW5kKHJlZykgPSBjdXJyZW50RXBvY2g7CiAgICAgICAgICAgICAgICAgICAgIH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9u
U2lua2luZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxs
b2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKaW5kZXggN2E5YzUxNTY3YjM0N2ZkZDNjOGMzY2Q5MWJm
MDRiODlkZjgyMjUyOC4uM2ZkYTdkNDBiMDg2YmQxOWMzYzI4YjBhNjBkYWQxNTc1ZWY2MGMzNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9u
U2lua2luZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVj
dEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCkBAIC00OCw3ICs0OCw5IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAotYm9vbCB2ZXJib3NlID0gZmFs
c2U7CituYW1lc3BhY2UgREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsIHsK
K3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogLy8gSW4gb3JkZXIgdG8g
c2luayBvYmplY3QgY3ljbGVzLCB3ZSB1c2UgYSBwb2ludHMtdG8gYW5hbHlzaXMgY291cGxlZAog
Ly8gd2l0aCBhbiBlc2NhcGUgYW5hbHlzaXMuIFRoaXMgYW5hbHlzaXMgaXMgYWN0dWFsbHkgc2lt
aWxhciB0byBhbgpAQCAtNzE3LDcgKzcxOSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFwZXJm
b3JtU2lua2luZygpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICh2
ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50
ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkdyYXBoIGFmdGVyIGVsaW1p
bmF0aW9uOlxuIik7CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQpAQCAt
NzQyLDcgKzc0NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBncmFwaEJlZm9yZVNpbmtpbmcg
PSBvdXQudG9DU3RyaW5nKCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodmVyYm9zZSkgewor
ICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJi
b3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJHcmFwaCBiZWZvcmUgZWxpbWluYXRpb246XG4i
KTsKICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwogICAgICAgICB9CkBAIC03NTIsNyArNzU0
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCFkZXRlcm1pbmVTaW5rQ2FuZGlkYXRlcygpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAg
ICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2Up
IHsKICAgICAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0lu
TmF0dXJhbE9yZGVyKCkpIHsKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJIZWFwIGF0IGhlYWQg
b2YgIiwgKmJsb2NrLCAiOiBcbiIsIG1faGVhcEF0SGVhZFtibG9ja10pOwogICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkhlYXAgYXQgdGFpbCBvZiAiLCAqYmxvY2ssICI6IFxuIiwgbV9oZWFwQXRU
YWlsW2Jsb2NrXSk7CkBAIC03NzMsNyArNzc1LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBib29s
IGNoYW5nZWQ7CiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgaWYgKERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJEb2luZyBpdGVyYXRpb24gb2YgZXNjYXBlIGFu
YWx5c2lzLlxuIik7CiAgICAgICAgICAgICBjaGFuZ2VkID0gZmFsc2U7CiAKQEAgLTExOTgsNyAr
MTIwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChtX3NpbmtDYW5kaWRhdGVzLmlzRW1wdHko
KSkKICAgICAgICAgICAgIHJldHVybiBoYXNVbmVzY2FwZWRSZWFkczsKIAotICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgaWYgKERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2VJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkNhbmRpZGF0ZXM6ICIsIGxpc3RE
dW1wKG1fc2lua0NhbmRpZGF0ZXMpLCAiXG4iKTsKIAogICAgICAgICAvLyBDcmVhdGUgdGhlIG1h
dGVyaWFsaXphdGlvbiBub2RlcwpAQCAtMTc2NSw3ICsxNzY3LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7
CisgICAgICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFs
Ojp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygiTG9jYWwgbWFwcGluZyBhdCAi
LCBwb2ludGVyRHVtcChibG9jayksICI6ICIsIG1hcER1bXAobV9sb2NhbE1hcHBpbmcpLCAiXG4i
KTsKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJMb2NhbCBtYXRlcmlhbGl6YXRpb25zIGF0ICIs
IHBvaW50ZXJEdW1wKGJsb2NrKSwgIjogIiwgbWFwRHVtcChtX2VzY2FwZWVUb01hdGVyaWFsaXph
dGlvbiksICJcbiIpOwogICAgICAgICAgICAgfQpAQCAtMTc4MSw3ICsxNzgzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgbV9sb2NhbE1hcHBpbmcuc2V0KGxvY2F0aW9uLCBtX2Jv
dHRvbSk7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fc2lua0NhbmRpZGF0ZXMuY29udGFp
bnMobm9kZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2VJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJGb3Ig
c2luayBjYW5kaWRhdGUgIiwgbm9kZSwgIiBmb3VuZCBsb2NhdGlvbiAiLCBsb2NhdGlvbiwgIlxu
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQoCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ICsgMSwKQEAgLTE3OTYsNyArMTc5OCw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHBvcHVsYXRlTWF0ZXJpYWxpemF0aW9u
KGJsb2NrLCBtYXRlcmlhbGl6YXRpb24sIGVzY2FwZWUpOwogICAgICAgICAgICAgICAgICAgICBt
X2VzY2FwZWVUb01hdGVyaWFsaXphdGlvbi5zZXQoZXNjYXBlZSwgbWF0ZXJpYWxpemF0aW9uKTsK
ICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KG5vZGVJbmRleCwgbWF0
ZXJpYWxpemF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICAgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJNYXRlcmlhbGl6aW5n
ICIsIGVzY2FwZWUsICIgPT4gIiwgbWF0ZXJpYWxpemF0aW9uLCAiIGF0ICIsIG5vZGUsICJcbiIp
OwogICAgICAgICAgICAgICAgIH0KIApAQCAtMTg1MSw3ICsxODUzLDcgQEAgcHJpdmF0ZToKIAog
ICAgICAgICAgICAgICAgICAgICAgICAgZG9Mb3dlciA9IHRydWU7CiAKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR09i
amVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDcmVhdGluZyBoaW50IHdpdGggdmFsdWUgIiwgbm9k
ZVZhbHVlLCAiIGJlZm9yZSAiLCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0Lmluc2VydCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2Rl
SW5kZXggKyAxLApAQCAtMTk5NCw3ICsxOTk2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaW5z
ZXJ0T1NSSGludHNGb3JVcGRhdGUodW5zaWduZWQgbm9kZUluZGV4LCBOb2RlT3JpZ2luIG9yaWdp
biwgYm9vbCYgY2FuRXhpdCwgQXZhaWxhYmlsaXR5TWFwJiBhdmFpbGFiaWxpdHksIE5vZGUqIGVz
Y2FwZWUsIE5vZGUqIG1hdGVyaWFsaXphdGlvbikKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3Nl
KSB7CisgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6
OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkluc2VydGluZyBPU1IgaGludHMgYXQg
Iiwgb3JpZ2luLCAiOlxuIik7CiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRXNjYXBlZTogIiwg
ZXNjYXBlZSwgIlxuIik7CiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgTWF0ZXJpYWxpemF0aW9u
OiAiLCBtYXRlcmlhbGl6YXRpb24sICJcbiIpOwpAQCAtMjE2Nyw3ICsyMTY5LDcgQEAgcHJpdmF0
ZToKIAogICAgIE5vZGUqIGNyZWF0ZVJlY292ZXJ5KEJhc2ljQmxvY2sqIGJsb2NrLCBQcm9tb3Rl
ZEhlYXBMb2NhdGlvbiBsb2NhdGlvbiwgTm9kZSogd2hlcmUsIGJvb2wmIGNhbkV4aXQpCiAgICAg
ewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR09iamVjdEFsbG9jYXRpb25T
aW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIlJlY292
ZXJpbmcgIiwgbG9jYXRpb24sICIgYXQgIiwgd2hlcmUsICJcbiIpOwogICAgICAgICBBU1NFUlQo
bG9jYXRpb24uYmFzZSgpLT5pc1BoYW50b21BbGxvY2F0aW9uKCkpOwogICAgICAgICBOb2RlKiBi
YXNlID0gZ2V0TWF0ZXJpYWxpemF0aW9uKGJsb2NrLCBsb2NhdGlvbi5iYXNlKCkpOwpAQCAtMjE3
NSw3ICsyMTc3LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IHdo
ZXJlLT5vcmlnaW4ud2l0aFNlbWFudGljKGJhc2UtPm9yaWdpbi5zZW1hbnRpYyk7CiAKLSAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1Bo
YXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJCYXNlIGlzICIsIGJh
c2UsICIgYW5kIHZhbHVlIGlzICIsIHZhbHVlLCAiXG4iKTsKIAogICAgICAgICBpZiAoYmFzZS0+
aXNQaGFudG9tQWxsb2NhdGlvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1BoYW50b21JbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1BoYW50b21JbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggZGNjMWM5NzY5ODZmZWQ2
ZTNlOWRjZWRjYWY1ZTk0MDViOWQzYjhkYS4uM2MwODhhNmE0YTVlZTY1MDkwNjIyZDY2MDMyZDRm
MTcxMDI5Mzc0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFu
dG9tSW5zZXJ0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGhhbnRvbUluc2VydGlvblBoYXNlLmNwcApAQCAtNDMsNyArNDMsOSBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNl
OworbmFtZXNwYWNlIERGR1BoYW50b21JbnNlcnRpb25QaGFzZUludGVybmFsIHsKK3N0YXRpYyBj
b25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogY2xhc3MgUGhhbnRvbUluc2VydGlvblBo
YXNlIDogcHVibGljIFBoYXNlIHsKIHB1YmxpYzoKQEAgLTYwLDcgKzYyLDcgQEAgcHVibGljOgog
ICAgICAgICAvLyBTZXRMb2NhbHMgZXhlY3V0ZSwgd2hpY2ggaXMgaW5hY2N1cmF0ZS4gVGhhdCBj
YXVzZXMgdXMgdG8gaW5zZXJ0IHRvbyBmZXcgUGhhbnRvbXMuCiAgICAgICAgIERGR19BU1NFUlQo
bV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX3JlZkNvdW50U3RhdGUgPT0gRXhhY3RSZWZDb3Vu
dCk7CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHUGhh
bnRvbUluc2VydGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFM
b2coIkdyYXBoIGJlZm9yZSBQaGFudG9tIGluc2VydGlvbjpcbiIpOwogICAgICAgICAgICAgbV9n
cmFwaC5kdW1wKCk7CiAgICAgICAgIH0KQEAgLTcwLDcgKzcyLDcgQEAgcHVibGljOgogICAgICAg
ICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigp
KQogICAgICAgICAgICAgaGFuZGxlQmxvY2soYmxvY2spOwogICAgICAgICAKLSAgICAgICAgaWYg
KHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR1BoYW50b21JbnNlcnRpb25QaGFzZUludGVybmFs
Ojp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJHcmFwaCBhZnRlciBQaGFudG9tIGlu
c2VydGlvbjpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KQEAg
LTEwMSw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAgICAgICB1bnNpZ25lZCBsYXN0RXhpdGluZ0lu
ZGV4ID0gMDsKICAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXggPSAwOyBub2RlSW5kZXgg
PCBibG9jay0+c2l6ZSgpOyArK25vZGVJbmRleCkgewogICAgICAgICAgICAgTm9kZSogbm9kZSA9
IGJsb2NrLT5hdChub2RlSW5kZXgpOwotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICBpZiAoREZHUGhhbnRvbUluc2VydGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiQ29uc2lkZXJpbmcgIiwgbm9kZSwgIlxuIik7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewpAQCAtMTM5LDcgKzE0MSw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYWxyZWFkeUtpbGxlZDsK
IAogICAgICAgICAgICAgYXV0byBwcm9jZXNzS2lsbGVkT3BlcmFuZCA9IFsmXSAoVmlydHVhbFJl
Z2lzdGVyIHJlZykgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAg
ICAgIGlmIChERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEtpbGxlZCBvcGVyYW5kOiAiLCByZWcsICJcbiIp
OwogCiAgICAgICAgICAgICAgICAgLy8gQWxyZWFkeSBoYW5kbGVkIGZyb20gU2V0TG9jYWwuCkBA
IC0xNTUsNyArMTU3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoa2lsbGVkTm9k
ZS0+ZXBvY2goKSA9PSBjdXJyZW50RXBvY2gpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAg
ICAgICAgICAgIGlmIChERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkg
ewogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAgICAg
IiAgICBJbnNlcnRpbmcgUGhhbnRvbSBvbiAiLCBraWxsZWROb2RlLCAiIGFmdGVyICIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBibG9jay0+YXQobGFzdEV4aXRpbmdJbmRleCksICJcbiIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQ
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1Bo
YXNlLmNwcAppbmRleCBkM2RhNTUyN2Q2M2JjMDc2OTgwZWQ0MDRkNTczMDY1ZDRhODUxNmJhLi4x
NGNlZDJhYThkODJjNmViY2IzNWU5NGNhNmZhMmUyYTNlMzM4NGZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcApAQCAt
NDIsNyArNDIsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFj
ZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIERGR1B1dFN0YWNrU2lua2lu
Z1BoYXNlSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQog
CiBjbGFzcyBQdXRTdGFja1NpbmtpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJsaWM6CkBA
IC03MSw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdGhlIHN0YWNrLiBJdCdzIG5vdCBj
bGVhciB0byBtZSBpZiB0aGlzIGlzIGltcG9ydGFudCBvciBub3QuCiAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDUyOTYKICAgICAgICAgCi0gICAg
ICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUlu
dGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJHcmFwaCBiZWZvcmUgUHV0
U3RhY2sgc2lua2luZzpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAg
IH0KQEAgLTEwNSw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgT3BlcmFuZHM8
Ym9vbD4gbGl2ZSA9IGxpdmVBdFRhaWxbYmxvY2tdOwogICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgbm9kZUluZGV4ID0gYmxvY2stPnNpemUoKTsgbm9kZUluZGV4LS07KSB7CiAgICAgICAg
ICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdQdXRT
dGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiTGl2ZSBhdCAiLCBub2RlLCAiOiAiLCBsaXZlLCAiXG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXIs
IDQ+IHJlYWRzOwpAQCAtMTEzLDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
ICAgYXV0byBlc2NhcGVIYW5kbGVyID0gWyZdIChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNIZWFkZXIoKSkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQ
aGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIiAgICAiLCBvcGVyYW5kLCAiIGlzIGxpdmUgYXQgIiwgbm9kZSwgIlxuIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICByZWFkcy5hcHBlbmQob3BlcmFuZCk7CiAgICAgICAgICAgICAgICAg
ICAgIH07CkBAIC0yMzAsNyArMjMyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIE9wZXJh
bmRzPEZsdXNoRm9ybWF0PiBkZWZlcnJlZCA9IGRlZmVycmVkQXRIZWFkW2Jsb2NrXTsKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmb3IgKE5vZGUqIG5vZGUgOiAqYmxvY2spIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlm
IChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiRGVmZXJyZWQgYXQgIiwgbm9kZSwgIjoiLCBkZWZlcnJlZCwg
IlxuIik7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+b3AoKSA9PSBHZXRTdGFjaykgewpAQCAtMjc3LDcgKzI3OSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgYXV0byBlc2NhcGVIYW5kbGVyID0gWyZdIChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJGb3IgIiwgbm9kZSwgIiBlc2NhcGluZyAi
LCBvcGVyYW5kLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlz
SGVhZGVyKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzAzLDEz
ICszMDUsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZv
ciAoQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewogICAgICAg
ICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gZGVmZXJyZWQuc2l6ZSgpOyBpLS07KSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nICIsIFZpcnR1YWxSZWdp
c3RlcihkZWZlcnJlZC5vcGVyYW5kRm9ySW5kZXgoaSkpLCAiIGF0ICIsIHBvaW50ZXJEdW1wKGJs
b2NrKSwgIi0+IiwgcG9pbnRlckR1bXAoc3VjY2Vzc29yKSwgIjogIiwgZGVmZXJyZWRbaV0sICIg
YW5kICIsIGRlZmVycmVkQXRIZWFkW3N1Y2Nlc3Nvcl1baV0sICIgbWVyZ2VzIHRvICIpOwogCiAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZEF0SGVhZFtzdWNjZXNzb3JdW2ldID0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZShkZWZlcnJlZEF0SGVhZFtzdWNjZXNzb3Jd
W2ldLCBkZWZlcnJlZFtpXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERG
R1B1dFN0YWNrU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZyhkZWZlcnJlZEF0SGVhZFtzdWNjZXNzb3JdW2ldLCAiXG4iKTsK
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTM4Nyw3ICszODks
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgaWYgKCFpc0NvbmNyZXRlKGZvcm1hdCkpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgICAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2luZ1BoYXNlSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkFkZGluZyBQaGkg
Zm9yICIsIG9wZXJhbmQsICIgYXQgIiwgcG9pbnRlckR1bXAoYmxvY2spLCAiXG4iKTsKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBOb2RlKiBwaGlOb2RlID0gbV9ncmFwaC5hZGRO
b2RlKFNwZWNIZWFwVG9wLCBQaGksIGJsb2NrLT5hdCgwKS0+b3JpZ2luLndpdGhJbnZhbGlkRXhp
dCgpKTsKQEAgLTQxMSw3ICs0MTMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbWFwcGlu
Zy5vcGVyYW5kKG9wZXJhbmQpID0gZGVmLT52YWx1ZSgpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdQdXRT
dGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFM
b2coIk1hcHBpbmcgYXQgdG9wIG9mICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIjogIiwgbWFwcGlu
ZywgIlxuIik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoU1NBQ2FsY3VsYXRvcjo6
RGVmKiBwaGlEZWYgOiBzc2FDYWxjdWxhdG9yLnBoaXNGb3JCbG9jayhibG9jaykpIHsKQEAgLTQx
OSw3ICs0MjEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
aW5zZXJ0aW9uU2V0Lmluc2VydCgwLCBwaGlEZWYtPnZhbHVlKCkpOwogICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCIgICBNYXBwaW5nICIsIG9wZXJhbmQsICIgdG8gIiwgcGhpRGVmLT52YWx1ZSgp
LCAiXG4iKTsKICAgICAgICAgICAgICAgICBtYXBwaW5nLm9wZXJhbmQob3BlcmFuZCkgPSBwaGlE
ZWYtPnZhbHVlKCk7CiAgICAgICAgICAgICB9CkBAIC00MjcsNyArNDI5LDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgZGVmZXJyZWQgPSBkZWZlcnJlZEF0SGVhZFtibG9ja107CiAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRleCA9IDA7IG5vZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7
ICsrbm9kZUluZGV4KSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChu
b2RlSW5kZXgpOwotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAg
IGlmIChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJEZWZlcnJlZCBhdCAiLCBub2RlLCAiOiIsIGRlZmVycmVkLCAi
XG4iKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9w
KCkpIHsKQEAgLTQzNSw3ICs0MzcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIFN0
YWNrQWNjZXNzRGF0YSogZGF0YSA9IG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpOwogICAgICAgICAg
ICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IGRhdGEtPmxvY2FsOwogICAgICAg
ICAgICAgICAgICAgICBkZWZlcnJlZC5vcGVyYW5kKG9wZXJhbmQpID0gZGF0YS0+Zm9ybWF0Owot
ICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYg
KERGR1B1dFN0YWNrU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICBNYXBwaW5nICIsIG9wZXJhbmQsICIgdG8gIiwgbm9kZS0+
Y2hpbGQxKCkubm9kZSgpLCAiIGF0ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAgICAgICAg
ICBtYXBwaW5nLm9wZXJhbmQob3BlcmFuZCkgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDcwLDcgKzQ3Miw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBkZWZhdWx0OiB7CiAgICAgICAgICAgICAgICAg
ICAgIGF1dG8gZXNjYXBlSGFuZGxlciA9IFsmXSAoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiRm9yICIsIG5vZGUsICIgZXNjYXBpbmcg
Iiwgb3BlcmFuZCwgIlxuIik7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5k
LmlzSGVhZGVyKCkpCkBAIC00ODQsNyArNDg2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEdvdHRhIGluc2VydCBhIFB1dFN0YWNrLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5n
UGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKCJJbnNlcnRpbmcgYSBQdXRTdGFjayBmb3IgIiwgb3BlcmFuZCwgIiBhdCAiLCBub2RlLCAi
XG4iKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSogaW5jb21pbmcgPSBtYXBwaW5n
Lm9wZXJhbmQob3BlcmFuZCk7CkBAIC01MjMsNyArNTI1LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgICAgICBOb2RlKiBwaGlOb2RlID0gcGhpRGVmLT52YWx1ZSgpOwogICAgICAgICAgICAg
ICAgICAgICBTU0FDYWxjdWxhdG9yOjpWYXJpYWJsZSogdmFyaWFibGUgPSBwaGlEZWYtPnZhcmlh
YmxlKCk7CiAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gaW5k
ZXhUb09wZXJhbmRbdmFyaWFibGUtPmluZGV4KCldOwotICAgICAgICAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2luZ1BoYXNl
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDcmVh
dGluZyBVcHNpbG9uIGZvciAiLCBvcGVyYW5kLCAiIGF0ICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwg
Ii0+IiwgcG9pbnRlckR1bXAoc3VjY2Vzc29yQmxvY2spLCAiXG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0ID0gZGVmZXJyZWRBdEhlYWRbc3VjY2Vzc29yQmxvY2td
Lm9wZXJhbmQob3BlcmFuZCk7CiAgICAgICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFw
aCwgbnVsbHB0ciwgaXNDb25jcmV0ZShmb3JtYXQpKTsKQEAgLTU2OCw3ICs1NzAsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmICh2ZXJi
b3NlKSB7CisgICAgICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJi
b3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJHcmFwaCBhZnRlciBQdXRTdGFjayBzaW5raW5n
OlxuIik7CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlv
blBoYXNlLmNwcAppbmRleCAzYTJhNzE3MmFkNzNkNmEzZTAxMDcyOTJlNWI5NzA1NDk0N2Y4ZjFh
Li5iNWUyYzM1MGIxODFmOWIwNjM5MzIxNWE0MmFhYWQ3NmI2NWVkODQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlv
blBoYXNlLmNwcApAQCAtNDMsNyArNDMsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIERG
R1N0b3JlQmFycmllckluc2VydGlvblBoYXNlSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wg
dmVyYm9zZSA9IGZhbHNlOworfQogCiBlbnVtIGNsYXNzIFBoYXNlTW9kZSB7CiAgICAgLy8gRG9l
cyBvbmx5IGEgbG9jYWwgYW5hbHlzaXMgZm9yIHN0b3JlIGJhcnJpZXIgaW5zZXJ0aW9uIGFuZCBh
c3N1bWVzIHRoYXQgcG9pbnRlcnMgbGl2ZQpAQCAtNzUsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAg
CiAgICAgYm9vbCBydW4oKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAg
aWYgKERGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAg
ICAgICAgICAgIGRhdGFMb2coIlN0YXJ0aW5nIHN0b3JlIGJhcnJpZXIgaW5zZXJ0aW9uOlxuIik7
CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQpAQCAtMTY3LDcgKzE2OSw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBoYW5kbGVCbG9jayhCYXNpY0Jsb2NrKiBi
bG9jaykKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBk
YXRhTG9nKCJEZWFsaW5nIHdpdGggYmxvY2sgIiwgcG9pbnRlckR1bXAoYmxvY2spLCAiXG4iKTsK
ICAgICAgICAgICAgIGlmIChyZWFsbHlJbnNlcnRCYXJyaWVycygpKQogICAgICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBSZWFsbHkgaW5zZXJ0aW5nIGJhcnJpZXJzLlxuIik7CkBAIC0yMDYsNyAr
MjA4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZm9yIChtX25vZGVJbmRleCA9IDA7IG1fbm9kZUlu
ZGV4IDwgYmxvY2stPnNpemUoKTsgKyttX25vZGVJbmRleCkgewogICAgICAgICAgICAgbV9ub2Rl
ID0gYmxvY2stPmF0KG1fbm9kZUluZGV4KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYg
KHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFz
ZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAg
ICAgICAgICAgICAgIiAgICAiLCBtX2N1cnJlbnRFcG9jaCwgIjogTG9va2luZyBhdCBub2RlICIs
IG1fbm9kZSwgIiB3aXRoIGNoaWxkcmVuOiAiKTsKICAgICAgICAgICAgICAgICBDb21tYVByaW50
ZXIgY29tbWE7CkBAIC0zNDgsNyArMzUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHZlcmJv
c2UpIHsKKyAgICAgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVy
bmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAg
ICAgICAgIiAgICAiLCBtX2N1cnJlbnRFcG9jaCwgIjogRG9uZSB3aXRoIG5vZGUgIiwgbV9ub2Rl
LCAiICgiLCBtX25vZGUtPmVwb2NoKCksCiAgICAgICAgICAgICAgICAgICAgICIpIHdpdGggY2hp
bGRyZW46ICIpOwpAQCAtMzgwLDcgKzM4Miw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBj
b25zaWRlckJhcnJpZXIoRWRnZSBiYXNlLCBFZGdlIGNoaWxkKQogICAgIHsKLSAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBDb25zaWRlcmluZyBh
ZGRpbmcgYmFycmllciAiLCBiYXNlLCAiID0+ICIsIGNoaWxkLCAiXG4iKTsKICAgICAgICAgCiAg
ICAgICAgIC8vIFdlIGRvbid0IG5lZWQgYSBzdG9yZSBiYXJyaWVyIGlmIHRoZSBjaGlsZCBpcyBn
dWFyYW50ZWVkIHRvIG5vdCBiZSBhIGNlbGwuCkBAIC0zODksNyArMzkxLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIC8vIERvbid0IHRyeSB0b28gaGFyZCBiZWNhdXNlIGl0J3MgdG9vIGV4cGVu
c2l2ZSB0byBydW4gQUkuCiAgICAgICAgICAgICBpZiAoY2hpbGQtPmhhc0NvbnN0YW50KCkpIHsK
ICAgICAgICAgICAgICAgICBpZiAoIWNoaWxkLT5hc0pTVmFsdWUoKS5pc0NlbGwoKSkgewotICAg
ICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERG
R1N0b3JlQmFycmllckluc2VydGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgICAgICBSZWplY3RpbmcgYmVjYXVzZSBvZiBj
b25zdGFudCB0eXBlLlxuIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgICAgICB9CkBAIC00MDAsNyArNDAyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBj
YXNlIE5vZGVSZXN1bHRJbnQzMjoKICAgICAgICAgICAgICAgICBjYXNlIE5vZGVSZXN1bHRJbnQ1
MjoKICAgICAgICAgICAgICAgICBjYXNlIE5vZGVSZXN1bHRCb29sZWFuOgotICAgICAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgICAgICAgICBSZWplY3RpbmcgYmVjYXVzZSBvZiByZXN1bHQgdHlw
ZS5cbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgZGVm
YXVsdDoKQEAgLTQxNCw3ICs0MTYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8gR28gaW50
byByYWdlIG1vZGUgdG8gZWxpbWluYXRlIGFueSBjaGFuY2Ugb2YgYSBiYXJyaWVyIHdpdGggYSBu
b24tY2VsbCBjaGlsZC4gV2UKICAgICAgICAgICAgIC8vIGNhbiBhZmZvcmQgdG8ga2VlcCBhcm91
bmQgQUkgaW4gR2xvYmFsIG1vZGUuCiAgICAgICAgICAgICBpZiAoIW1faW50ZXJwcmV0ZXItPm5l
ZWRzVHlwZUNoZWNrKGNoaWxkLCB+U3BlY0NlbGwpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNl
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAg
ICAgIFJlamVjdGluZyBiZWNhdXNlIG9mIEFJIHR5cGUuXG4iKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CkBAIC00MjYsNyArNDI4LDcgQEAgcHJpdmF0ZToKICAgICAK
ICAgICB2b2lkIGNvbnNpZGVyQmFycmllcihFZGdlIGJhc2UpCiAgICAgewotICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgaWYgKERGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgIENvbnNpZGVyaW5nIGFk
ZGluZyBiYXJyaWVyIG9uICIsIGJhc2UsICJcbiIpOwogICAgICAgICAKICAgICAgICAgLy8gV2Ug
ZG9uJ3QgbmVlZCBhIHN0b3JlIGJhcnJpZXIgaWYgdGhlIGVwb2NoIG9mIHRoZSBiYXNlIGlzIGlk
ZW50aWNhbCB0byB0aGUgY3VycmVudApAQCAtNDM0LDEyICs0MzYsMTIgQEAgcHJpdmF0ZToKICAg
ICAgICAgLy8gYmUgaW4gbmV3Z2VuLCBvciB3ZSBqdXN0IHJhbiBhIGJhcnJpZXIgb24gaXQgc28g
aXQncyBndWFyYW50ZWVkIHRvIGJlIHJlbWVtYmVyZWQKICAgICAgICAgLy8gYWxyZWFkeS4KICAg
ICAgICAgaWYgKGJhc2UtPmVwb2NoKCkgPT0gbV9jdXJyZW50RXBvY2gpIHsKLSAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR1N0b3JlQmFycmllckluc2VydGlvblBo
YXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICAg
ICAgUmVqZWN0aW5nIGJlY2F1c2UgaXQncyBpbiB0aGUgY3VycmVudCBlcG9jaC5cbiIpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9z
ZSkKKyAgICAgICAgaWYgKERGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgICAgICBJbnNlcnRpbmcgYmFycmll
ci5cbiIpOwogICAgICAgICBpbnNlcnRCYXJyaWVyKG1fbm9kZUluZGV4ICsgMSwgYmFzZSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9y
d2FyZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0Zv
cndhcmRpbmdQaGFzZS5jcHAKaW5kZXggZTNjNTJhY2E5ZGExM2ZjZDgzYzE4ZTAxYjg1NmY4YTQ4
MDk4OWU5Ny4uZTk3Mzk1Nzc3ZmE5ZTBkODI2NTNkYzg3NzhkMmEwMjAwYjA5NTk0OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5n
UGhhc2UuY3BwCkBAIC00MCw3ICs0MCw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKIAogbmFtZXNwYWNlIHsKIAotYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgREZH
VmFyYXJnc0ZvcndhcmRpbmdQaGFzZUludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJv
c2UgPSBmYWxzZTsKK30KIAogY2xhc3MgVmFyYXJnc0ZvcndhcmRpbmdQaGFzZSA6IHB1YmxpYyBQ
aGFzZSB7CiBwdWJsaWM6CkBAIC01Myw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX2Zvcm0gIT0gU1NBKTsKICAg
ICAgICAgCi0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdWYXJhcmdzRm9y
d2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkdy
YXBoIGJlZm9yZSB2YXJhcmdzIGZvcndhcmRpbmc6XG4iKTsKICAgICAgICAgICAgIG1fZ3JhcGgu
ZHVtcCgpOwogICAgICAgICB9CkBAIC04NSw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8v
IFdlIGV4cGVjdCBjYWxscyBpbnRvIHRoaXMgZnVuY3Rpb24gdG8gYmUgcmFyZS4gU28sIHRoaXMg
aXMgd3JpdHRlbiBpbiBhIHNpbXBsZSBPKG4pIG1hbm5lci4KICAgICAgICAgCiAgICAgICAgIE5v
ZGUqIGNhbmRpZGF0ZSA9IGJsb2NrLT5hdChjYW5kaWRhdGVOb2RlSW5kZXgpOwotICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkhhbmRsaW5nIGNhbmRpZGF0ZSAiLCBj
YW5kaWRhdGUsICJcbiIpOwogICAgICAgICAKICAgICAgICAgLy8gRmluZCB0aGUgaW5kZXggb2Yg
dGhlIGxhc3Qgbm9kZSBpbiB0aGlzIGJsb2NrIHRvIHVzZSB0aGUgY2FuZGlkYXRlLCBhbmQgbG9v
ayBmb3IgZXNjYXBpbmcKQEAgLTEyMSw3ICsxMjMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICAgICAgc2F3RXNjYXBlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICAgICAgaWYgKHNhd0VzY2FwZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhh
c2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICBFc2NhcGUgYXQgIiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgICAgICB9CkBAIC0xMzgsNyArMTQwLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOgogICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFy
Z3NJbmxpbmVkQ2FsbGVyOgogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKSA9PSBj
YW5kaWRhdGUgfHwgbm9kZS0+Y2hpbGQyKCkgPT0gY2FuZGlkYXRlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHVmFyYXJnc0Zv
cndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiICAgIEVzY2FwZSBhdCAiLCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAgLTE0OCw3ICsxNTAsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBTZXRMb2NhbDoKICAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkgPT0gY2FuZGlkYXRlICYmIG5vZGUtPnZhcmlhYmxl
QWNjZXNzRGF0YSgpLT5pc0xvYWRlZEZyb20oKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhh
c2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICBFc2NhcGUgYXQgIiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgICAgICB9CkBAIC0xNTYsNyArMTU4LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgaWYgKG1fZ3Jh
cGgudXNlcyhub2RlLCBjYW5kaWRhdGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZUlu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEVz
Y2FwZSBhdCAiLCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgICAgIH0KQEAgLTE2NSw3ICsxNjcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
Zm9yQWxsS2lsbGVkT3BlcmFuZHMoCiAgICAgICAgICAgICAgICAgbV9ncmFwaCwgbm9kZSwgYmxv
Y2stPnRyeUF0KG5vZGVJbmRleCArIDEpLAogICAgICAgICAgICAgICAgIFsmXSAoVmlydHVhbFJl
Z2lzdGVyIHJlZykgewotICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBLaWxsaW5nICIsIHJlZywg
IiB3aGlsZSB3ZSBhcmUgaW50ZXJlc3RlZCBpbiAiLCBsaXN0RHVtcChyZWxldmFudExvY2Fscyks
ICJcbiIpOwogICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVs
ZXZhbnRMb2NhbHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChy
ZWxldmFudExvY2Fsc1tpXSA9PSByZWcpIHsKQEAgLTE3Niw3ICsxNzgsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KLSAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNl
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJTZWxlY3RlZCBsYXN0VXNl
ckluZGV4ID0gIiwgbGFzdFVzZXJJbmRleCwgIiwgIiwgYmxvY2stPmF0KGxhc3RVc2VySW5kZXgp
LCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIC8vIFdlJ3JlIHN0aWxsIGluIGJ1c2luZXNzLiBE
ZXRlcm1pbmUgaWYgYmV0d2VlbiB0aGUgY2FuZGlkYXRlIGFuZCB0aGUgbGFzdCB1c2VyIHRoZXJl
IGlzIGFueQpAQCAtMTkzLDcgKzE5NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIFpv
bWJpZUhpbnQ6CiAgICAgICAgICAgICBjYXNlIEtpbGxTdGFjazoKICAgICAgICAgICAgICAgICBp
ZiAoYXJndW1lbnRzSW52b2x2ZVN0YWNrU2xvdChjYW5kaWRhdGUsIG5vZGUtPnVubGlua2VkTG9j
YWwoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAg
ICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgSW50ZXJmZXJlbmNlIGF0ICIsIG5v
ZGUsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg
fQpAQCAtMjAxLDcgKzIwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICBjYXNlIFB1dFN0YWNrOgogICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudHNJbnZvbHZl
U3RhY2tTbG90KGNhbmRpZGF0ZSwgbm9kZS0+c3RhY2tBY2Nlc3NEYXRhKCktPmxvY2FsKSkgewot
ICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYg
KERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2coIiAgICBJbnRlcmZlcmVuY2UgYXQgIiwgbm9kZSwgIlxuIik7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBAIC0yMTAs
NyArMjEyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgU2V0TG9jYWw6CiAgICAgICAg
ICAgICBjYXNlIEZsdXNoOgogICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudHNJbnZvbHZlU3Rh
Y2tTbG90KGNhbmRpZGF0ZSwgbm9kZS0+bG9jYWwoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGlu
Z1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgSW50ZXJmZXJlbmNlIGF0ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtMjMyLDcgKzIzNCw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgIE5vT3BDbG9iYmVy
aXplKCkpOwogICAgICAgICAgICAgICAgIGlmIChkb2VzSW50ZXJmZXJlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHVmFyYXJn
c0ZvcndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiICAgIEludGVyZmVyZW5jZSBhdCAiLCBub2RlLCAiXG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAgLTI0MCw3ICsyNDIsNyBA
QCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBXZSBjYW4gbWFrZSB0
aGlzIHdvcmsuCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHVmFyYXJnc0Zv
cndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAg
IFdpbGwgZG8gZm9yd2FyZGluZyFcbiIpOwogICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwogICAg
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RI
ZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwLmNwcApp
bmRleCA5MDIxMWZkOTRhYzYxNWM2NWM1MWQzNGM3ZDU4OGY0ZDkzYjEyOWM3Li45Yjk5MTRhZThi
ODU0ZDAzNTI4YTZiODg3YmEyODg4ZTc5ZWRkZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwCkBAIC0zOCw4ICszOCw2IEBACiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAotdXNpbmcgbmFtZXNwYWNlIEIzOwotCiBBYnN0cmFj
dEhlYXA6OkFic3RyYWN0SGVhcChBYnN0cmFjdEhlYXAqIHBhcmVudCwgY29uc3QgY2hhciogaGVh
cE5hbWUsIHB0cmRpZmZfdCBvZmZzZXQpCiAgICAgOiBtX29mZnNldChvZmZzZXQpCiAgICAgLCBt
X2hlYXBOYW1lKGhlYXBOYW1lKQpAQCAtNzcsNyArNzUsNyBAQCB2b2lkIEFic3RyYWN0SGVhcDo6
Y29tcHV0ZSh1bnNpZ25lZCBiZWdpbikKIAogICAgIGlmIChtX2NoaWxkcmVuLmlzRW1wdHkoKSkg
ewogICAgICAgICAvLyBNdXN0IHNwZWNpYWwtY2FzZSBsZWF2ZXMgc28gdGhhdCB0aGV5IHVzZSBq
dXN0IG9uZSBzbG90IG9uIHRoZSBudW1iZXIgbGluZS4KLSAgICAgICAgbV9yYW5nZSA9IEhlYXBS
YW5nZShiZWdpbik7CisgICAgICAgIG1fcmFuZ2UgPSBCMzo6SGVhcFJhbmdlKGJlZ2luKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODcsNyArODUsNyBAQCB2b2lkIEFic3RyYWN0SGVh
cDo6Y29tcHV0ZSh1bnNpZ25lZCBiZWdpbikKICAgICAgICAgY3VycmVudCA9IGNoaWxkLT5yYW5n
ZSgpLmVuZCgpOwogICAgIH0KIAotICAgIG1fcmFuZ2UgPSBIZWFwUmFuZ2UoYmVnaW4sIGN1cnJl
bnQpOworICAgIG1fcmFuZ2UgPSBCMzo6SGVhcFJhbmdlKGJlZ2luLCBjdXJyZW50KTsKIH0KIAog
dm9pZCBBYnN0cmFjdEhlYXA6OnNoYWxsb3dEdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmNwcAppbmRleCA1OTAzYThlNTNlZDNkNTc1MGUxYzVjZGYwMTE4ZDI5MjJjNWNjZjky
Li40MGNjOGI4MTRjMzBlNDFjNTJjYmM1Yzk3YmIxODhlNDYyMGMzYTRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5j
cHAKQEAgLTQ3LDggKzQ3LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewog
Ci11c2luZyBuYW1lc3BhY2UgQjM7Ci0KIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OkFic3RyYWN0
SGVhcFJlcG9zaXRvcnkoKQogICAgIDogcm9vdChudWxscHRyLCAianNjUm9vdCIpCiAKQEAgLTky
LDQ4ICs5MCw0OSBAQCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Ojp+QWJzdHJhY3RIZWFwUmVwb3Np
dG9yeSgpCiB7CiB9CiAKLXZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVNZW1v
cnkoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBWYWx1ZSogdmFsdWUpCit2b2lkIEFic3RyYWN0
SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlTWVtb3J5KGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwg
QjM6OlZhbHVlKiB2YWx1ZSkKIHsKICAgICBtX2hlYXBGb3JNZW1vcnkuYXBwZW5kKEhlYXBGb3JW
YWx1ZShoZWFwLCB2YWx1ZSkpOwogfQogCi12b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRl
Y29yYXRlQ0NhbGxSZWFkKGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwgVmFsdWUqIHZhbHVlKQor
dm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUNDYWxsUmVhZChjb25zdCBBYnN0
cmFjdEhlYXAqIGhlYXAsIEIzOjpWYWx1ZSogdmFsdWUpCiB7CiAgICAgbV9oZWFwRm9yQ0NhbGxS
ZWFkLmFwcGVuZChIZWFwRm9yVmFsdWUoaGVhcCwgdmFsdWUpKTsKIH0KIAotdm9pZCBBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUNDYWxsV3JpdGUoY29uc3QgQWJzdHJhY3RIZWFwKiBo
ZWFwLCBWYWx1ZSogdmFsdWUpCit2b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRl
Q0NhbGxXcml0ZShjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIEIzOjpWYWx1ZSogdmFsdWUpCiB7
CiAgICAgbV9oZWFwRm9yQ0NhbGxXcml0ZS5hcHBlbmQoSGVhcEZvclZhbHVlKGhlYXAsIHZhbHVl
KSk7CiB9CiAKLXZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVQYXRjaHBvaW50
UmVhZChjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIFZhbHVlKiB2YWx1ZSkKK3ZvaWQgQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVQYXRjaHBvaW50UmVhZChjb25zdCBBYnN0cmFjdEhl
YXAqIGhlYXAsIEIzOjpWYWx1ZSogdmFsdWUpCiB7CiAgICAgbV9oZWFwRm9yUGF0Y2hwb2ludFJl
YWQuYXBwZW5kKEhlYXBGb3JWYWx1ZShoZWFwLCB2YWx1ZSkpOwogfQogCi12b2lkIEFic3RyYWN0
SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlUGF0Y2hwb2ludFdyaXRlKGNvbnN0IEFic3RyYWN0SGVh
cCogaGVhcCwgVmFsdWUqIHZhbHVlKQordm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNv
cmF0ZVBhdGNocG9pbnRXcml0ZShjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIEIzOjpWYWx1ZSog
dmFsdWUpCiB7CiAgICAgbV9oZWFwRm9yUGF0Y2hwb2ludFdyaXRlLmFwcGVuZChIZWFwRm9yVmFs
dWUoaGVhcCwgdmFsdWUpKTsKIH0KIAotdm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNv
cmF0ZUZlbmNlUmVhZChjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIFZhbHVlKiB2YWx1ZSkKK3Zv
aWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5jZVJlYWQoY29uc3QgQWJzdHJh
Y3RIZWFwKiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQogewogICAgIG1faGVhcEZvckZlbmNlUmVh
ZC5hcHBlbmQoSGVhcEZvclZhbHVlKGhlYXAsIHZhbHVlKSk7CiB9CiAKLXZvaWQgQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5jZVdyaXRlKGNvbnN0IEFic3RyYWN0SGVhcCogaGVh
cCwgVmFsdWUqIHZhbHVlKQordm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUZl
bmNlV3JpdGUoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQogewog
ICAgIG1faGVhcEZvckZlbmNlV3JpdGUuYXBwZW5kKEhlYXBGb3JWYWx1ZShoZWFwLCB2YWx1ZSkp
OwogfQogCi12b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlRmVuY2VkQWNjZXNz
KGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwgVmFsdWUqIHZhbHVlKQordm9pZCBBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUZlbmNlZEFjY2Vzcyhjb25zdCBBYnN0cmFjdEhlYXAqIGhl
YXAsIEIzOjpWYWx1ZSogdmFsdWUpCiB7CiAgICAgbV9oZWFwRm9yRmVuY2VkQWNjZXNzLmFwcGVu
ZChIZWFwRm9yVmFsdWUoaGVhcCwgdmFsdWUpKTsKIH0KIAogdm9pZCBBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5Ojpjb21wdXRlUmFuZ2VzQW5kRGVjb3JhdGVJbnN0cnVjdGlvbnMoKQogeworICAgIHVz
aW5nIG5hbWVzcGFjZSBCMzsKICAgICByb290LmNvbXB1dGUoKTsKIAogICAgIGlmICh2ZXJib3Nl
Q29tcGlsYXRpb25FbmFibGVkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMSklURmluYWxpemVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
SklURmluYWxpemVyLmNwcAppbmRleCAzNmRjNDljZWMxMGM2NTk3OWNmNjBhMzMyZTllMDA0YjRl
YzYxMGVkLi5iMjhkZDlhNWMzODIzOWQ3Zjg3YWQyMzY0ZTc0Yjk0NTEyNDFlZjMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3BwCkBAIC0zNyw5ICsz
Nyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAotdXNpbmcgbmFtZXNw
YWNlIERGRzsKLQotSklURmluYWxpemVyOjpKSVRGaW5hbGl6ZXIoUGxhbiYgcGxhbikKK0pJVEZp
bmFsaXplcjo6SklURmluYWxpemVyKERGRzo6UGxhbiYgcGxhbikKICAgICA6IEZpbmFsaXplcihw
bGFuKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5r
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKaW5kZXggNjc2YjM5
MDljODdkMGRhOTBjNWQ4ZGI2NjA4YWQyMTRjNTk4OTY2OS4uN2MwMTgxZDhkMWU0YjkzOGRlZTcw
YWI5MWQ2NjJlMDg0YzAyOTJhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMaW5rLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3Bw
CkBAIC00MSwxMCArNDEsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAK
LXVzaW5nIG5hbWVzcGFjZSBERkc7Ci0KIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiB7CisgICAg
dXNpbmcgbmFtZXNwYWNlIERGRzsKICAgICBHcmFwaCYgZ3JhcGggPSBzdGF0ZS5ncmFwaDsKICAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGdyYXBoLm1fY29kZUJsb2NrOwogICAgIFZNJiB2bSA9
IGdyYXBoLm1fdm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNw
cAppbmRleCA0MTcxNzhkNjVlZmQwZTg0ODM3OWQ3NGU2ZTYyNjMwNjUwNjFjMjAyLi44YmNhNTZj
MDY1OTdlNzg0NjVjMjkyNjg0ZjM2YjcyYzliMTY3OGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTQyLDEyICs0MiwxMSBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKLXVzaW5nIG5hbWVzcGFjZSBKU0M6OkRGRzsKLQog
ZXh0ZXJuICJDIiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG9wdWxhdGVPYmplY3RJbk9T
UigKICAgICBFeGVjU3RhdGUqIGV4ZWMsIEV4aXRUaW1lT2JqZWN0TWF0ZXJpYWxpemF0aW9uKiBt
YXRlcmlhbGl6YXRpb24sCiAgICAgRW5jb2RlZEpTVmFsdWUqIGVuY29kZWRWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUqIHZhbHVlcykKIHsKKyAgICB1c2luZyBuYW1lc3BhY2UgREZHOwogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxv
Y2soKTsKIApAQCAtMTIwLDYgKzExOSw3IEBAIGV4dGVybiAiQyIgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5PU1IoCiBleHRlcm4gIkMiIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NSKAogICAgIEV4ZWNTdGF0ZSog
ZXhlYywgRXhpdFRpbWVPYmplY3RNYXRlcmlhbGl6YXRpb24qIG1hdGVyaWFsaXphdGlvbiwgRW5j
b2RlZEpTVmFsdWUqIHZhbHVlcykKIHsKKyAgICB1c2luZyBuYW1lc3BhY2UgREZHOwogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAKICAgICAvLyBXZSBjYW5ub3QgR0MuIFdlJ3ZlIGdvdCBwb2lu
dGVycyBpbiBldmlsIHBsYWNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtpbmdDb25zdHJhaW50U2V0LmNwcAppbmRleCAwMWMwNmU3NWM1YjAwZWQxMDY4ZTdiNGNm
MWE3MjhjNTk0Y2Y5MWUyLi5jNWE2YzY2OTc1OTJmNzk0MGVmZmE1NTYxOWVmMzNhMGQ1MDFkNmVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWlu
dFNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFp
bnRTZXQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTWFya2luZ0NvbnN0cmFpbnRT
ZXQuaCIKIAogI2luY2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4K
ICNpbmNsdWRlIDx3dGYvVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewpAQCAtMTA2LDE1ICsxMDcsMTUgQEAgdm9pZCBNYXJraW5nQ29uc3RyYWludFNldDo6ZGlk
U3RhcnRNYXJraW5nKCkKICAgICBtX2l0ZXJhdGlvbiA9IDE7CiB9CiAKLXZvaWQgTWFya2luZ0Nv
bnN0cmFpbnRTZXQ6OmFkZChDU3RyaW5nIGFiYnJldmlhdGVkTmFtZSwgQ1N0cmluZyBuYW1lLCBG
dW5jdGlvbjx2b2lkKFNsb3RWaXNpdG9yJiwgY29uc3QgVmlzaXRpbmdUaW1lb3V0Jik+IGZ1bmN0
aW9uLCBDb25zdHJhaW50Vm9sYXRpbGl0eSB2b2xhdGlsaXR5KQordm9pZCBNYXJraW5nQ29uc3Ry
YWludFNldDo6YWRkKENTdHJpbmcgYWJicmV2aWF0ZWROYW1lLCBDU3RyaW5nIG5hbWUsIDo6RnVu
Y3Rpb248dm9pZChTbG90VmlzaXRvciYsIGNvbnN0IFZpc2l0aW5nVGltZW91dCYpPiBmdW5jdGlv
biwgQ29uc3RyYWludFZvbGF0aWxpdHkgdm9sYXRpbGl0eSkKIHsKICAgICBhZGQoc3RkOjptYWtl
X3VuaXF1ZTxNYXJraW5nQ29uc3RyYWludD4oV1RGTW92ZShhYmJyZXZpYXRlZE5hbWUpLCBXVEZN
b3ZlKG5hbWUpLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgdm9sYXRpbGl0eSkpOwogfQogCiB2b2lkIE1h
cmtpbmdDb25zdHJhaW50U2V0OjphZGQoCiAgICAgQ1N0cmluZyBhYmJyZXZpYXRlZE5hbWUsIENT
dHJpbmcgbmFtZSwKLSAgICBGdW5jdGlvbjx2b2lkKFNsb3RWaXNpdG9yJiwgY29uc3QgVmlzaXRp
bmdUaW1lb3V0Jik+IGV4ZWN1dGVGdW5jdGlvbiwKLSAgICBGdW5jdGlvbjxkb3VibGUoU2xvdFZp
c2l0b3ImKT4gcXVpY2tXb3JrRXN0aW1hdGVGdW5jdGlvbiwKKyAgICA6OkZ1bmN0aW9uPHZvaWQo
U2xvdFZpc2l0b3ImLCBjb25zdCBWaXNpdGluZ1RpbWVvdXQmKT4gZXhlY3V0ZUZ1bmN0aW9uLAor
ICAgIDo6RnVuY3Rpb248ZG91YmxlKFNsb3RWaXNpdG9yJik+IHF1aWNrV29ya0VzdGltYXRlRnVu
Y3Rpb24sCiAgICAgQ29uc3RyYWludFZvbGF0aWxpdHkgdm9sYXRpbGl0eSkKIHsKICAgICBhZGQo
c3RkOjptYWtlX3VuaXF1ZTxNYXJraW5nQ29uc3RyYWludD4oV1RGTW92ZShhYmJyZXZpYXRlZE5h
bWUpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGV4ZWN1dGVGdW5jdGlvbiksIFdURk1vdmUocXVp
Y2tXb3JrRXN0aW1hdGVGdW5jdGlvbiksIHZvbGF0aWxpdHkpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2VuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2VuLmNwcAppbmRleCBhZTZlMTgz
NWUyZTJlN2E0MzAwZjdkZmEwYTExYjI4NmQzZjFmYzMxLi5mNzA2NjZkODk3MGY2YzczMzE1OTA3
ODE3N2QzZWEzYzU1ODBhYjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwCkBAIC0zMyw3ICszMyw5IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCituYW1lc3BhY2UgU2hhZG93Q2hpY2tlbkludGVybmFsIHsKIHN0YXRpYyBjb25z
dCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogdm9pZCBTaGFkb3dDaGlja2VuOjpQYWNrZXQ6
OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKQEAgLTg2LDcgKzg4LDcgQEAgdm9pZCBT
aGFkb3dDaGlja2VuOjpsb2coVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFBhY2tldCYg
cGFja2V0KQogCiB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSog
ZXhlYykKIHsKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJu
YWw6OnZlcmJvc2UpIHsKICAgICAgICAgZGF0YUxvZygiUnVubmluZyB1cGRhdGUgb246ICIsICp0
aGlzLCAiXG4iKTsKICAgICAgICAgV1RGUmVwb3J0QmFja3RyYWNlKCk7CiAgICAgfQpAQCAtMTEy
LDEzICsxMTQsMTMgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAg
aWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiSGln
aGVzdCBwb2ludCBzaW5jZSBsYXN0IHRpbWU6ICIsIFJhd1BvaW50ZXIoaGlnaGVzdFBvaW50U2lu
Y2VMYXN0VGltZSksICJcbiIpOwogICAgIAogICAgIHdoaWxlICghbV9zdGFjay5pc0VtcHR5KCkg
JiYgKG1fc3RhY2subGFzdCgpLmZyYW1lIDwgaGlnaGVzdFBvaW50U2luY2VMYXN0VGltZSB8fCBt
X3N0YWNrLmxhc3QoKS5pc1RhaWxEZWxldGVkKSkKICAgICAgICAgbV9zdGFjay5yZW1vdmVMYXN0
KCk7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiICAgIFJldmlzZWQgc3RhY2s6ICIsIGxpc3RE
dW1wKG1fc3RhY2spLCAiXG4iKTsKICAgICAKICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhl
IHRvcCBvZiBzdGFjayBpcyBub3cgdGFpbC1kZWxldGVkLiBUaGUgc3RhY2sgbm8gbG9uZ2VyIGNv
bnRhaW5zIGFueQpAQCAtMTQxLDcgKzE0Myw3IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRl
KFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgIH0KIAogICAgIAotICAgIGlmICh2ZXJib3Nl
KQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFM
b2coIiAgICBSZXZpc2VkIHN0YWNrOiAiLCBsaXN0RHVtcChtX3N0YWNrKSwgIlxuIik7CiAgICAg
CiAgICAgLy8gVGhlIGxvZy1iYXNlZCBhbmQgZXhlYy1iYXNlZCBydWxlcyByZXF1aXJlIHRoYXQg
U2hhZG93Q2hpY2tlbiB3YXMgZW5hYmxlZC4gVGhlIHBvaW50IG9mCkBAIC0xNjksNyArMTcxLDcg
QEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgc3RhY2tSaWdodE5vdy5yZXZlcnNlKCk7CiAgICAgICAg
IAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBTdGFjayByaWdodCBub3c6ICIs
IGxpc3REdW1wKHN0YWNrUmlnaHROb3cpLCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIHVuc2ln
bmVkIHNoYWRvd0luZGV4ID0gMDsKQEAgLTE5NCw3ICsxOTYsNyBAQCB2b2lkIFNoYWRvd0NoaWNr
ZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgfQogICAgICAgICBt
X3N0YWNrLnJlc2l6ZShzaGFkb3dJbmRleCk7CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9z
ZSkKKyAgICAgICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgIGRhdGFMb2coIiAgICBSZXZpc2VkIHN0YWNrOiAiLCBsaXN0RHVtcChtX3N0YWNrKSwgIlxu
Iik7CiAgICAgfQogICAgIApAQCAtMjA4LDE3ICsyMTAsMTcgQEAgdm9pZCBTaGFkb3dDaGlja2Vu
Ojp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIH0KICAgICB9CiAgICAg
Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgZGF0YUxvZygiICAgIEhpZ2hlc3QgcG9pbnQgc2luY2UgbGFzdCB0aW1lOiAi
LCBSYXdQb2ludGVyKGhpZ2hlc3RQb2ludFNpbmNlTGFzdFRpbWUpLCAiXG4iKTsKICAgICAKICAg
ICAvLyBTZXQgZXZlcnl0aGluZyB1cCBzbyB0aGF0IHdlIGtub3cgd2hlcmUgdGhlIHRvcCBmcmFt
ZSBpcyBpbiB0aGUgbG9nLgogICAgIHVuc2lnbmVkIGluZGV4SW5Mb2cgPSBsb2dDdXJzb3JJbmRl
eDsKICAgICAKICAgICBhdXRvIGFkdmFuY2VJbmRleEluTG9nVG8gPSBbJl0gKENhbGxGcmFtZSog
ZnJhbWUsIEpTT2JqZWN0KiBjYWxsZWUsIENhbGxGcmFtZSogY2FsbGVyRnJhbWUpIC0+IGJvb2wg
ewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBBZHZhbmNpbmcgdG8gZnJhbWUg
PSAiLCBSYXdQb2ludGVyKGZyYW1lKSwgIiBmcm9tIGluZGV4SW5Mb2cgPSAiLCBpbmRleEluTG9n
LCAiXG4iKTsKICAgICAgICAgaWYgKGluZGV4SW5Mb2cgPiBsb2dDdXJzb3JJbmRleCkgewotICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoU2hhZG93Q2hpY2tlbkludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBCYWlsaW5nLlxuIik7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTI0NCw3ICsyNDYsNyBA
QCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKICAg
ICAgICAgICAgIGlmIChwYWNrZXQuaXNQcm9sb2d1ZSgpICYmIHBhY2tldC5mcmFtZSA9PSBmcmFt
ZQogICAgICAgICAgICAgICAgICYmICghY2FsbGVlIHx8IHBhY2tldC5jYWxsZWUgPT0gY2FsbGVl
KQogICAgICAgICAgICAgICAgICYmICghY2FsbGVyRnJhbWUgfHwgcGFja2V0LmNhbGxlckZyYW1l
ID09IGNhbGxlckZyYW1lKSkgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2coIiAgICBGb3VuZCBhdCBpbmRleEluTG9nID0gIiwgaW5kZXhJbkxv
ZywgIlxuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBA
IC0yNjYsNyArMjY4LDcgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIC8vIEl0IHNlZW1zIGxpa2UgdGhlIGxhdHRlciBvcHRpb24g
aXMgbGVzcyBoYXJtZnVsLCBzbyB0aGF0J3Mgd2hhdCB3ZSBkby4KICAgICAgICAgaW5kZXhJbkxv
ZyA9IG9sZEluZGV4SW5Mb2c7CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFM
b2coIiAgICBEaWRuJ3QgZmluZCBpdC5cbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fTsKQEAgLTI4NiwxMCArMjg4LDEwIEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2
bSwgRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IHZpc2l0b3ItPmNhbGxGcmFtZSgpOwotICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICBpZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBFeGFtaW5pbmcgIiwgUmF3UG9pbnRlcihjYWxs
RnJhbWUpLCAiXG4iKTsKICAgICAgICAgICAgIGlmIChjYWxsRnJhbWUgPT0gaGlnaGVzdFBvaW50
U2luY2VMYXN0VGltZSkgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAg
ICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIiAgICBCYWlsaW5nIGF0ICIsIFJhd1BvaW50ZXIoY2FsbEZyYW1lKSwg
IiBiZWNhdXNlIGl0J3MgdGhlIGhpZ2hlc3QgcG9pbnQgc2luY2UgbGFzdCB0aW1lLlxuIik7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKICAgICAgICAgICAgIH0K
QEAgLTMxMiw3ICszMTQsNyBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0sIEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgICAgICAvLyBUaGlzIGNvbmRpdGlvbiBwcm90ZWN0
cyB1cyBmcm9tIHRoZSBjYXNlIHdoZXJlIGFkdmFuY2VJbmRleEluTG9nVG8gZGlkbid0IGZpbmQK
ICAgICAgICAgICAgICAgICAvLyBhbnl0aGluZy4KICAgICAgICAgICAgICAgICAmJiBtX2xvZ1tp
bmRleEluTG9nXS5mcmFtZSA9PSB0b1B1c2gubGFzdCgpLmZyYW1lKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEdvaW5nIHRvIGxv
b3AgdGhyb3VnaCB0byBmaW5kIHRhaWwgZGVsZXRlZCBmcmFtZXMgd2l0aCBpbmRleEluTG9nID0g
IiwgaW5kZXhJbkxvZywgIiBhbmQgcHVzaC1zdGFjayB0b3AgPSAiLCB0b1B1c2gubGFzdCgpLCAi
XG4iKTsKICAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChtX2xvZ1tpbmRleEluTG9nXS5mcmFtZSA9PSB0b1B1c2gubGFzdCgpLmZyYW1lKTsKQEAg
LTMzNyw3ICszMzksNyBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNT
dGF0ZSogZXhlYykKICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkxvZy0tOyAvLyBTa2lwIG92
ZXIgdGhlIHRhaWwgcGFja2V0LgogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFhZHZhbmNlSW5kZXhJbkxvZ1RvKHRhaWxQYWNrZXQuZnJhbWUsIG51bGxwdHIs
IG51bGxwdHIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ2FuJ3QgZmluZCBwcm9sb2d1ZSBw
YWNrZXQgZm9yIHRhaWw6ICIsIFJhd1BvaW50ZXIodGFpbFBhY2tldC5mcmFtZSksICJcbiIpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugd2VyZSB1bmFibGUgdG8gbG9jYXRlIHRoZSBw
cm9sb2d1ZSBwYWNrZXQgZm9yIHRoaXMgdGFpbCBwYWNrZXQuCiAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBUaGlzIGlzIHJhcmUgYnV0IGNhbiBoYXBwZW4gaW4gYSBzaXR1YXRpb24gbGlrZToK
QEAgLTM1Nyw3ICszNTksNyBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0sIEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVl
OwogICAgICAgICB9KTsKIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlja2Vu
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgICBQdXNoaW5nOiAiLCBsaXN0
RHVtcCh0b1B1c2gpLCAiXG4iKTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSB0b1B1c2gu
c2l6ZSgpOyBpLS07KQpAQCAtMzczLDcgKzM3NSw3IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBk
YXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgIH0gZWxzZQogICAgICAgICBtX2xvZ0N1
cnNvciA9IG1fbG9nOwogCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKFNoYWRvd0NoaWNrZW5J
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiICAgIEFmdGVyIHB1c2hpbmc6ICIs
ICp0aGlzLCAiXG4iKTsKIAogICAgIC8vIFJlbW92ZSB0YWlsIGZyYW1lcyB1bnRpbCB0aGUgbnVt
YmVyIG9mIHRhaWwgZGVsZXRlZCBmcmFtZXMgaXMgc21hbGwgZW5vdWdoLgpAQCAtMzk5LDcgKzQw
MSw3IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVj
KQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKFNoYWRvd0No
aWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiICAgIEFmdGVyIGNsZWFu
LXVwOiAiLCAqdGhpcywgIlxuIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQmluYXJ5U3dpdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQmlu
YXJ5U3dpdGNoLmNwcAppbmRleCBmM2RkY2ZjYTkyMWM5ODFlZjI4YzBiN2Q2ZDdhNTFmNWVmZDUz
ODhiLi4wZWFiNTY1MTkyNTMyOWUxN2IzZjVjYTI1ZGIxMzRhYjRkZDlhNjcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0JpbmFyeVN3aXRjaC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9CaW5hcnlTd2l0Y2guY3BwCkBAIC0zMyw3ICszMyw5IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCituYW1lc3BhY2UgQmluYXJ5U3dpdGNoSW50ZXJuYWwgewogc3Rh
dGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBzdGF0aWMgdW5zaWduZWQgZ2xv
YmFsQ291bnRlcjsgLy8gV2UgdXNlIGEgZGlmZmVyZW50IHNlZWQgZXZlcnkgdGltZSB3ZSBhcmUg
aW52b2tlZC4KIApAQCAtNDcsNyArNDksNyBAQCBCaW5hcnlTd2l0Y2g6OkJpbmFyeVN3aXRjaChH
UFJSZWcgdmFsdWUsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgY2FzZXMsIFR5cGUgdHlwZQogICAg
IGlmIChjYXNlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICh2ZXJib3Nl
KQorICAgIGlmIChCaW5hcnlTd2l0Y2hJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxv
ZygiT3JpZ2luYWwgY2FzZXM6ICIsIGxpc3REdW1wKGNhc2VzKSwgIlxuIik7CiAgICAgCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhc2VzLnNpemUoKTsgKytpKQpAQCAtNTUsNyArNTcs
NyBAQCBCaW5hcnlTd2l0Y2g6OkJpbmFyeVN3aXRjaChHUFJSZWcgdmFsdWUsIGNvbnN0IFZlY3Rv
cjxpbnQ2NF90PiYgY2FzZXMsIFR5cGUgdHlwZQogICAgIAogICAgIHN0ZDo6c29ydChtX2Nhc2Vz
LmJlZ2luKCksIG1fY2FzZXMuZW5kKCkpOwogCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEJp
bmFyeVN3aXRjaEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJTb3J0ZWQgY2Fz
ZXM6ICIsIGxpc3REdW1wKG1fY2FzZXMpLCAiXG4iKTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAxOyBpIDwgbV9jYXNlcy5zaXplKCk7ICsraSkKQEAgLTEzNywxMSArMTM5LDExIEBAIGJv
b2wgQmluYXJ5U3dpdGNoOjphZHZhbmNlKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiAKIHZvaWQgQmlu
YXJ5U3dpdGNoOjpidWlsZCh1bnNpZ25lZCBzdGFydCwgYm9vbCBoYXJkU3RhcnQsIHVuc2lnbmVk
IGVuZCkKIHsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQmluYXJ5U3dpdGNoSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkJ1aWxkaW5nIHdpdGggc3RhcnQgPSAiLCBzdGFy
dCwgIiwgaGFyZFN0YXJ0ID0gIiwgaGFyZFN0YXJ0LCAiLCBlbmQgPSAiLCBlbmQsICJcbiIpOwog
CiAgICAgYXV0byBhcHBlbmQgPSBbJl0gKGNvbnN0IEJyYW5jaENvZGUmIGNvZGUpIHsKLSAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCaW5hcnlTd2l0Y2hJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgIGRhdGFMb2coIj09PiAiLCBjb2RlLCAiXG4iKTsKICAgICAgICAgbV9i
cmFuY2hlcy5hcHBlbmQoY29kZSk7CiAgICAgfTsKQEAgLTE1OSw3ICsxNjEsNyBAQCB2b2lkIEJp
bmFyeVN3aXRjaDo6YnVpbGQodW5zaWduZWQgc3RhcnQsIGJvb2wgaGFyZFN0YXJ0LCB1bnNpZ25l
ZCBlbmQpCiAgICAgY29uc3QgdW5zaWduZWQgbGVhZlRocmVzaG9sZCA9IDM7CiAgICAgCiAgICAg
aWYgKHNpemUgPD0gbGVhZlRocmVzaG9sZCkgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgaWYgKEJpbmFyeVN3aXRjaEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxv
ZygiSXQncyBhIGxlYWYuXG4iKTsKICAgICAgICAgCiAgICAgICAgIC8vIEl0IHR1cm5zIG91dCB0
aGF0IGZvciBleGFjdGx5IHRocmVlIGNhc2VzIG9yIGxlc3MsIGl0J3MgYmV0dGVyIHRvIGp1c3Qg
Y29tcGFyZSBlYWNoCkBAIC0xODYsNyArMTg4LDcgQEAgdm9pZCBCaW5hcnlTd2l0Y2g6OmJ1aWxk
KHVuc2lnbmVkIHN0YXJ0LCBib29sIGhhcmRTdGFydCwgdW5zaWduZWQgZW5kKQogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCaW5h
cnlTd2l0Y2hJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coImFsbENvbnNl
Y3V0aXZlID0gIiwgYWxsQ29uc2VjdXRpdmUsICJcbiIpOwogICAgICAgICAKICAgICAgICAgVmVj
dG9yPHVuc2lnbmVkLCAzPiBsb2NhbENhc2VJbmRpY2VzOwpAQCAtMjE0LDcgKzIxNiw3IEBAIHZv
aWQgQmluYXJ5U3dpdGNoOjpidWlsZCh1bnNpZ25lZCBzdGFydCwgYm9vbCBoYXJkU3RhcnQsIHVu
c2lnbmVkIGVuZCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICh2ZXJib3NlKQor
ICAgIGlmIChCaW5hcnlTd2l0Y2hJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygi
SXQncyBub3QgYSBsZWFmLlxuIik7CiAgICAgICAgIAogICAgIC8vIFRoZXJlIGFyZSB0d28gZGlm
ZmVyZW50IHN0cmF0ZWdpZXMgd2UgY291bGQgY29uc2lkZXIgaGVyZToKQEAgLTMxNCw3ICszMTYs
NyBAQCB2b2lkIEJpbmFyeVN3aXRjaDo6YnVpbGQodW5zaWduZWQgc3RhcnQsIGJvb2wgaGFyZFN0
YXJ0LCB1bnNpZ25lZCBlbmQpCiAgICAgICAgIAogICAgIHVuc2lnbmVkIG1lZGlhbkluZGV4ID0g
KHN0YXJ0ICsgZW5kKSAvIDI7CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQmluYXJ5U3dp
dGNoSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIm1lZGlhbkluZGV4ID0gIiwg
bWVkaWFuSW5kZXgsICJcbiIpOwogCiAgICAgLy8gV2Ugd2FudCBtZWRpYW5JbmRleCB0byBwb2lu
dCB0byB0aGUgdGhpbmcgd2Ugd2lsbCBkbyBhIGxlc3MtdGhhbiBjb21wYXJlIGFnYWluc3QuIFdl
IHdhbnQKQEAgLTM0Nyw3ICszNDksNyBAQCB2b2lkIEJpbmFyeVN3aXRjaDo6YnVpbGQodW5zaWdu
ZWQgc3RhcnQsIGJvb2wgaGFyZFN0YXJ0LCB1bnNpZ25lZCBlbmQpCiAgICAgUkVMRUFTRV9BU1NF
UlQobWVkaWFuSW5kZXggPiBzdGFydCk7CiAgICAgUkVMRUFTRV9BU1NFUlQobWVkaWFuSW5kZXgg
KyAxIDwgZW5kKTsKICAgICAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEJpbmFyeVN3
aXRjaEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJmaXhlZCBtZWRpYW5JbmRl
eCA9ICIsIG1lZGlhbkluZGV4LCAiXG4iKTsKIAogICAgIGFwcGVuZChCcmFuY2hDb2RlKExlc3NU
aGFuVG9QdXNoLCBtZWRpYW5JbmRleCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnREYXRhLmNwcAppbmRleCAxZTQ5ZjJmODUzMjU4ZTM5NDE2MWM3YzQ0MDAzOTkzM2ZhYWE5MjFj
Li5hZDg2OWYyMGUyZTRkMWI5YWUwZGE3ODc0ODJmYjZmZTdkMjhhZmFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtMjI1LDcgKzIyNSw5IEBAIHZvaWQg
RGF0YTo6ZmluYWxpemVTdGF0cygpCiB9CiAKICNpZiBFTkFCTEUoTExJTlRfU1RBVFMpCituYW1l
c3BhY2UgTExJbnREYXRhSW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZVN0YXRz
ID0gZmFsc2U7Cit9CiAKIHN0YXRpYyBib29sIGNvbXBhcmVTdGF0cyhjb25zdCBPcGNvZGVTdGF0
cyYgYSwgY29uc3QgT3Bjb2RlU3RhdHMmIGIpCiB7CkBAIC0yODMsNyArMjg1LDcgQEAgdm9pZCBE
YXRhOjpsb2FkU3RhdHMoKQogICAgIHVuc2lnbmVkIGluZGV4OwogICAgIGNoYXIgb3Bjb2RlTmFt
ZVsxMDBdOwogICAgIHdoaWxlIChmc2NhbmYoZmlsZSwgIlsldV06IGZhc3Q6JXp1IHNsb3c6JXp1
IGlkOiV1ICVzXG4iLCAmaW5kZXgsICZsb2FkZWQuY291bnQsICZsb2FkZWQuc2xvd1BhdGhDb3Vu
dCwgJmxvYWRlZC5pZCwgb3Bjb2RlTmFtZSkgIT0gRU9GKSB7Ci0gICAgICAgIGlmICh2ZXJib3Nl
U3RhdHMpCisgICAgICAgIGlmIChMTEludERhdGFJbnRlcm5hbDo6dmVyYm9zZVN0YXRzKQogICAg
ICAgICAgICAgZGF0YUxvZ0YoImxvYWRlZCBbJXVdOiBmYXN0ICV6dSBzbG93ICV6dSBpZDoldSAl
c1xuIiwgaW5kZXgsIGxvYWRlZC5jb3VudCwgbG9hZGVkLnNsb3dQYXRoQ291bnQsIGxvYWRlZC5p
ZCwgb3Bjb2RlTmFtZSk7CiAKICAgICAgICAgT3Bjb2RlU3RhdHMmIHN0YXRzID0gb3Bjb2RlU3Rh
dHMobG9hZGVkLmlkKTsKQEAgLTI5MSw3ICsyOTMsNyBAQCB2b2lkIERhdGE6OmxvYWRTdGF0cygp
CiAgICAgICAgIHN0YXRzLnNsb3dQYXRoQ291bnQgPSBsb2FkZWQuc2xvd1BhdGhDb3VudDsKICAg
ICB9CiAKLSAgICBpZiAodmVyYm9zZVN0YXRzKSB7CisgICAgaWYgKExMSW50RGF0YUludGVybmFs
Ojp2ZXJib3NlU3RhdHMpIHsKICAgICAgICAgZGF0YUxvZ0YoIkFmdGVyIGxvYWRpbmcgZnJvbSAl
cywgIiwgZmlsZW5hbWUpOwogICAgICAgICBkdW1wU3RhdHMoKTsKICAgICB9CkBAIC0zMzAsNyAr
MzMyLDcgQEAgdm9pZCBEYXRhOjpzYXZlU3RhdHMoKQogICAgICAgICBpZiAoIXN0YXRzLmNvdW50
ICYmICFzdGF0cy5zbG93UGF0aENvdW50KQogICAgICAgICAgICAgYnJlYWs7IC8vIHN0YXRzIGFy
ZSBzb3J0ZWQuIElmIHdlIGVuY291bnRlcmVkIDAgY291bnRzLCB0aGVuIHRoZXJlIGFyZSBubyBt
b3JlIG5vbi16ZXJvIGNvdW50cy4KIAotICAgICAgICBpZiAodmVyYm9zZVN0YXRzKQorICAgICAg
ICBpZiAoTExJbnREYXRhSW50ZXJuYWw6OnZlcmJvc2VTdGF0cykKICAgICAgICAgICAgIGRhdGFM
b2dGKCJzYXZlZCBbJXVdOiBmYXN0OiV6dSBzbG93OiV6dSBpZDoldSAlc1xuIiwgaW5kZXgsIHN0
YXRzLmNvdW50LCBzdGF0cy5zbG93UGF0aENvdW50LCBzdGF0cy5pZCwgb3Bjb2RlTmFtZXNbc3Rh
dHMuaWRdKTsKIAogICAgICAgICBmcHJpbnRmKGZpbGUsICJbJXVdOiBmYXN0OiV6dSBzbG93OiV6
dSBpZDoldSAlc1xuIiwgaW5kZXgsIHN0YXRzLmNvdW50LCBzdGF0cy5zbG93UGF0aENvdW50LCBz
dGF0cy5pZCwgb3Bjb2RlTmFtZXNbc3RhdHMuaWRdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCA4ZjcxMTdiN2Y2MTQyYmEwNmFl
NzFjZTdjZTZkZGYzYTE2N2U3NzE3Li4zYjcxYTMwOTY3ZWEzOThkNTkyOTJiMzk5Y2IzZWRiNTYw
NWE0YjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90
b3R5cGUuY3BwCkBAIC0xMzY2LDcgKzEzNjYsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5UHJvdG9Qcml2YXRlRnVuY0FwcGVuZE1lbWNweShFeGVjU3RhdGUqIGV4ZWMpCiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIEFycmF5UHJvdG90eXBlLmNvbnN0cnVjdG9yIFdhdGNo
cG9pbnQgLS0tLS0tLS0tLS0tLS0tLS0tCiAKK25hbWVzcGFjZSBBcnJheVByb3RvdHlwZUludGVy
bmFsIHsKIHN0YXRpYyBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogY2xhc3MgQXJyYXlQcm90
b3R5cGVBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlXYXRjaHBvaW50IDogcHVibGljIEFkYXB0aXZl
SW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UgewogcHVibGljOgpAQCAtMTM4OCw3
ICsxMzkwLDcgQEAgdm9pZCBBcnJheVByb3RvdHlwZTo6dHJ5SW5pdGlhbGl6ZVNwZWNpZXNXYXRj
aHBvaW50KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChBcnJheVByb3RvdHlwZUlu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJJbml0aWFsaXppbmcgQXJyYXkgc3Bl
Y2llcyB3YXRjaHBvaW50cyBmb3IgQXJyYXkucHJvdG90eXBlOiAiLCBwb2ludGVyRHVtcCh0aGlz
KSwgIiB3aXRoIHN0cnVjdHVyZTogIiwgcG9pbnRlckR1bXAodGhpcy0+c3RydWN0dXJlKCkpLCAi
XG5hbmQgQXJyYXk6ICIsIHBvaW50ZXJEdW1wKHRoaXMtPmdsb2JhbE9iamVjdCgpLT5hcnJheUNv
bnN0cnVjdG9yKCkpLCAiIHdpdGggc3RydWN0dXJlOiAiLCBwb2ludGVyRHVtcCh0aGlzLT5nbG9i
YWxPYmplY3QoKS0+YXJyYXlDb25zdHJ1Y3RvcigpLT5zdHJ1Y3R1cmUoKSksICJcbiIpOwogICAg
IC8vIEZpcnN0IHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIEFycmF5LnByb3RvdHlwZS5j
b25zdHJ1Y3RvciBwcm9wZXJ0eSBwb2ludHMgdG8gQXJyYXkKICAgICAvLyBhbmQgdGhhdCBBcnJh
eVtTeW1ib2wuc3BlY2llc10gaXMgdGhlIHByaW1vcmRpYWwgR2V0dGVyU2V0dGVyLgpAQCAtMTQ2
Niw3ICsxNDY4LDcgQEAgdm9pZCBBcnJheVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0
eVdhdGNocG9pbnQ6OmhhbmRsZUZpcmUoY29uc3QgRmlyZURldGEKIAogICAgIFN0cmluZ0ZpcmVE
ZXRhaWwgc3RyaW5nRGV0YWlsKG91dC50b0NTdHJpbmcoKS5kYXRhKCkpOwogCi0gICAgaWYgKHZl
cmJvc2UpCisgICAgaWYgKEFycmF5UHJvdG90eXBlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
IFdURjo6ZGF0YUxvZyhzdHJpbmdEZXRhaWwsICJcbiIpOwogCiAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fYXJyYXlQcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAppbmRleCA1NDkz
ZjhmNzBhMzU3MzIxZjE2N2RlMWM1MmI0ZjM1Mjk5ODgwNDhjLi5mYzhiODQ4MmJlZmQ2YjBjMDc0
YjRlZThmZDI3YmFhMjIyNThiMDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvckluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvckluc3RhbmNlLmNwcApAQCAtMTA4LDQxICsxMDgsNiBAQCBzdGF0aWMgdm9pZCBh
cHBlbmRTb3VyY2VUb0Vycm9yKENhbGxGcmFtZSogY2FsbEZyYW1lLCBFcnJvckluc3RhbmNlKiBl
eGNlcHRpb24sCiAKIH0KIAotY2xhc3MgRmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2Nr
RnVuY3RvciB7Ci1wdWJsaWM6Ci0gICAgRmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2Nr
RnVuY3RvcihDYWxsRnJhbWUqIHN0YXJ0Q2FsbEZyYW1lKQotICAgICAgICA6IG1fc3RhcnRDYWxs
RnJhbWUoc3RhcnRDYWxsRnJhbWUpCi0gICAgICAgICwgbV9mb3VuZENhbGxGcmFtZShudWxscHRy
KQotICAgICAgICAsIG1fZm91bmRTdGFydENhbGxGcmFtZShmYWxzZSkKLSAgICAgICAgLCBtX2lu
ZGV4KDApCi0gICAgeyB9Ci0KLSAgICBTdGFja1Zpc2l0b3I6OlN0YXR1cyBvcGVyYXRvcigpKFN0
YWNrVmlzaXRvciYgdmlzaXRvcikKLSAgICB7Ci0gICAgICAgIGlmICghbV9mb3VuZFN0YXJ0Q2Fs
bEZyYW1lICYmICh2aXNpdG9yLT5jYWxsRnJhbWUoKSA9PSBtX3N0YXJ0Q2FsbEZyYW1lKSkKLSAg
ICAgICAgICAgIG1fZm91bmRTdGFydENhbGxGcmFtZSA9IHRydWU7Ci0KLSAgICAgICAgaWYgKG1f
Zm91bmRTdGFydENhbGxGcmFtZSkgewotICAgICAgICAgICAgaWYgKHZpc2l0b3ItPmNhbGxGcmFt
ZSgpLT5jb2RlQmxvY2soKSkgewotICAgICAgICAgICAgICAgIG1fZm91bmRDYWxsRnJhbWUgPSB2
aXNpdG9yLT5jYWxsRnJhbWUoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9y
OjpEb25lOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9pbmRleCsrOwotICAgICAgICB9
Ci0KLSAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7Ci0gICAgfQotCi0gICAg
Q2FsbEZyYW1lKiBmb3VuZENhbGxGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm91bmRDYWxsRnJh
bWU7IH0KLSAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KLQot
cHJpdmF0ZToKLSAgICBDYWxsRnJhbWUqIG1fc3RhcnRDYWxsRnJhbWU7Ci0gICAgQ2FsbEZyYW1l
KiBtX2ZvdW5kQ2FsbEZyYW1lOwotICAgIGJvb2wgbV9mb3VuZFN0YXJ0Q2FsbEZyYW1lOwotICAg
IHVuc2lnbmVkIG1faW5kZXg7Ci19OwotCiB2b2lkIEVycm9ySW5zdGFuY2U6OmZpbmlzaENyZWF0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGJvb2wg
dXNlQ3VycmVudEZyYW1lKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3Bw
CmluZGV4IDdlZjAwMDhkODM3Y2NmOTEzNzE0ZjNhMzVjMzk1NTE5OThiNmY5N2YuLmM5MjBhY2Y0
N2U4MmM5NTJlOGZiNmUzMDdkOWIwZmUzZjVhODJiZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcApAQCAtNDksNyArNDks
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBJbnRsRGF0ZVRpbWVGb3Jt
YXQ6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSW50bERhdGVUaW1lRm9ybWF0KSB9OwogCituYW1lc3BhY2Ug
SW50bERURkludGVybmFsIHsKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCByZWxldmFudEV4dGVu
c2lvbktleXNbMl0gPSB7ICJjYSIsICJudSIgfTsKK30KKwogc3RhdGljIGNvbnN0IHNpemVfdCBp
bmRleE9mRXh0ZW5zaW9uS2V5Q2EgPSAwOwogc3RhdGljIGNvbnN0IHNpemVfdCBpbmRleE9mRXh0
ZW5zaW9uS2V5TnUgPSAxOwogCkBAIC0xODksNiArMTkyLDcgQEAgc3RhdGljIFN0cmluZyBjYW5v
bmljYWxpemVUaW1lWm9uZU5hbWUoY29uc3QgU3RyaW5nJiB0aW1lWm9uZU5hbWUpCiAgICAgcmV0
dXJuIGNhbm9uaWNhbDsKIH0KIAorbmFtZXNwYWNlIEludGxEVEZJbnRlcm5hbCB7CiBzdGF0aWMg
VmVjdG9yPFN0cmluZz4gbG9jYWxlRGF0YShjb25zdCBTdHJpbmcmIGxvY2FsZSwgc2l6ZV90IGtl
eUluZGV4KQogewogICAgIFZlY3RvcjxTdHJpbmc+IGtleUxvY2FsZURhdGE7CkBAIC0zMTksNiAr
MzIzLDcgQEAgc3RhdGljIEpTT2JqZWN0KiB0b0RhdGVUaW1lT3B0aW9uc0FueURhdGUoRXhlY1N0
YXRlJiBleGVjLCBKU1ZhbHVlIG9yaWdpbmFsT3B0aW8KICAgICAvLyA5LiBSZXR1cm4gb3B0aW9u
cy4KICAgICByZXR1cm4gb3B0aW9uczsKIH0KK30KIAogdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OnNldEZvcm1hdHNGcm9tUGF0dGVybihjb25zdCBTdHJpbmdWaWV3JiBwYXR0ZXJuKQogewpAQCAt
NDMzLDcgKzQzOCw3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRp
bWVGb3JtYXQoRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIGxvY2FsCiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAogICAgIC8vIDUuIExldCBvcHRpb25zIGJlIFRvRGF0
ZVRpbWVPcHRpb25zKG9wdGlvbnMsICJhbnkiLCAiZGF0ZSIpLgotICAgIEpTT2JqZWN0KiBvcHRp
b25zID0gdG9EYXRlVGltZU9wdGlvbnNBbnlEYXRlKGV4ZWMsIG9yaWdpbmFsT3B0aW9ucyk7Cisg
ICAgSlNPYmplY3QqIG9wdGlvbnMgPSBJbnRsRFRGSW50ZXJuYWw6OnRvRGF0ZVRpbWVPcHRpb25z
QW55RGF0ZShleGVjLCBvcmlnaW5hbE9wdGlvbnMpOwogICAgIC8vIDYuIFJldHVybklmQWJydXB0
KG9wdGlvbnMpLgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKQEAg
LTQ1MCw3ICs0NTUsNyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVU
aW1lRm9ybWF0KEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSBsb2NhbAogICAgIC8vIDExLiBMZXQg
bG9jYWxlRGF0YSBiZSB0aGUgdmFsdWUgb2YgJURhdGVUaW1lRm9ybWF0JS5bW2xvY2FsZURhdGFd
XS4KICAgICAvLyAxMi4gTGV0IHIgYmUgUmVzb2x2ZUxvY2FsZSggJURhdGVUaW1lRm9ybWF0JS5b
W2F2YWlsYWJsZUxvY2FsZXNdXSwgcmVxdWVzdGVkTG9jYWxlcywgb3B0LCAlRGF0ZVRpbWVGb3Jt
YXQlLltbcmVsZXZhbnRFeHRlbnNpb25LZXlzXV0sIGxvY2FsZURhdGEpLgogICAgIGNvbnN0IEhh
c2hTZXQ8U3RyaW5nPiBhdmFpbGFibGVMb2NhbGVzID0gZXhlYy5qc0NhbGxlZSgpLT5nbG9iYWxP
YmplY3QoKS0+aW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOwotICAgIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IHJlc29sdmVkID0gcmVzb2x2ZUxvY2FsZShleGVjLCBhdmFpbGFi
bGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBsb2NhbGVPcHQsIHJlbGV2YW50RXh0ZW5zaW9u
S2V5cywgV1RGX0FSUkFZX0xFTkdUSChyZWxldmFudEV4dGVuc2lvbktleXMpLCBsb2NhbGVEYXRh
KTsKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiByZXNvbHZlZCA9IHJlc29sdmVMb2NhbGUo
ZXhlYywgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgbG9jYWxlT3B0LCBJbnRs
RFRGSW50ZXJuYWw6OnJlbGV2YW50RXh0ZW5zaW9uS2V5cywgV1RGX0FSUkFZX0xFTkdUSChJbnRs
RFRGSW50ZXJuYWw6OnJlbGV2YW50RXh0ZW5zaW9uS2V5cyksIEludGxEVEZJbnRlcm5hbDo6bG9j
YWxlRGF0YSk7CiAKICAgICAvLyAxMy4gU2V0IGRhdGVUaW1lRm9ybWF0LltbbG9jYWxlXV0gdG8g
dGhlIHZhbHVlIG9mIHIuW1tsb2NhbGVdXS4KICAgICBtX2xvY2FsZSA9IHJlc29sdmVkLmdldCh2
bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGUuc3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAppbmRleCAyMjQ3NDc5YmE0NDhk
YjFhNGM4MTdkMmY3N2NmYzNjNTJmM2ZjNjRjLi5jMmZiODM0NjNhMzQ0NDc3YTBmYjRlZmI0YTQz
NWZlM2VlNzcyNzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtODgsMTIgKzg4LDE0IEBAIHZvaWQgSW50bE51bWJlckZv
cm1hdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYm91bmRGb3JtYXQpOwogfQogCituYW1l
c3BhY2UgSW50bE5GSW50ZXJuYWwgewogc3RhdGljIFZlY3RvcjxTdHJpbmc+IGxvY2FsZURhdGEo
Y29uc3QgU3RyaW5nJiBsb2NhbGUsIHNpemVfdCBrZXlJbmRleCkKIHsKICAgICAvLyA5LjEgSW50
ZXJuYWwgc2xvdHMgb2YgU2VydmljZSBDb25zdHJ1Y3RvcnMgJiAxMS4yLjMgSW50ZXJuYWwgc2xv
dHMgKEVDTUEtNDAyIDIuMCkKICAgICBBU1NFUlRfVU5VU0VEKGtleUluZGV4LCAha2V5SW5kZXgp
OyAvLyBUaGUgaW5kZXggb2YgdGhlIGV4dGVuc2lvbiBrZXkgIm51IiBpbiByZWxldmFudEV4dGVu
c2lvbktleXMgaXMgMC4KICAgICByZXR1cm4gbnVtYmVyaW5nU3lzdGVtc0ZvckxvY2FsZShsb2Nh
bGUpOwogfQorfQogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNvbXB1dGVDdXJyZW5jeVNvcnRL
ZXkoY29uc3QgU3RyaW5nJiBjdXJyZW5jeSkKIHsKQEAgLTE5Miw3ICsxOTQsNyBAQCB2b2lkIElu
dGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNWYWx1ZSBsb2NhbGVzLAogICAgIC8vIDExLiBMZXQgbG9jYWxlRGF0YSBiZSAlTnVtYmVyRm9y
bWF0JS5bW2xvY2FsZURhdGFdXS4KICAgICAvLyAxMi4gTGV0IHIgYmUgUmVzb2x2ZUxvY2FsZSgl
TnVtYmVyRm9ybWF0JS5bW2F2YWlsYWJsZUxvY2FsZXNdXSwgcmVxdWVzdGVkTG9jYWxlcywgb3B0
LCAlTnVtYmVyRm9ybWF0JS5bW3JlbGV2YW50RXh0ZW5zaW9uS2V5c11dLCBsb2NhbGVEYXRhKS4K
ICAgICBhdXRvJiBhdmFpbGFibGVMb2NhbGVzID0gc3RhdGUuanNDYWxsZWUoKS0+Z2xvYmFsT2Jq
ZWN0KCktPmludGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCk7Ci0gICAgYXV0byByZXN1
bHQgPSByZXNvbHZlTG9jYWxlKHN0YXRlLCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2Nh
bGVzLCBvcHQsIHJlbGV2YW50RXh0ZW5zaW9uS2V5cywgV1RGX0FSUkFZX0xFTkdUSChyZWxldmFu
dEV4dGVuc2lvbktleXMpLCBsb2NhbGVEYXRhKTsKKyAgICBhdXRvIHJlc3VsdCA9IHJlc29sdmVM
b2NhbGUoc3RhdGUsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIG9wdCwgcmVs
ZXZhbnRFeHRlbnNpb25LZXlzLCBXVEZfQVJSQVlfTEVOR1RIKHJlbGV2YW50RXh0ZW5zaW9uS2V5
cyksIEludGxORkludGVybmFsOjpsb2NhbGVEYXRhKTsKIAogICAgIC8vIDEzLiBTZXQgbnVtYmVy
Rm9ybWF0LltbbG9jYWxlXV0gdG8gdGhlIHZhbHVlIG9mIHIuW1tsb2NhbGVdXS4KICAgICBtX2xv
Y2FsZSA9IHJlc3VsdC5nZXQoQVNDSUlMaXRlcmFsKCJsb2NhbGUiKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Q29uc3RydWN0b3Jz
LmNwcAppbmRleCAwYWJjNTMwODY5N2ViMjUzNDFmYWQxMmYwM2RlMDhjMGExZjE1ZjQ1Li43OGM5
ZTY0MDRmMWJmMWQzOWQ1NjQ4Y2Q0YTQ5ZWM0NmMyYTA2MDAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5j
cHAKQEAgLTMyLDYgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyN1bmRlZiBNQUtFX1Nf
SU5GTwogI2RlZmluZSBNQUtFX1NfSU5GTyh0eXBlKSBcCiAgICAgdGVtcGxhdGU8PiBjb25zdCBD
bGFzc0luZm8gSlMjI3R5cGUjI0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7IkZ1bmN0aW9uIiwgJkpT
IyN0eXBlIyNDb25zdHJ1Y3Rvcjo6QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTIyN0eXBlIyNDb25zdHJ1Y3Rvcil9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5UHJvdG90eXBlcy5jcHAK
aW5kZXggNjZkNzRlNjllY2E0ZjE3MjVlODJjMTJlYWQzYWRkZTI0YmU5MjlmYS4uYjE0MzQ1NWIw
ZDExY2QzOTJlNTIxYzBiOGIwYTgyYTAzMmE4NGI3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5UHJvdG90eXBlcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5UHJvdG90eXBlcy5jcHAKQEAgLTM1
LDYgKzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjb25zdCBDbGFzc0luZm8gSlNUeXBlZEFycmF5
Vmlld1Byb3RvdHlwZTo6c19pbmZvID0geyJQcm90b3R5cGUiLCAmSlNUeXBlZEFycmF5Vmlld1By
b3RvdHlwZTo6QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLAogICAgIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZSl9OwogCisjdW5kZWYgTUFLRV9TX0lO
Rk8KICNkZWZpbmUgTUFLRV9TX0lORk8odHlwZSkgXAogICAgIHRlbXBsYXRlPD4gY29uc3QgQ2xh
c3NJbmZvIEpTIyN0eXBlIyNQcm90b3R5cGU6OnNfaW5mbyA9IHsjdHlwZSAiUHJvdG90eXBlIiwg
JkpTIyN0eXBlIyNQcm90b3R5cGU6OkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKUyMjdHlwZSMjUHJvdG90eXBlKX0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5cy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlzLmNwcAppbmRleCBkMGE5M2M0MjU1NzQ4
ZTdlNTg0MWE2Nzg4MWExMTI0YTQ2NjlkMGQ2Li4wOTE4OWQyYzVjYTViNTM1ZGE0MzMzMTQ2OTM0
YmVjZmQzMDNmNWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGVkQXJyYXlzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVkQXJyYXlzLmNwcApAQCAtMzIsNiArMzIsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorI3Vu
ZGVmIE1BS0VfU19JTkZPCiAjZGVmaW5lIE1BS0VfU19JTkZPKHR5cGUpIFwKICAgICB0ZW1wbGF0
ZTw+IGNvbnN0IENsYXNzSW5mbyBKUyMjdHlwZSMjQXJyYXk6OnNfaW5mbyA9IHsgXAogICAgICAg
ICAjdHlwZSAiQXJyYXkiLCAmSlMjI3R5cGUjI0FycmF5OjpCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bGxHZXR0ZXJGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxs
R2V0dGVyRnVuY3Rpb24uY3BwCmluZGV4IDNmNmYyODIxNTNlMDRiMzNiMTBkOTM0MDk2Y2Q1YjE2
MjQ2ZjEwY2EuLmJhNDZiMzAyYzgyYTQyYjdiZjZkZGQ4OGYwNDZkZTQ4NWQ4NjAxZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxHZXR0ZXJGdW5jdGlvbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbEdldHRlckZ1bmN0aW9u
LmNwcApAQCAtMzMsMTQgKzMzLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0lu
Zm8gTnVsbEdldHRlckZ1bmN0aW9uOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoTnVsbEdldHRlckZ1bmN0
aW9uKSB9OwogCituYW1lc3BhY2UgTnVsbEdldHRlckZ1bmN0aW9uSW50ZXJuYWwgewogc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJldHVyblVuZGVmaW5lZChFeGVjU3Rh
dGUqKQogewogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9Cit9
CiAKIENhbGxUeXBlIE51bGxHZXR0ZXJGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2Fs
bERhdGEmIGNhbGxEYXRhKQogewotICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxS
ZXR1cm5VbmRlZmluZWQ7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gTnVsbEdldHRl
ckZ1bmN0aW9uSW50ZXJuYWw6OmNhbGxSZXR1cm5VbmRlZmluZWQ7CiAgICAgcmV0dXJuIENhbGxU
eXBlOjpIb3N0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TnVsbFNldHRlckZ1bmN0aW9uLmNwcAppbmRleCA1MGM1YjgwZGNmOTVhNTM5MGQxZTYwMTAxZWVi
ZDZiNTY2NjU5ZjI4Li42YWYwZDFhODVkZjIwZmYwODFhOTg3Y2ZkZGRhNjdkNTFhYjZlMGU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5j
dGlvbi5jcHAKQEAgLTcwLDYgKzcwLDcgQEAgc3RhdGljIGJvb2wgY2FsbGVySXNTdHJpY3QoRXhl
Y1N0YXRlKiBleGVjKQogICAgIHJldHVybiBpdGVyLmNhbGxlcklzU3RyaWN0KCk7CiB9CiAKK25h
bWVzcGFjZSBOdWxsU2V0dGVyRnVuY3Rpb25JbnRlcm5hbCB7CiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsUmV0dXJuVW5kZWZpbmVkKEV4ZWNTdGF0ZSogZXhlYykKIHsK
ICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtNzksMTAgKzgwLDExIEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZXR1cm5VbmRlZmluZWQoRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIlNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEg
Z2V0dGVyIikpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQorfQogCiBDYWxsVHlwZSBOdWxsU2V0dGVyRnVuY3Rpb246OmdldENhbGxEYXRhKEpTQ2VsbCos
IENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKLSAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBj
YWxsUmV0dXJuVW5kZWZpbmVkOworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IE51bGxT
ZXR0ZXJGdW5jdGlvbkludGVybmFsOjpjYWxsUmV0dXJuVW5kZWZpbmVkOwogICAgIHJldHVybiBD
YWxsVHlwZTo6SG9zdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlclByb3RvdHlwZS5jcHAKaW5kZXggYzE3YjVlYmRmYTEyYTBmM2VjYjYyZTY2OGE2Njlm
M2JhZDdlN2M1OC4uNjEzY2QwOTI1ZWI1NjcwMTlkMDRkOGU1OTQ4ZmEyMzhmOTRiMDk0OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3Bw
CkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvZHRvYS9kb3VibGUtY29udmVyc2lvbi5oPgogCi11c2luZyBuYW1lc3BhY2UgV1RGOjpk
b3VibGVfY29udmVyc2lvbjsKK3VzaW5nIERvdWJsZVRvU3RyaW5nQ29udmVydGVyID0gV1RGOjpk
b3VibGVfY29udmVyc2lvbjo6RG91YmxlVG9TdHJpbmdDb252ZXJ0ZXI7CiAKIC8vIFRvIGF2b2lk
IGNvbmZsaWN0IHdpdGggV1RGOjpTdHJpbmdCdWlsZGVyLgogdHlwZWRlZiBXVEY6OmRvdWJsZV9j
b252ZXJzaW9uOjpTdHJpbmdCdWlsZGVyIERvdWJsZUNvbnZlcnNpb25TdHJpbmdCdWlsZGVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZURlZmVycmVk
VGltZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZURlZmVycmVk
VGltZXIuY3BwCmluZGV4IDNkY2FlYWFmZTViMzhmYmE1YmE4YWY5NzY2MGY1MWJjNjU5ZmQyNDUu
LjA4NzgwNDY5NWNkZjM1YTc0OTRiYmQ1ODk0NDI5MDRlYjljYTcwMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VEZWZlcnJlZFRpbWVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlRGVmZXJyZWRUaW1lci5jcHAK
QEAgLTM0LDcgKzM0LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK25hbWVzcGFjZSBQcm9taXNl
RGVmZXJyZWRUaW1lckludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxz
ZTsKK30KIAogUHJvbWlzZURlZmVycmVkVGltZXI6OlByb21pc2VEZWZlcnJlZFRpbWVyKFZNJiB2
bSkKICAgICA6IEJhc2UoJnZtKQpAQCAtNTUsNyArNTcsNyBAQCB2b2lkIFByb21pc2VEZWZlcnJl
ZFRpbWVyOjpkb1dvcmsoKQogICAgICAgICBKU1Byb21pc2VEZWZlcnJlZCogdGlja2V0OwogICAg
ICAgICBUYXNrIHRhc2s7CiAgICAgICAgIHN0ZDo6dGllKHRpY2tldCwgdGFzaykgPSBtX3Rhc2tz
LnRha2VMYXN0KCk7Ci0gICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJEb2luZyB3b3JrIG9u
IHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CisgICAgICAgIGRhdGFMb2dMbklmKFBy
b21pc2VEZWZlcnJlZFRpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJEb2luZyB3b3JrIG9uIHByb21p
c2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CiAKICAgICAgICAgLy8gV2UgbWF5IGhhdmUgYWxy
ZWFkeSBjYW5jZWxlZCB0aGVzZSBwcm9taXNlcy4KICAgICAgICAgaWYgKG1fcGVuZGluZ1Byb21p
c2VzLmNvbnRhaW5zKHRpY2tldCkpIHsKQEAgLTEwNSwxMSArMTA3LDExIEBAIHZvaWQgUHJvbWlz
ZURlZmVycmVkVGltZXI6OmFkZFBlbmRpbmdQcm9taXNlKEpTUHJvbWlzZURlZmVycmVkKiB0aWNr
ZXQsIFZlY3RvcjxTCiAKICAgICBhdXRvIHJlc3VsdCA9IG1fcGVuZGluZ1Byb21pc2VzLmFkZCh0
aWNrZXQsIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4oKSk7CiAgICAgaWYgKHJlc3VsdC5pc05ld0Vu
dHJ5KSB7Ci0gICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJBZGRpbmcgbmV3IHBlbmRpbmcg
cHJvbWlzZTogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoUHJv
bWlzZURlZmVycmVkVGltZXJJbnRlcm5hbDo6dmVyYm9zZSwgIkFkZGluZyBuZXcgcGVuZGluZyBw
cm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwogICAgICAgICBkZXBlbmRlbmNpZXMuYXBw
ZW5kKFN0cm9uZzxKU0NlbGw+KCptX3ZtLCB0aWNrZXQpKTsKICAgICAgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IFdURk1vdmUoZGVwZW5kZW5jaWVzKTsKICAgICB9IGVsc2UgewotICAgICAg
ICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiQWRkaW5nIG5ldyBkZXBlbmRlbmNpZXMgZm9yIHByb21p
c2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CisgICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VE
ZWZlcnJlZFRpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJBZGRpbmcgbmV3IGRlcGVuZGVuY2llcyBm
b3IgcHJvbWlzZTogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKICAgICAgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZS5hcHBlbmRWZWN0b3IoZGVwZW5kZW5jaWVzKTsKICAgICB9CiAKQEAgLTEyNCw3
ICsxMjYsNyBAQCBib29sIFByb21pc2VEZWZlcnJlZFRpbWVyOjpjYW5jZWxQZW5kaW5nUHJvbWlz
ZShKU1Byb21pc2VEZWZlcnJlZCogdGlja2V0KQogICAgIGJvb2wgcmVzdWx0ID0gbV9wZW5kaW5n
UHJvbWlzZXMucmVtb3ZlKHRpY2tldCk7CiAKICAgICBpZiAocmVzdWx0KQotICAgICAgICBkYXRh
TG9nTG5JZih2ZXJib3NlLCAiQ2FuY2VsaW5nIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0
KSk7CisgICAgICAgIGRhdGFMb2dMbklmKFByb21pc2VEZWZlcnJlZFRpbWVySW50ZXJuYWw6OnZl
cmJvc2UsICJDYW5jZWxpbmcgcHJvbWlzZTogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKIAogICAg
IHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlUHJvZmlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlw
ZVByb2ZpbGVyLmNwcAppbmRleCBlMzE1YzQxMmI5MzMzMGIwNWFmNjY0MDcwY2ExMTZjZDUzZTky
ZGI3Li4wZjg1ZWY4ODI4NWMyZThiODFkNWZmMDBiY2FhMmI5OWNmNmRjODBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlci5jcHAKQEAgLTMyLDcgKzMy
LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK25hbWVzcGFjZSBUeXBlUHJvZmlsZXJJbnRlcm5h
bCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIFR5cGVQcm9maWxl
cjo6VHlwZVByb2ZpbGVyKCkKICAgICA6IG1fbmV4dFVuaXF1ZVZhcmlhYmxlSUQoMSkKQEAgLTU5
LDcgKzYxLDcgQEAgdm9pZCBUeXBlUHJvZmlsZXI6OmxvZ1R5cGVzRm9yVHlwZUxvY2F0aW9uKFR5
cGVMb2NhdGlvbiogbG9jYXRpb24sIFZNJiB2bSkKIAogdm9pZCBUeXBlUHJvZmlsZXI6Omluc2Vy
dE5ld0xvY2F0aW9uKFR5cGVMb2NhdGlvbiogbG9jYXRpb24pCiB7Ci0gICAgaWYgKHZlcmJvc2Up
CisgICAgaWYgKFR5cGVQcm9maWxlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9n
RigiUmVnaXN0ZXJpbmcgbG9jYXRpb246OiBkaXZvdFN0YXJ0OiV1LCBkaXZvdEVuZDoldVxuIiwg
bG9jYXRpb24tPm1fZGl2b3RTdGFydCwgbG9jYXRpb24tPm1fZGl2b3RFbmQpOwogCiAgICAgaWYg
KCFtX2J1Y2tldE1hcC5jb250YWlucyhsb2NhdGlvbi0+bV9zb3VyY2VJRCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwCmluZGV4IDg1
YzQ5ZDA0NmJhZmVhYzdjMmZkZWEyMTUyNThkM2M0NGVmY2QxMTUuLjUzZDczZTg4YjE0ZTM4NmI3
Mzc4Yjg4MjQ3Yjc3Njk2NGY2YjU3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcApAQCAtMzcsNyArMzcsOSBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorbmFtZXNwYWNlIFR5cGVQcm9maWxlckxvZ0ludGVybmFsIHsKIHN0YXRpYyBj
b25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogdm9pZCBUeXBlUHJvZmlsZXJMb2c6Omlu
aXRpYWxpemVMb2coKQogewpAQCAtNTYsNyArNTgsNyBAQCBUeXBlUHJvZmlsZXJMb2c6On5UeXBl
UHJvZmlsZXJMb2coKQogdm9pZCBUeXBlUHJvZmlsZXJMb2c6OnByb2Nlc3NMb2dFbnRyaWVzKGNv
bnN0IFN0cmluZyYgcmVhc29uKQogewogICAgIGRvdWJsZSBiZWZvcmUgPSAwOwotICAgIGlmICh2
ZXJib3NlKSB7CisgICAgaWYgKFR5cGVQcm9maWxlckxvZ0ludGVybmFsOjp2ZXJib3NlKSB7CiAg
ICAgICAgIGRhdGFMb2coIlByb2Nlc3MgY2FsbGVyOiciLCByZWFzb24sICInIik7CiAgICAgICAg
IGJlZm9yZSA9IGN1cnJlbnRUaW1lTVMoKTsKICAgICB9CkBAIC05NSw3ICs5Nyw3IEBAIHZvaWQg
VHlwZVByb2ZpbGVyTG9nOjpwcm9jZXNzTG9nRW50cmllcyhjb25zdCBTdHJpbmcmIHJlYXNvbikK
ICAgICAvLyBwYXVzZXMgYW5kIGNhdXNlcyB0aGUgY29sbGVjdG9yIHRvIG1hcmsgdGhlIGxvZy4K
ICAgICBtX2N1cnJlbnRMb2dFbnRyeVB0ciA9IG1fbG9nU3RhcnRQdHI7CiAKLSAgICBpZiAodmVy
Ym9zZSkgeworICAgIGlmIChUeXBlUHJvZmlsZXJMb2dJbnRlcm5hbDo6dmVyYm9zZSkgewogICAg
ICAgICBkb3VibGUgYWZ0ZXIgPSBjdXJyZW50VGltZU1TKCk7CiAgICAgICAgIGRhdGFMb2dGKCIg
UHJvY2Vzc2luZyB0aGUgbG9nIHRvb2s6ICclZicgbXNcbiIsIGFmdGVyIC0gYmVmb3JlKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVy
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5j
cHAKaW5kZXggMDBhYzNjMWFkYmQ3YWM4MmQyMTU5MGY2MDEyOGI5NGE0MDBjNjI4ZS4uYWQ3ZDYy
MWVjODc4ODVhYzAzNmQ4MTMxM2Q1YjBmYTA5MWE0ZWY5OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtNzYsNyArNzYsOSBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogdXNpbmcgbmFtZXNwYWNlIEIzOwogCiBu
YW1lc3BhY2UgewotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgV2FzbUIz
SVJHZW5lcmF0b3JJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7
Cit9CiB9CiAKIGNsYXNzIEIzSVJHZW5lcmF0b3IgewpAQCAtMTU2Niw5ICsxNTY4LDkgQEAgRXhw
ZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+LCBTdHJpbmc+IHBhcnNlQW5k
Q29tcGlsZShDb21waWxhdGlvbkMKICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkKICAgICAgICAg
dmFsaWRhdGUocHJvY2VkdXJlLCAiQWZ0ZXIgcGFyc2luZzpcbiIpOwogCi0gICAgZGF0YUxvZ0lm
KHZlcmJvc2UsICJQcmUgU1NBOiAiLCBwcm9jZWR1cmUpOworICAgIGRhdGFMb2dJZihXYXNtQjNJ
UkdlbmVyYXRvckludGVybmFsOjp2ZXJib3NlLCAiUHJlIFNTQTogIiwgcHJvY2VkdXJlKTsKICAg
ICBmaXhTU0EocHJvY2VkdXJlKTsKLSAgICBkYXRhTG9nSWYodmVyYm9zZSwgIlBvc3QgU1NBOiAi
LCBwcm9jZWR1cmUpOworICAgIGRhdGFMb2dJZihXYXNtQjNJUkdlbmVyYXRvckludGVybmFsOjp2
ZXJib3NlLCAiUG9zdCBTU0E6ICIsIHByb2NlZHVyZSk7CiAgICAgCiAgICAgewogICAgICAgICBC
Mzo6cHJlcGFyZUZvckdlbmVyYXRpb24ocHJvY2VkdXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CQlFQbGFuLmNwcAppbmRleCA1MGZlYjczMGIwMGZkZDlkMGYwMTZlMzY2OTA4
MTA3MjJkYmFkYjE1Li4yMmVkZDE2MDEzZTUxOTZmZTc0YWJkZDg0MGM2ZTRiY2M5NzUwZDBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCkBAIC00OSw3ICs0
OSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKK25hbWVzcGFjZSBX
YXNtQkJRUGxhbkludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsK
K30KIAogQkJRUGxhbjo6QkJRUGxhbihWTSogdm0sIFJlZjxNb2R1bGVJbmZvcm1hdGlvbj4gaW5m
bywgQXN5bmNXb3JrIHdvcmssIENvbXBsZXRpb25UYXNrJiYgdGFzaykKICAgICA6IEJhc2Uodm0s
IFdURk1vdmUoaW5mbyksIFdURk1vdmUodGFzaykpCkBAIC04Niw3ICs4OCw3IEBAIGNvbnN0IGNo
YXIqIEJCUVBsYW46OnN0YXRlU3RyaW5nKFN0YXRlIHN0YXRlKQogdm9pZCBCQlFQbGFuOjptb3Zl
VG9TdGF0ZShTdGF0ZSBzdGF0ZSkKIHsKICAgICBBU1NFUlQoc3RhdGUgPj0gbV9zdGF0ZSk7Ci0g
ICAgZGF0YUxvZ0xuSWYodmVyYm9zZSAmJiBzdGF0ZSAhPSBtX3N0YXRlLCAibW92aW5nIHRvIHN0
YXRlOiAiLCBzdGF0ZVN0cmluZyhzdGF0ZSksICIgZnJvbSBzdGF0ZTogIiwgc3RhdGVTdHJpbmco
bV9zdGF0ZSkpOworICAgIGRhdGFMb2dMbklmKFdhc21CQlFQbGFuSW50ZXJuYWw6OnZlcmJvc2Ug
JiYgc3RhdGUgIT0gbV9zdGF0ZSwgIm1vdmluZyB0byBzdGF0ZTogIiwgc3RhdGVTdHJpbmcoc3Rh
dGUpLCAiIGZyb20gc3RhdGU6ICIsIHN0YXRlU3RyaW5nKG1fc3RhdGUpKTsKICAgICBtX3N0YXRl
ID0gc3RhdGU7CiB9CiAKQEAgLTk1LDkgKzk3LDkgQEAgYm9vbCBCQlFQbGFuOjpwYXJzZUFuZFZh
bGlkYXRlTW9kdWxlKCkKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6SW5pdGlhbCkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAic3RhcnRpbmcgdmFs
aWRhdGlvbiIpOworICAgIGRhdGFMb2dMbklmKFdhc21CQlFQbGFuSW50ZXJuYWw6OnZlcmJvc2Us
ICJzdGFydGluZyB2YWxpZGF0aW9uIik7CiAgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWU7Ci0g
ICAgaWYgKHZlcmJvc2UgfHwgT3B0aW9uczo6cmVwb3J0Q29tcGlsZVRpbWVzKCkpCisgICAgaWYg
KFdhc21CQlFQbGFuSW50ZXJuYWw6OnZlcmJvc2UgfHwgT3B0aW9uczo6cmVwb3J0Q29tcGlsZVRp
bWVzKCkpCiAgICAgICAgIHN0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAgICAg
ewpAQCAtMTExLDcgKzExMyw3IEBAIGJvb2wgQkJRUGxhbjo6cGFyc2VBbmRWYWxpZGF0ZU1vZHVs
ZSgpCiAKICAgICBjb25zdCBhdXRvJiBmdW5jdGlvbkxvY2F0aW9ucyA9IG1fbW9kdWxlSW5mb3Jt
YXRpb24tPmZ1bmN0aW9uTG9jYXRpb25JbkJpbmFyeTsKICAgICBmb3IgKHVuc2lnbmVkIGZ1bmN0
aW9uSW5kZXggPSAwOyBmdW5jdGlvbkluZGV4IDwgZnVuY3Rpb25Mb2NhdGlvbnMuc2l6ZSgpOyAr
K2Z1bmN0aW9uSW5kZXgpIHsKLSAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIlByb2Nlc3Np
bmcgZnVuY3Rpb24gc3RhcnRpbmcgYXQ6ICIsIGZ1bmN0aW9uTG9jYXRpb25zW2Z1bmN0aW9uSW5k
ZXhdLnN0YXJ0LCAiIGFuZCBlbmRpbmcgYXQ6ICIsIGZ1bmN0aW9uTG9jYXRpb25zW2Z1bmN0aW9u
SW5kZXhdLmVuZCk7CisgICAgICAgIGRhdGFMb2dMbklmKFdhc21CQlFQbGFuSW50ZXJuYWw6OnZl
cmJvc2UsICJQcm9jZXNzaW5nIGZ1bmN0aW9uIHN0YXJ0aW5nIGF0OiAiLCBmdW5jdGlvbkxvY2F0
aW9uc1tmdW5jdGlvbkluZGV4XS5zdGFydCwgIiBhbmQgZW5kaW5nIGF0OiAiLCBmdW5jdGlvbkxv
Y2F0aW9uc1tmdW5jdGlvbkluZGV4XS5lbmQpOwogICAgICAgICBjb25zdCB1aW50OF90KiBmdW5j
dGlvblN0YXJ0ID0gbV9zb3VyY2UgKyBmdW5jdGlvbkxvY2F0aW9uc1tmdW5jdGlvbkluZGV4XS5z
dGFydDsKICAgICAgICAgc2l6ZV90IGZ1bmN0aW9uTGVuZ3RoID0gZnVuY3Rpb25Mb2NhdGlvbnNb
ZnVuY3Rpb25JbmRleF0uZW5kIC0gZnVuY3Rpb25Mb2NhdGlvbnNbZnVuY3Rpb25JbmRleF0uc3Rh
cnQ7CiAgICAgICAgIEFTU0VSVChmdW5jdGlvbkxlbmd0aCA8PSBtX3NvdXJjZUxlbmd0aCk7CkBA
IC0xMjAsNyArMTIyLDcgQEAgYm9vbCBCQlFQbGFuOjpwYXJzZUFuZFZhbGlkYXRlTW9kdWxlKCkK
IAogICAgICAgICBhdXRvIHZhbGlkYXRpb25SZXN1bHQgPSB2YWxpZGF0ZUZ1bmN0aW9uKGZ1bmN0
aW9uU3RhcnQsIGZ1bmN0aW9uTGVuZ3RoLCBzaWduYXR1cmUsIG1fbW9kdWxlSW5mb3JtYXRpb24u
Z2V0KCkpOwogICAgICAgICBpZiAoIXZhbGlkYXRpb25SZXN1bHQpIHsKLSAgICAgICAgICAgIGlm
ICh2ZXJib3NlKSB7CisgICAgICAgICAgICBpZiAoV2FzbUJCUVBsYW5JbnRlcm5hbDo6dmVyYm9z
ZSkgewogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmdW5jdGlvbkxl
bmd0aDsgKytpKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIocmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oZnVuY3Rpb25TdGFydFtpXSkpLCAiLCAiKTsKICAgICAgICAgICAg
ICAgICBkYXRhTG9nTG4oKTsKQEAgLTEzMCw3ICsxMzIsNyBAQCBib29sIEJCUVBsYW46OnBhcnNl
QW5kVmFsaWRhdGVNb2R1bGUoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHZlcmJvc2Ug
fHwgT3B0aW9uczo6cmVwb3J0Q29tcGlsZVRpbWVzKCkpCisgICAgaWYgKFdhc21CQlFQbGFuSW50
ZXJuYWw6OnZlcmJvc2UgfHwgT3B0aW9uczo6cmVwb3J0Q29tcGlsZVRpbWVzKCkpCiAgICAgICAg
IGRhdGFMb2dMbigiVG9vayAiLCAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydFRpbWUpLm1p
Y3Jvc2Vjb25kcygpLCAiIHVzIHRvIHZhbGlkYXRlIG1vZHVsZSIpOwogCiAgICAgbW92ZVRvU3Rh
dGUoU3RhdGU6OlZhbGlkYXRlZCk7CkBAIC0xNDIsNyArMTQ0LDcgQEAgYm9vbCBCQlFQbGFuOjpw
YXJzZUFuZFZhbGlkYXRlTW9kdWxlKCkKIHZvaWQgQkJRUGxhbjo6cHJlcGFyZSgpCiB7CiAgICAg
QVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlZhbGlkYXRlZCk7Ci0gICAgZGF0YUxvZ0xuSWYodmVy
Ym9zZSwgIlN0YXJ0aW5nIHByZXBhcmF0aW9uIik7CisgICAgZGF0YUxvZ0xuSWYoV2FzbUJCUVBs
YW5JbnRlcm5hbDo6dmVyYm9zZSwgIlN0YXJ0aW5nIHByZXBhcmF0aW9uIik7CiAKICAgICBhdXRv
IHRyeVJlc2VydmVDYXBhY2l0eSA9IFt0aGlzXSAoYXV0byYgdmVjdG9yLCBzaXplX3Qgc2l6ZSwg
Y29uc3QgY2hhciogd2hhdCkgewogICAgICAgICBpZiAoVU5MSUtFTFkoIXZlY3Rvci50cnlSZXNl
cnZlQ2FwYWNpdHkoc2l6ZSkpKSB7CkBAIC0xNzQsNyArMTc2LDcgQEAgdm9pZCBCQlFQbGFuOjpw
cmVwYXJlKCkKICAgICAgICAgaWYgKGltcG9ydC0+a2luZCAhPSBFeHRlcm5hbEtpbmQ6OkZ1bmN0
aW9uKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIHVuc2lnbmVkIGltcG9ydEZ1bmN0
aW9uSW5kZXggPSBtX3dhc21Ub1dhc21FeGl0U3R1YnMuc2l6ZSgpOwotICAgICAgICBkYXRhTG9n
TG5JZih2ZXJib3NlLCAiUHJvY2Vzc2luZyBpbXBvcnQgZnVuY3Rpb24gbnVtYmVyICIsIGltcG9y
dEZ1bmN0aW9uSW5kZXgsICI6ICIsIG1ha2VTdHJpbmcoaW1wb3J0LT5tb2R1bGUpLCAiOiAiLCBt
YWtlU3RyaW5nKGltcG9ydC0+ZmllbGQpKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbUJCUVBs
YW5JbnRlcm5hbDo6dmVyYm9zZSwgIlByb2Nlc3NpbmcgaW1wb3J0IGZ1bmN0aW9uIG51bWJlciAi
LCBpbXBvcnRGdW5jdGlvbkluZGV4LCAiOiAiLCBtYWtlU3RyaW5nKGltcG9ydC0+bW9kdWxlKSwg
IjogIiwgbWFrZVN0cmluZyhpbXBvcnQtPmZpZWxkKSk7CiAgICAgICAgIGF1dG8gYmluZGluZyA9
IHdhc21Ub1dhc20oaW1wb3J0RnVuY3Rpb25JbmRleCk7CiAgICAgICAgIGlmIChVTkxJS0VMWSgh
YmluZGluZykpIHsKICAgICAgICAgICAgIHN3aXRjaCAoYmluZGluZy5lcnJvcigpKSB7CkBAIC0y
MzAsNyArMjMyLDcgQEAgcHVibGljOgogdm9pZCBCQlFQbGFuOjpjb21waWxlRnVuY3Rpb25zKENv
bXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA+PSBTdGF0ZTo6
UHJlcGFyZWQpOwotICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJTdGFydGluZyBjb21waWxhdGlv
biIpOworICAgIGRhdGFMb2dMbklmKFdhc21CQlFQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJTdGFy
dGluZyBjb21waWxhdGlvbiIpOwogCiAgICAgaWYgKCFoYXNXb3JrKCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTI5NCw3ICsyOTYsNyBAQCB2b2lkIEJCUVBsYW46OmNvbXBpbGVGdW5jdGlvbnMoQ29t
cGlsYXRpb25FZmZvcnQgZWZmb3J0KQogdm9pZCBCQlFQbGFuOjpjb21wbGV0ZShjb25zdCBBYnN0
cmFjdExvY2tlciYgbG9ja2VyKQogewogICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpDb21w
aWxlZCB8fCBtX2N1cnJlbnRJbmRleCA+PSBtX21vZHVsZUluZm9ybWF0aW9uLT5mdW5jdGlvbkxv
Y2F0aW9uSW5CaW5hcnkuc2l6ZSgpKTsKLSAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiU3RhcnRp
bmcgQ29tcGxldGlvbiIpOworICAgIGRhdGFMb2dMbklmKFdhc21CQlFQbGFuSW50ZXJuYWw6OnZl
cmJvc2UsICJTdGFydGluZyBDb21wbGV0aW9uIik7CiAKICAgICBpZiAoIWZhaWxlZCgpICYmIG1f
c3RhdGUgPT0gU3RhdGU6OkNvbXBpbGVkKSB7CiAgICAgICAgIGZvciAodWludDMyX3QgZnVuY3Rp
b25JbmRleCA9IDA7IGZ1bmN0aW9uSW5kZXggPCBtX21vZHVsZUluZm9ybWF0aW9uLT5mdW5jdGlv
bkxvY2F0aW9uSW5CaW5hcnkuc2l6ZSgpOyBmdW5jdGlvbkluZGV4KyspIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKaW5k
ZXggZTg2ZmQ0Nzk5MGU4ODg4ZDI2ZmRkZmE3Mzk0ZTQ3NmFiY2M4MDE4NC4uMmIxZDgyOGUyN2M3
NTM1MGZkZDk0ZmMxOTVjZTY0ZDdjMWVjNWE2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKQEAgLTQyLDggKzQyLDEw
IEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCiBuYW1lc3BhY2UgeworbmFt
ZXNwYWNlIFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9v
bCB2ZXJib3NlID0gZmFsc2U7CiB9Cit9CiAKIHN0YXRpYyBTdGF0aWNMb2NrIGNvZGVMb2NhdGlv
bnNMb2NrOwogc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxIYXNoU2V0PHN0ZDo6dHVwbGU8dm9p
ZCosIHZvaWQqPj4+IGNvZGVMb2NhdGlvbnM7IC8vIChzdGFydCwgZW5kKQpAQCAtNTUsMzMgKzU3
LDMzIEBAIHN0YXRpYyBib29sIGZhc3RIYW5kbGVySW5zdGFsbGVkIHsgZmFsc2UgfTsKIHN0YXRp
YyBTaWduYWxBY3Rpb24gdHJhcEhhbmRsZXIoU2lnbmFsLCBTaWdJbmZvJiBzaWdJbmZvLCBQbGF0
Zm9ybVJlZ2lzdGVycyYgY29udGV4dCkKIHsKICAgICB2b2lkKiBmYXVsdGluZ0luc3RydWN0aW9u
ID0gTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihjb250ZXh0KTsKLSAgICBkYXRh
TG9nTG5JZih2ZXJib3NlLCAic3RhcnRpbmcgaGFuZGxlciBmb3IgZmF1bHQgYXQ6ICIsIFJhd1Bv
aW50ZXIoZmF1bHRpbmdJbnN0cnVjdGlvbikpOworICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNp
Z25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgInN0YXJ0aW5nIGhhbmRsZXIgZm9yIGZhdWx0
IGF0OiAiLCBSYXdQb2ludGVyKGZhdWx0aW5nSW5zdHJ1Y3Rpb24pKTsKIAotICAgIGRhdGFMb2dM
bklmKHZlcmJvc2UsICJKSVQgbWVtb3J5IHN0YXJ0OiAiLCBSYXdQb2ludGVyKHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHN0YXJ0T2ZGaXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sKSksICIgZW5kOiAi
LCBSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGVuZE9mRml4ZWRFeGVjdXRhYmxl
TWVtb3J5UG9vbCkpKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50
ZXJuYWw6OnZlcmJvc2UsICJKSVQgbWVtb3J5IHN0YXJ0OiAiLCBSYXdQb2ludGVyKHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KHN0YXJ0T2ZGaXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sKSksICIgZW5k
OiAiLCBSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGVuZE9mRml4ZWRFeGVjdXRh
YmxlTWVtb3J5UG9vbCkpKTsKICAgICAvLyBGaXJzdCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBh
cmUgaW4gSklUIGNvZGUgYmVmb3JlIHdlIGNhbiBhcXVpcmUgYW55IGxvY2tzLiBPdGhlcndpc2Us
CiAgICAgLy8gd2UgbWlnaHQgaGF2ZSBjcmFzaGVkIGluIGNvZGUgdGhhdCBpcyBhbHJlYWR5IGhv
bGRpbmcgb25lIG9mIHRoZSBsb2NrcyB3ZSB3YW50IHRvIGFxdWlyZS4KICAgICBpZiAoaXNKSVRQ
QyhmYXVsdGluZ0luc3RydWN0aW9uKSkgewogICAgICAgICBib29sIGZhdWx0ZWRJbkFjdGl2ZUZh
c3RNZW1vcnkgPSBmYWxzZTsKICAgICAgICAgewogICAgICAgICAgICAgdm9pZCogZmF1bHRpbmdB
ZGRyZXNzID0gc2lnSW5mby5mYXVsdGluZ0FkZHJlc3M7Ci0gICAgICAgICAgICBkYXRhTG9nTG5J
Zih2ZXJib3NlLCAiY2hlY2tpbmcgZmF1bHRpbmcgYWRkcmVzczogIiwgUmF3UG9pbnRlcihmYXVs
dGluZ0FkZHJlc3MpLCAiIGlzIGluIGFuIGFjdGl2ZSBmYXN0IG1lbW9yeSIpOworICAgICAgICAg
ICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAi
Y2hlY2tpbmcgZmF1bHRpbmcgYWRkcmVzczogIiwgUmF3UG9pbnRlcihmYXVsdGluZ0FkZHJlc3Mp
LCAiIGlzIGluIGFuIGFjdGl2ZSBmYXN0IG1lbW9yeSIpOwogICAgICAgICAgICAgZmF1bHRlZElu
QWN0aXZlRmFzdE1lbW9yeSA9IFdhc206Ok1lbW9yeTo6YWRkcmVzc0lzSW5BY3RpdmVGYXN0TWVt
b3J5KGZhdWx0aW5nQWRkcmVzcyk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGZhdWx0ZWRJbkFj
dGl2ZUZhc3RNZW1vcnkpIHsKLSAgICAgICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJmb3Vu
ZCBhY3RpdmUgZmFzdCBtZW1vcnkgZm9yIGZhdWx0aW5nIGFkZHJlc3MiKTsKKyAgICAgICAgICAg
IGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZv
dW5kIGFjdGl2ZSBmYXN0IG1lbW9yeSBmb3IgZmF1bHRpbmcgYWRkcmVzcyIpOwogICAgICAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIoY29kZUxvY2F0aW9uc0xvY2spOwogICAgICAgICAgICAgZm9y
IChhdXRvIHJhbmdlIDogY29kZUxvY2F0aW9ucy5nZXQoKSkgewogICAgICAgICAgICAgICAgIHZv
aWQqIHN0YXJ0OwogICAgICAgICAgICAgICAgIHZvaWQqIGVuZDsKICAgICAgICAgICAgICAgICBz
dGQ6OnRpZShzdGFydCwgZW5kKSA9IHJhbmdlOwotICAgICAgICAgICAgICAgIGRhdGFMb2dMbklm
KHZlcmJvc2UsICJmdW5jdGlvbiBzdGFydDogIiwgUmF3UG9pbnRlcihzdGFydCksICIgZW5kOiAi
LCBSYXdQb2ludGVyKGVuZCkpOworICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVs
dFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZ1bmN0aW9uIHN0YXJ0OiAiLCBSYXdQ
b2ludGVyKHN0YXJ0KSwgIiBlbmQ6ICIsIFJhd1BvaW50ZXIoZW5kKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKHN0YXJ0IDw9IGZhdWx0aW5nSW5zdHJ1Y3Rpb24gJiYgZmF1bHRpbmdJbnN0cnVjdGlv
biA8IGVuZCkgewotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiZm91
bmQgbWF0Y2giKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2ln
bmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAiZm91bmQgbWF0Y2giKTsKICAgICAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV4Y2VwdGlvblN0dWIgPSBUaHVua3M6OnNp
bmdsZXRvbigpLmV4aXN0aW5nU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21XYXNtVGh1bmtHZW5lcmF0
b3IpOwogICAgICAgICAgICAgICAgICAgICAvLyBJZiBmb3Igd2hhdGV2ZXIgcmVhc29uIHdlIGRv
bid0IGhhdmUgYSBzdHViIHRoZW4gd2Ugc2hvdWxkIGp1c3QgdHJlYXQgdGhpcyBsaWtlIGEgcmVn
dWxhciBjcmFzaC4KICAgICAgICAgICAgICAgICAgICAgaWYgKCFleGNlcHRpb25TdHViKQogICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dM
bklmKHZlcmJvc2UsICJmb3VuZCBzdHViOiAiLCBSYXdQb2ludGVyKGV4Y2VwdGlvblN0dWIuY29k
ZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xu
SWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAiZm91bmQgc3R1Yjog
IiwgUmF3UG9pbnRlcihleGNlcHRpb25TdHViLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7
CiAgICAgICAgICAgICAgICAgICAgIE1hY2hpbmVDb250ZXh0Ojphcmd1bWVudFBvaW50ZXI8MT4o
Y29udGV4dCkgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihFeGNlcHRpb25UeXBlOjpPdXRPZkJv
dW5kc01lbW9yeUFjY2Vzcyk7CiAgICAgICAgICAgICAgICAgICAgIE1hY2hpbmVDb250ZXh0Ojpp
bnN0cnVjdGlvblBvaW50ZXIoY29udGV4dCkgPSBleGNlcHRpb25TdHViLmNvZGUoKS5leGVjdXRh
YmxlQWRkcmVzcygpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2lnbmFsQWN0aW9uOjpI
YW5kbGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1Bs
YW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCmluZGV4
IDU5MThmOTJiYjgwYmJkZWU1NDAxMDQ3MTMxZDgzMmJkMTk2YmY3NWIuLjc0Y2Y2NTM0OTc1MjVj
ZTI2MWQ0MGM3MmM0NjIzYWNkODBmNjVjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtT01HUGxhbi5jcHAKQEAgLTQ3LDcgKzQ3LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBXYXNtIHsKIAorbmFtZXNwYWNlIFdhc21PTUdQbGFuSW50ZXJuYWwgewogc3RhdGlj
IGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBPTUdQbGFuOjpPTUdQbGFuKFJlZjxN
b2R1bGU+IG1vZHVsZSwgdWludDMyX3QgZnVuY3Rpb25JbmRleCwgTWVtb3J5TW9kZSBtb2RlLCBD
b21wbGV0aW9uVGFzayYmIHRhc2spCiAgICAgOiBCYXNlKG51bGxwdHIsIG1ha2VSZWYoY29uc3Rf
Y2FzdDxNb2R1bGVJbmZvcm1hdGlvbiY+KG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKSkpLCBX
VEZNb3ZlKHRhc2spKQpAQCAtNTgsNyArNjAsNyBAQCBPTUdQbGFuOjpPTUdQbGFuKFJlZjxNb2R1
bGU+IG1vZHVsZSwgdWludDMyX3QgZnVuY3Rpb25JbmRleCwgTWVtb3J5TW9kZSBtb2RlLCBDbwog
ICAgIHNldE1vZGUobW9kZSk7CiAgICAgQVNTRVJUKG1fY29kZUJsb2NrLT5ydW5uYWJsZSgpKTsK
ICAgICBBU1NFUlQobV9jb2RlQmxvY2sucHRyKCkgPT0gbV9tb2R1bGUtPmNvZGVCbG9ja0Zvciht
X21vZGUpKTsKLSAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiU3RhcnRpbmcgT01HIHBsYW4gZm9y
ICIsIGZ1bmN0aW9uSW5kZXgsICIgb2YgbW9kdWxlOiAiLCBSYXdQb2ludGVyKCZtX21vZHVsZS5n
ZXQoKSkpOworICAgIGRhdGFMb2dMbklmKFdhc21PTUdQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJT
dGFydGluZyBPTUcgcGxhbiBmb3IgIiwgZnVuY3Rpb25JbmRleCwgIiBvZiBtb2R1bGU6ICIsIFJh
d1BvaW50ZXIoJm1fbW9kdWxlLmdldCgpKSk7CiB9CiAKIHZvaWQgT01HUGxhbjo6d29yayhDb21w
aWxhdGlvbkVmZm9ydCkKQEAgLTEzOCw5ICsxNDAsOSBAQCB2b2lkIE9NR1BsYW46OndvcmsoQ29t
cGlsYXRpb25FZmZvcnQpCiAKICAgICAgICAgYXV0byByZXBhdGNoQ2FsbHMgPSBbJl0gKGNvbnN0
IFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgIGNhbGxzaXRlcykgewogICAgICAgICAg
ICAgZm9yIChhdXRvJiBjYWxsIDogY2FsbHNpdGVzKSB7Ci0gICAgICAgICAgICAgICAgZGF0YUxv
Z0xuSWYodmVyYm9zZSwgIkNvbnNpZGVyaW5nIHJlcGF0Y2hpbmcgY2FsbCBhdDogIiwgUmF3UG9p
bnRlcihjYWxsLmNhbGxMb2NhdGlvbi5kYXRhTG9jYXRpb24oKSksICIgdGhhdCB0YXJnZXRzICIs
IGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihX
YXNtT01HUGxhbkludGVybmFsOjp2ZXJib3NlLCAiQ29uc2lkZXJpbmcgcmVwYXRjaGluZyBjYWxs
IGF0OiAiLCBSYXdQb2ludGVyKGNhbGwuY2FsbExvY2F0aW9uLmRhdGFMb2NhdGlvbigpKSwgIiB0
aGF0IHRhcmdldHMgIiwgY2FsbC5mdW5jdGlvbkluZGV4U3BhY2UpOwogICAgICAgICAgICAgICAg
IGlmIChjYWxsLmZ1bmN0aW9uSW5kZXhTcGFjZSA9PSBmdW5jdGlvbkluZGV4U3BhY2UpIHsKLSAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIlJlcGF0Y2hpbmcgY2FsbCBh
dDogIiwgUmF3UG9pbnRlcihjYWxsLmNhbGxMb2NhdGlvbi5kYXRhTG9jYXRpb24oKSksICIgdG8g
IiwgUmF3UG9pbnRlcihlbnRyeXBvaW50KSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dM
bklmKFdhc21PTUdQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJSZXBhdGNoaW5nIGNhbGwgYXQ6ICIs
IFJhd1BvaW50ZXIoY2FsbC5jYWxsTG9jYXRpb24uZGF0YUxvY2F0aW9uKCkpLCAiIHRvICIsIFJh
d1BvaW50ZXIoZW50cnlwb2ludCkpOwogICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6cmVwYXRjaE5lYXJDYWxsKGNhbGwuY2FsbExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbChl
bnRyeXBvaW50KSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMTU2LDcg
KzE1OCw3IEBAIHZvaWQgT01HUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkKICAgICAgICAg
cmVwYXRjaENhbGxzKHVubGlua2VkQ2FsbHMpOwogICAgIH0KIAotICAgIGRhdGFMb2dMbklmKHZl
cmJvc2UsICJGaW5pc2hlZCB3aXRoIHRpZXIgdXAgY291bnQgYXQ6ICIsIG1fY29kZUJsb2NrLT50
aWVyVXBDb3VudChtX2Z1bmN0aW9uSW5kZXgpLmNvdW50KCkpOworICAgIGRhdGFMb2dMbklmKFdh
c21PTUdQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJGaW5pc2hlZCB3aXRoIHRpZXIgdXAgY291bnQg
YXQ6ICIsIG1fY29kZUJsb2NrLT50aWVyVXBDb3VudChtX2Z1bmN0aW9uSW5kZXgpLmNvdW50KCkp
OwogICAgIGNvbXBsZXRlKGhvbGRMb2NrKG1fbG9jaykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtUGxhbi5jcHAKaW5kZXggMTQ4M2FjNzQ4OTJiMmYxNjQyYTZjYjM2MGJjNjQ5
ODdiY2Y1ZjExZi4uYmEyN2NmOWY5NmY1NTUwZjJmNDgxMmUwOTEyNGI1YmY4MTAwNWFjZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcApAQCAtNDcsNyArNDcsOSBAQAog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCituYW1lc3BhY2UgV2FzbVBsYW5J
bnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIFBsYW46
OlBsYW4oVk0qIHZtLCBSZWY8TW9kdWxlSW5mb3JtYXRpb24+IGluZm8sIENvbXBsZXRpb25UYXNr
JiYgdGFzaykKICAgICA6IG1fbW9kdWxlSW5mb3JtYXRpb24oV1RGTW92ZShpbmZvKSkKQEAgLTEy
OCw3ICsxMzAsNyBAQCBib29sIFBsYW46OnRyeVJlbW92ZVZNQW5kQ2FuY2VsSWZMYXN0KFZNJiB2
bSkKIAogdm9pZCBQbGFuOjpmYWlsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIFN0cmlu
ZyYmIGVycm9yTWVzc2FnZSkKIHsKLSAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiZmFpbGluZyB3
aXRoIG1lc3NhZ2U6ICIsIGVycm9yTWVzc2FnZSk7CisgICAgZGF0YUxvZ0xuSWYoV2FzbVBsYW5J
bnRlcm5hbDo6dmVyYm9zZSwgImZhaWxpbmcgd2l0aCBtZXNzYWdlOiAiLCBlcnJvck1lc3NhZ2Up
OwogICAgIG1fZXJyb3JNZXNzYWdlID0gV1RGTW92ZShlcnJvck1lc3NhZ2UpOwogICAgIGNvbXBs
ZXRlKGxvY2tlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtU2lnbmF0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1
cmUuY3BwCmluZGV4IGIyMjk4ZDY1Y2JhYjhkNTBiZTg3ZTAyMmRhNDNiYjYyMmM1OGZlN2IuLjhi
NjAwZWQzODY0NDMxMjg4MmYxM2M1ZjQ5ZmM4ZmQ5ZTY3OTI5NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuY3BwCkBAIC0zNiw3ICszNiw5IEBACiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCiBuYW1lc3BhY2UgewotY29uc3QgYm9vbCB2
ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgV2FzbVNpZ25hdHVyZUludGVybmFsIHsKK3N0YXRp
YyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIH0KIAogU3RyaW5nIFNpZ25hdHVyZTo6
dG9TdHJpbmcoKSBjb25zdApAQCAtMTAzLDcgKzEwNSw3IEBAIHN0ZDo6cGFpcjxTaWduYXR1cmVJ
bmRleCwgUmVmPFNpZ25hdHVyZT4+IFNpZ25hdHVyZUluZm9ybWF0aW9uOjphZG9wdChSZWY8U2ln
bmF0CiAgICAgICAgICsraW5mby5tX25leHRJbmRleDsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
aW5mby5tX25leHRJbmRleCA+IG5leHRWYWx1ZSk7IC8vIGNyYXNoIG9uIG92ZXJmbG93LgogICAg
ICAgICBBU1NFUlQobmV4dFZhbHVlID09IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwotICAg
ICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKFdhc21TaWduYXR1cmVJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgIGRhdGFMb2dMbigiQWRvcHQgbmV3IHNpZ25hdHVyZSAiLCBzaWdu
YXR1cmUuZ2V0KCksICIgd2l0aCBpbmRleCAiLCBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLCAi
IGhhc2g6ICIsIHNpZ25hdHVyZS0+aGFzaCgpKTsKIAogICAgICAgICBhdXRvIGFkZFJlc3VsdCA9
IGluZm8ubV9pbmRleE1hcC5hZGQobmV4dFZhbHVlLCBzaWduYXR1cmUuY29weVJlZigpKTsKQEAg
LTExMSw3ICsxMTMsNyBAQCBzdGQ6OnBhaXI8U2lnbmF0dXJlSW5kZXgsIFJlZjxTaWduYXR1cmU+
PiBTaWduYXR1cmVJbmZvcm1hdGlvbjo6YWRvcHQoUmVmPFNpZ25hdAogICAgICAgICBBU1NFUlQo
aW5mby5tX2luZGV4TWFwLnNpemUoKSA9PSBpbmZvLm1fc2lnbmF0dXJlTWFwLnNpemUoKSk7CiAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihuZXh0VmFsdWUsIFdURk1vdmUoc2lnbmF0dXJl
KSk7CiAgICAgfQotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChXYXNtU2lnbmF0dXJlSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2dMbigiRXhpc3Rpbmcgc2lnbmF0dXJlICIsIHNp
Z25hdHVyZS5nZXQoKSwgIiB3aXRoIGluZGV4ICIsIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUs
ICIgaGFzaDogIiwgc2lnbmF0dXJlLT5oYXNoKCkpOwogICAgIEFTU0VSVChhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlICE9IFNpZ25hdHVyZTo6aW52YWxpZEluZGV4KTsKICAgICBBU1NFUlQoaW5m
by5tX2luZGV4TWFwLmNvbnRhaW5zKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwCmluZGV4IDc2YTg3YWMxYjQ3
MzZmM2NmMzdjMzUzOWRiYzk2MWY2Nzg2YTAxMzQuLjljNWI2ODQ0YzQ2Yjc0ZjAyNmUwZDg1NmI0
MTljZTk3NWM2MDA5MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Xb3JrbGlzdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmts
aXN0LmNwcApAQCAtMzMsNyArMzMsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdh
c20gewogCituYW1lc3BhY2UgV2FzbVdvcmtsaXN0SW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJv
b2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBjb25zdCBjaGFyKiBXb3JrbGlzdDo6cHJpb3JpdHlT
dHJpbmcoUHJpb3JpdHkgcHJpb3JpdHkpCiB7CkBAIC0xNDQsNyArMTQ2LDcgQEAgdm9pZCBXb3Jr
bGlzdDo6ZW5xdWV1ZShSZWY8UGxhbj4gcGxhbikKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQo
ZWxlbWVudCwgZWxlbWVudC5wbGFuLmdldCgpICE9ICZwbGFuLmdldCgpKTsKICAgICB9CiAKLSAg
ICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiRW5xdWV1aW5nIHBsYW4iKTsKKyAgICBkYXRhTG9nTG5J
ZihXYXNtV29ya2xpc3RJbnRlcm5hbDo6dmVyYm9zZSwgIkVucXVldWluZyBwbGFuIik7CiAgICAg
bV9xdWV1ZS5lbnF1ZXVlKHsgUHJpb3JpdHk6OlByZXBhcmF0aW9uLCBuZXh0VGlja2V0KCksICBX
VEZNb3ZlKHBsYW4pIH0pOwogICAgIG1fcGxhbkVucXVldWVkLT5ub3RpZnlPbmUobG9ja2VyKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvZ2VuZXJhdGUtdW5pZmllZC1zb3VyY2UtYnVuZGxl
cy5yYiBiL1NvdXJjZS9XVEYvZ2VuZXJhdGUtdW5pZmllZC1zb3VyY2UtYnVuZGxlcy5yYgpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hZjc5YzJjNTc2NjhkOWMyMGU5ZTA3MmQxZDQ2M2FhZGU0OTA5ODQzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dURi9nZW5lcmF0ZS11bmlmaWVkLXNvdXJjZS1idW5kbGVzLnJi
CkBAIC0wLDAgKzEsMTUyIEBACisjIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CityZXF1aXJlICdmaWxldXRpbHMnCityZXF1aXJlICdwYXRobmFtZScKK3JlcXVpcmUgJ2dldG9w
dGxvbmcnCisKK1NDUklQVF9OQU1FID0gRmlsZS5iYXNlbmFtZSgkMCkKKworZGVmIHVzYWdlCisg
ICAgcHV0cyAidXNhZ2U6ICN7U0NSSVBUX05BTUV9IFtvcHRpb25zXSAtcCA8ZGVzaW5hdGlvbi1w
YXRoPiA8c291cmNlLWZpbGU+IFs8c291cmNlLWZpbGU+Li4uXSIKKyAgICBwdXRzICItLWhlbHAg
ICAgICAgICAgICAgICAgICAgICAgICAgICgtaCkgUHJpbnQgdGhpcyBtZXNzYWdlIgorICAgIHB1
dHMgIi0tZGVyaXZlZC1zb3VyY2VzLXBhdGggICAgICAgICAgKC1wKSBQYXRoIHRvIHRoZSBkaXJl
Y3Rvcnkgd2hlcmUgdGhlIHVuaWZpZWQgc291cmNlIGZpbGVzIHNob3VsZCBiZSBwbGFjZWQuIFRo
aXMgYXJndW1lbnQgaXMgcmVxdWlyZWQuIgorICAgIHB1dHMgIi0tdmVyYm9zZSAgICAgICAgICAg
ICAgICAgICAgICAgKC12KSBBZGRzIGV4dHJhIGxvZ2dpbmcgdG8gc3RkZXJyLiIKKyAgICBleGl0
IDEKK2VuZAorCitNQVhfQlVORExFX1NJWkUgPSA4CiskZGVyaXZlZFNvdXJjZXNQYXRoID0gbmls
CiskdmVyYm9zZSA9IGZhbHNlCisjIEZJWE1FOiBVc2UgdGhlc2Ugd2hlbiBYY29kZSB1c2VzIHVu
aWZpZWQgc291cmNlcy4KKyRtYXhDcHBCdW5kbGVDb3VudCA9IDEwMDAwMAorJG1heE9iakNCdW5k
bGVDb3VudCA9IDEwMDAwMAorCitHZXRvcHRMb25nLm5ldyhbJy0taGVscCcsICctaCcsIEdldG9w
dExvbmc6Ok5PX0FSR1VNRU5UXSwKKyAgICAgICAgICAgICAgIFsnLS1kZXJpdmVkLXNvdXJjZXMt
cGF0aCcsICctcCcsIEdldG9wdExvbmc6OlJFUVVJUkVEX0FSR1VNRU5UXSwKKyAgICAgICAgICAg
ICAgIFsnLS12ZXJib3NlJywgJy12JywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAorICAgICAg
ICAgICAgICAgWyctLW1heC1jcHAtYnVuZGxlLWNvdW50JywgR2V0b3B0TG9uZzo6UkVRVUlSRURf
QVJHVU1FTlRdLAorICAgICAgICAgICAgICAgWyctLW1heC1jLWJ1bmRsZS1jb3VudCcsIEdldG9w
dExvbmc6OlJFUVVJUkVEX0FSR1VNRU5UXSwKKyAgICAgICAgICAgICAgIFsnLS1tYXgtb2JqLWMt
YnVuZGxlLWNvdW50JywgR2V0b3B0TG9uZzo6UkVRVUlSRURfQVJHVU1FTlRdKS5lYWNoIHsKKyAg
ICB8IG9wdCwgYXJnIHwKKyAgICBjYXNlIG9wdAorICAgIHdoZW4gJy0taGVscCcKKyAgICAgICAg
dXNhZ2UKKyAgICB3aGVuICctLWRlcml2ZWQtc291cmNlcy1wYXRoJworICAgICAgICAkZGVyaXZl
ZFNvdXJjZXNQYXRoID0gUGF0aG5hbWUubmV3KGFyZykKKyAgICB3aGVuICctLXZlcmJvc2UnCisg
ICAgICAgICR2ZXJib3NlID0gdHJ1ZQorICAgIHdoZW4gJy0tbWF4LWNwcC1idW5kbGUtY291bnQn
CisgICAgICAgICRtYXhDcHBCdW5kbGVDb3VudCA9IGFyZworICAgIHdoZW4gJy0tbWF4LWMtYnVu
ZGxlLWNvdW50JworICAgICAgICAkbWF4Q0J1bmRsZUNvdW50ID0gYXJnCisgICAgd2hlbiAnLS1t
YXgtb2JqLWMtYnVuZGxlLWNvdW50JworICAgICAgICAkbWF4T2JqQ0J1bmRsZUNvdW50ID0gYXJn
CisgICAgZW5kCit9CisKK3VzYWdlIGlmICEkZGVyaXZlZFNvdXJjZXNQYXRoIHx8IEFSR1YubGVu
Z3RoID09IDAKKworCitkZWYgbG9nKHRleHQpCisgICAgJHN0ZGVyci5wdXRzIHRleHQgaWYgJHZl
cmJvc2UKK2VuZAorCiskZ2VuZXJhdGVkU291cmNlcyA9IFtdCisKK2NsYXNzIEJ1bmRsZU1hbmFn
ZXIKKyAgICBhdHRyX3JlYWRlciA6YnVuZGxlQ291bnQsIDpleHRlbnNpb24sIDpmaWxlQ291bnQs
IDpjdXJyZW50QnVuZGxlVGV4dAorCisgICAgZGVmIGluaXRpYWxpemUoZXh0ZW5zaW9uKQorICAg
ICAgICBAZXh0ZW5zaW9uID0gZXh0ZW5zaW9uCisgICAgICAgIEBmaWxlQ291bnQgPSAwCisgICAg
ICAgIEBidW5kbGVDb3VudCA9IDAKKyAgICAgICAgQGN1cnJlbnRCdW5kbGVUZXh0ID0gIiIKKyAg
ICBlbmQKKworICAgIGRlZiBmbHVzaAorICAgICAgICAjIE5vIHBvaW50IGluIHdyaXRpbmcgYW4g
ZW1wdHkgYnVuZGxlIGZpbGUKKyAgICAgICAgcmV0dXJuIGlmIEBjdXJyZW50QnVuZGxlVGV4dCA9
PSAiIgorCisgICAgICAgIEBidW5kbGVDb3VudCArPSAxCisgICAgICAgIGJ1bmRsZUZpbGUgPSAi
VW5pZmllZFNvdXJjZSN7QGJ1bmRsZUNvdW50fSN7ZXh0ZW5zaW9ufSIKKyAgICAgICAgYnVuZGxl
RmlsZSA9ICRkZXJpdmVkU291cmNlc1BhdGggKyBidW5kbGVGaWxlCisgICAgICAgIGxvZygid3Jp
dGluZyBidW5kbGUgI3tidW5kbGVGaWxlfSB3aXRoOiBcbiN7QGN1cnJlbnRCdW5kbGVUZXh0fSIp
CisgICAgICAgIElPOjp3cml0ZShidW5kbGVGaWxlLCBAY3VycmVudEJ1bmRsZVRleHQpCisgICAg
ICAgICRnZW5lcmF0ZWRTb3VyY2VzIDw8IGJ1bmRsZUZpbGUKKworICAgICAgICBAY3VycmVudEJ1
bmRsZVRleHQgPSAiIgorICAgICAgICBAZmlsZUNvdW50ID0gMAorICAgIGVuZAorCisgICAgZGVm
IGFkZEZpbGUoZmlsZSkKKyAgICAgICAgcmFpc2UgIndyb25nIGV4dGVuc2lvbjogI3tmaWxlLmV4
dG5hbWV9IGV4cGVjdGVkICN7QGV4dGVuc2lvbn0iIHVubGVzcyBmaWxlLmV4dG5hbWUgPT0gQGV4
dGVuc2lvbgorICAgICAgICBpZiBAZmlsZUNvdW50ID09IE1BWF9CVU5ETEVfU0laRQorICAgICAg
ICAgICAgbG9nKCJmbHVzaGluZyBiZWNhdXNlIG5ldyBidW5kbGUgaXMgZnVsbCAje0BmaWxlQ291
bnR9IikKKyAgICAgICAgICAgIGZsdXNoCisgICAgICAgIGVuZAorICAgICAgICBAY3VycmVudEJ1
bmRsZVRleHQgKz0gIiNpbmNsdWRlIFwiI3tmaWxlfVwiXG4iCisgICAgICAgIEBmaWxlQ291bnQg
Kz0gMQorICAgIGVuZAorZW5kCisKKyNGSVhNRTogV2Ugc2hvdWxkIGZpZ3VyZSBvdXQgaG93IHRv
IGJ1bmRsZSBDIGZpbGVzLiBUaGUgbGFjayBvZiBuYW1lc3BhY2VzIG1ha2VzIHRoaXMgZGlmZmlj
dWx0Li4uCitjbGFzcyBDRmlsZU1hbmFnZXIKKyAgICBkZWYgZmx1c2gKKyAgICBlbmQKKworICAg
IGRlZiBhZGRGaWxlKGZpbGUpCisgICAgICAgICRnZW5lcmF0ZWRTb3VyY2VzIDw8IGZpbGUKKyAg
ICBlbmQKK2VuZAorCiskYnVuZGxlTWFuYWdlcnMgPSB7CisgICAgIi5jcHAiID0+IEJ1bmRsZU1h
bmFnZXIubmV3KCIuY3BwIiksCisgICAgIi5jIiA9PiBDRmlsZU1hbmFnZXIubmV3LAorICAgICIu
bW0iID0+IEJ1bmRsZU1hbmFnZXIubmV3KCIubW0iKQorfQorCiskY3VycmVudERpcmVjdG9yeSA9
IG5pbAorCisKK0FSR1Yuc29ydC5lYWNoIHsKKyAgICB8IGZpbGUgfAorCisgICAgcGF0aCA9IFBh
dGhuYW1lLm5ldyhmaWxlKQorICAgIGlmICgkY3VycmVudERpcmVjdG9yeSAhPSBwYXRoLmRpcm5h
bWUpCisgICAgICAgIGxvZygiZmx1c2hpbmcgYmVjYXVzZSBuZXcgZGlybmFtZSBvbGQ6ICN7JGN1
cnJlbnREaXJlY3Rvcnl9LCBuZXc6ICN7cGF0aC5kaXJuYW1lfSIpCisgICAgICAgICRidW5kbGVN
YW5hZ2Vycy5lYWNoX3ZhbHVlIHsgfCB4IHwgeC5mbHVzaCB9CisgICAgICAgICRjdXJyZW50RGly
ZWN0b3J5ID0gcGF0aC5kaXJuYW1lCisgICAgZW5kCisKKyAgICBidW5kbGUgPSAkYnVuZGxlTWFu
YWdlcnNbcGF0aC5leHRuYW1lXQorICAgIHJhaXNlICJ1bmtub3duIHNvdXJjZSBleHRlbnNpb246
ICN7cGF0aC5leHRuYW1lfSBrbm93biBleHRlbnNpb25zOiAjeyRidW5kbGVNYW5hZ2Vycy5rZXlz
LnRvX3N9IiB1bmxlc3MgYnVuZGxlCisgICAgYnVuZGxlLmFkZEZpbGUocGF0aCkKK30KKworJGJ1
bmRsZU1hbmFnZXJzLmVhY2hfdmFsdWUgeyB8IHggfCB4LmZsdXNoIH0KKworIyBXZSB1c2Ugc3Rk
b3V0IHRvIHJlcG9ydCBvdXIgdW5pZmllZCBzb3VyY2UgbGlzdCB0byBDTWFrZS4KKyMgQWRkIHRy
YWlsaW5nIHNlbWljb2xvbiBzaW5jZSBDTWFrZSBzZWVtcyBkaXNsaWtlcyBub3QgaGF2aW5nIGl0
LgorIyBBbHNvLCBtYWtlIHN1cmUgd2UgdXNlIHByaW50IGluc3RlYWQgb2YgcHV0cyBiZWNhdXNl
IENNYWtlIHdpbGwgdGhpbmsgdGhlIFxuIGlzIGEgc291cmNlIGZpbGUgYW5kIGZhaWwgdG8gYnVp
bGQuCitwcmludCgkZ2VuZXJhdGVkU291cmNlcy5qb2luKCI7IikgKyAiOyIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmggYi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25z
LmgKaW5kZXggM2IwNDM3OTlhMGE0ZTRiZGUwYWZkZjUwYzJhZDA2MGUxNTkyOTYzYS4uMTc5ZjUx
OGVkNjRlOGI1MmQwYTNjZDdmZGNlZGZlYzdlM2MyN2ZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvQXNzZXJ0aW9ucy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaApAQCAt
NTM1LDE4ICs1MzUsMjIgQEAgaW5saW5lIHZvaWQgY29tcGlsZXJGZW5jZUZvckNyYXNoKCkKICNl
bmRpZgogfQogCi0jaWZuZGVmIENSQVNIX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fQU5EX0lO
Rk8KKyNpZm5kZWYgQ1JBU0hfV0lUSF9JTkZPCiAvLyBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgYXJl
IGdvaW5nIHRvIHN0dWZmIGRhdGEgaW50byByZWdpc3RlcnMgYmVmb3JlIGNyYXNoaW5nLiBMaWtl
IHRoZSBjcmFzaFdpdGhJbmZvIGZ1bmN0aW9ucyBiZWxvdy4uLgogLy8gR0NDIGRvZXNuJ3QgbGlr
ZSB0aGUgIyNfX1ZBX0FSR1NfXyBoZXJlIHNpbmNlIHRoaXMgbWFjcm8gaXMgY2FsbGVkIGZyb20g
YW5vdGhlciBtYWNybyBzbyB3ZSBqdXN0IENSQVNIIGluc3RlYWQgdGhlcmUuCiAjaWYgQ09NUElM
RVIoQ0xBTkcpIHx8IENPTVBJTEVSKE1TVkMpCi0jZGVmaW5lIENSQVNIX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT05fQU5EX0lORk8oLi4uKSBkbyB7IFwKKyNkZWZpbmUgQ1JBU0hfV0lUSF9JTkZP
KC4uLikgZG8geyBcCiAgICAgICAgIFdURjo6aXNJbnRlZ3JhbFR5cGUoX19WQV9BUkdTX18pOyBc
CiAgICAgICAgIGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBcCiAgICAgICAgIFdURkNyYXNoV2l0
aEluZm8oX19MSU5FX18sIF9fRklMRV9fLCBXVEZfUFJFVFRZX0ZVTkNUSU9OLCBfX0NPVU5URVJf
XywgIyNfX1ZBX0FSR1NfXyk7IFwKICAgICB9IHdoaWxlIChmYWxzZSkKICNlbHNlCi0jZGVmaW5l
IENSQVNIX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fQU5EX0lORk8oLi4uKSBDUkFTSCgpCisj
ZGVmaW5lIENSQVNIX1dJVEhfSU5GTyguLi4pIENSQVNIKCkKICNlbmRpZgorI2VuZGlmIC8vIENS
QVNIX1dJVEhfSU5GTworCisjaWZuZGVmIENSQVNIX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05f
QU5EX0lORk8KKyNkZWZpbmUgQ1JBU0hfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTl9BTkRfSU5G
TyBDUkFTSF9XSVRIX0lORk8KICNlbmRpZiAvLyBDUkFTSF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OX0FORF9JTkZPCiAKICNlbmRpZiAvLyBfX2NwbHVzcGx1cwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320577</attachid>
            <date>2017-09-12 16:10:34 -0700</date>
            <delta_ts>2017-09-12 18:31:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176076-20170912161033.patch</filename>
            <type>text/plain</type>
            <size>213317</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxOTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YzgyZjNlZjRiYTgwZDBlY2RjODRkN2MwNjljNTk3NDdjMGUyNWMzLi5iY2RmOTZiYjZmNzRiMTNl
YzYxMTJkMDUxYmEyZWFiMzIwY2ExYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzcgQEAKKzIwMTctMDktMTEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgRG8gdW5pZmllZCBzb3VyY2UgYnVpbGRzIGZvciBKU0MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjA3NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggc3dp
dGNoZXMgdGhlIENNYWtlIEphdmFTY3JpcHRDb3JlIGJ1aWxkIHRvIHVzZSB1bmlmaWVkIHNvdXJj
ZXMuCisgICAgICAgIFRoZSBYY29kZSBidWlsZCB3aWxsIGJlIHVwZ3JhZGVkIGluIGEgZm9sbG93
IHVwIHBhdGNoLgorCisgICAgICAgIE1vc3Qgb2YgdGhlIHNvdXJjZSBjaGFuZ2VzIGluIHRoaXMg
cGF0Y2ggYXJlIGZpeGluZyBzdGF0aWMKKyAgICAgICAgdmFyaWFibGUvZnVuY3Rpb25zIG5hbWUg
Y29sbGlzaW9ucy4gVGhlIG1vc3QgY29tbW9uIGNvbGxpc2lvbnMKKyAgICAgICAgd2VyZSBmcm9t
IG91ciB1c2Ugb2YgInN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UiIGFuZCAidXNpbmcKKyAgICAg
ICAgbmFtZXNwYWNlIC4uLiIuIEkgZml4ZWQgYWxsIHRoZSB2ZXJib3NlIGNhc2VzIGFuZCBmaXhl
ZCB0aGUgInVzaW5nCisgICAgICAgIG5hbWVzcGFjZSIgaXNzdWVzIHRoYXQgb2NjdXJyZWQgdW5k
ZXIgdGhlIGN1cnJlbnQgYnVuZGxpbmcKKyAgICAgICAgc3RyYXRlZ3kuIEl0J3MgbGlrZWx5IHRo
YXQgbW9yZSBvZiB0aGUgInVzaW5nIG5hbWVzcGFjZSIgaXNzdWVzCisgICAgICAgIHdpbGwgbmVl
ZCB0byBiZSByZXNvbHZlZCBpbiB0aGUgZnV0dXJlLCBwYXJ0aWN1bGFybHkgaW4gdGhlIEZUTC4K
KworICAgICAgICBJIGRvbid0IGV4cGVjdCBlaXRoZXIgb2YgdGhlc2UgcHJvYmxlbXMgd2lsbCBh
cHBseSB0byBvdGhlciBwYXJ0cworICAgICAgICBvZiB0aGUgcHJvamVjdCBuZWFybHkgYXMgbXVj
aCBhcyBpbiBKU0MuIFVzaW5nIGEgdmVyYm9zZSB2YXJpYWJsZQorICAgICAgICBpcyBhIEpTQyBp
ZGlvbSBhbmQgSlNDIHRlbmRzIHVzZSB0aGUgc2FtZSwgY2Fub25pY2FsLCBjbGFzcyBuYW1lCisg
ICAgICAgIGluIG11bHRpcGxlIHBhcnRzIG9mIHRoZSBlbmdpbmUuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBiMy9CM0NoZWNrU3BlY2lhbC5jcHA6CisgICAgICAgIChK
U0M6OkIzOjpDaGVja1NwZWNpYWw6OmZvckVhY2hBcmcpOgorICAgICAgICAoSlNDOjpCMzo6Q2hl
Y2tTcGVjaWFsOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Om51bUIzQXJncyk6
IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNEdXBsaWNhdGVUYWlscy5jcHA6CisgICAgICAgICog
YjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHA6CisgICAgICAgICogYjMvQjNG
aXhTU0EuY3BwOgorICAgICAgICAoSlNDOjpCMzo6ZGVtb3RlVmFsdWVzKToKKyAgICAgICAgKiBi
My9CM0ZvbGRQYXRoQ29uc3RhbnRzLmNwcDoKKyAgICAgICAgKiBiMy9CM0luZmVyU3dpdGNoZXMu
Y3BwOgorICAgICAgICAqIGIzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwOgor
ICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpMb3dlclRvQWlyKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6cnVuKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6c2hvdWxkQ29weVByb3BhZ2F0ZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OkFyZ1Byb21p
c2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9t
aXNlOjpzd2FwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
QXJnUHJvbWlzZTo6b3BlcmF0b3I9KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6fkFyZ1Byb21pc2UpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjpzZXRUcmFwcyk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OnRtcCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6Om9w
ZXJhdG9yIGJvb2wgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpBcmdQcm9taXNlOjpraW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6cGVlayBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OkFyZ1Byb21pc2U6OmNvbnN1bWUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpBcmdQcm9taXNlOjpp
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dG1wKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dG1wUHJvbWlzZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNhbkJlSW50ZXJu
YWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpjb21taXRJ
bnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNy
b3NzZXNJbnRlcmZlcmVuY2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjpzY2FsZUZvclNobCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6OmVmZmVjdGl2ZUFkZHIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjphZGRyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6dHJhcHBpbmdJbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
TG93ZXJUb0Fpcjo6bG9hZFByb21pc2VBbnlPcGNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpMb3dlclRvQWlyOjpsb2FkUHJvbWlzZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmltbSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OmJpdEltbSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6OmJpdEltbTY0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6aW1tT3JUbXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjp0cnlPcGNvZGVGb3JUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6b3Bjb2RlRm9yVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFVuT3ApOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpwcmVmZXJSaWdodEZvclJlc3VsdCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZEJpbk9wKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kU2hpZnQpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0cnlBcHBlbmRTdG9yZVVu
T3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0cnlBcHBl
bmRTdG9yZUJpbk9wKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fp
cjo6Y3JlYXRlU3RvcmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRv
QWlyOjpzdG9yZU9wY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6OmFwcGVuZFN0b3JlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6bW92ZUZvclR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpM
b3dlclRvQWlyOjpyZWxheGVkTW92ZUZvclR5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpMb3dlclRvQWlyOjpwcmludCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6OmFwcGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okxvd2VyVG9BaXI6OmFwcGVuZFRyYXBwaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6TG93ZXJUb0Fpcjo6ZmluaXNoQXBwZW5kaW5nSW5zdHJ1Y3Rpb25zKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bmV3QmxvY2spOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzcGxpdEJsb2NrKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6ZW5zdXJlU3BlY2lhbCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmVuc3VyZUNoZWNrU3BlY2lh
bCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmZpbGxTdGFj
a21hcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0
ZUdlbmVyaWNDb21wYXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJU
b0Fpcjo6Y3JlYXRlQnJhbmNoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6Y3JlYXRlQ29tcGFyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okxvd2VyVG9BaXI6OmNyZWF0ZVNlbGVjdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6OnRyeUFwcGVuZExlYSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFg4NkRpdik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFg4NlVEaXYpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpsb2FkTGlua09wY29kZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnN0b3JlQ29uZE9wY29kZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZENBUyk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFZvaWRBdG9taWMpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRHZW5lcmFs
QXRvbWljKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG93
ZXIpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwOgorICAg
ICAgICAoSlNDOjpCMzo6UGF0Y2hwb2ludFNwZWNpYWw6OmdlbmVyYXRlKToKKyAgICAgICAgKiBi
My9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwOgorICAgICAgICAoSlNDOjpCMzo6cmVkdWNlRG91
YmxlVG9GbG9hdCk6CisgICAgICAgICogYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHA6CisgICAgICAg
ICogYjMvQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuY3BwOgorICAgICAgICAqIGIzL0IzU3Rh
Y2ttYXBTcGVjaWFsLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlN0YWNrbWFwU3BlY2lhbDo6cmVw
c0ltcGwpOgorICAgICAgICAoSlNDOjpCMzo6U3RhY2ttYXBTcGVjaWFsOjpyZXBGb3JBcmcpOgor
ICAgICAgICAqIGIzL2Fpci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcDoKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6YWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZyk6CisgICAg
ICAgICogYjMvYWlyL0FpckVtaXRTaHVmZmxlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
ZW1pdFNodWZmbGUpOgorICAgICAgICAqIGIzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcDoK
KyAgICAgICAgKiBiMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcDoKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6bG93ZXJBZnRlclJlZ0FsbG9jKToKKyAgICAgICAgKiBiMy9haXIvQWlyU3Rh
Y2tBbGxvY2F0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6YXR0ZW1wdEFzc2lnbm1l
bnQpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjphc3NpZ24pOgorICAgICAgICAqIGJ5dGVjb2Rl
L0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwp
OgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6
Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVERkdTdGF0dXNlcyk6CisgICAgICAgICogYnl0ZWNvZGUv
R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFj
Y2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0LmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0Fj
Y2Vzcy5jcHA6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcyk6Cisg
ICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKToKKyAgICAgICAgKiBi
eXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29u
ZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCBjb25z
dCk6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSk6CisgICAgICAgICogZGZnL0RG
R0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OkRlbGF5ZWRT
ZXRMb2NhbDo6RGVsYXllZFNldExvY2FsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aW5saW5pbmdDb3N0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRU
b0lubGluZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBsYW5Mb2FkKToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6c3RvcmUpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6bGlua0Jsb2Nrcyk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZSk6CisgICAgICAgICogZGZnL0RGR0ludGVnZXJD
aGVja0NvbWJpbmluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJbnRlZ2VyQ2hlY2tD
b21iaW5pbmdQaGFzZTo6aGFuZGxlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyUmFu
Z2VPcHRpbWl6YXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR01vdkhpbnRSZW1vdmFs
UGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNl
LmNwcDoKKyAgICAgICAgKiBkZmcvREZHUGhhbnRvbUluc2VydGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdT
dG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1ZhcmFyZ3NG
b3J3YXJkaW5nUGhhc2UuY3BwOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXAuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVhcDo6Y29tcHV0ZSk6CisgICAgICAgICogZnRs
L0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkFic3Ry
YWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlTWVtb3J5KToKKyAgICAgICAgKEpTQzo6RlRMOjpB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUNDYWxsUmVhZCk6CisgICAgICAgIChKU0M6
OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVDQ2FsbFdyaXRlKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZVBhdGNocG9pbnRS
ZWFkKToKKyAgICAgICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0
ZVBhdGNocG9pbnRXcml0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwUmVwb3Np
dG9yeTo6ZGVjb3JhdGVGZW5jZVJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6OkFic3RyYWN0SGVh
cFJlcG9zaXRvcnk6OmRlY29yYXRlRmVuY2VXcml0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6QWJz
dHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5jZWRBY2Nlc3MpOgorICAgICAgICAoSlND
OjpGVEw6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmNvbXB1dGVSYW5nZXNBbmREZWNvcmF0ZUlu
c3RydWN0aW9ucyk6CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OmxpbmspOgorICAgICAgICAqIGhlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwOgorICAg
ICAgICAoSlNDOjpNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKToKKyAgICAgICAgKiBpbnRlcnBy
ZXRlci9TaGFkb3dDaGlja2VuLmNwcDoKKyAgICAgICAgKEpTQzo6U2hhZG93Q2hpY2tlbjo6dXBk
YXRlKToKKyAgICAgICAgKiBqaXQvQmluYXJ5U3dpdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6Qmlu
YXJ5U3dpdGNoOjpCaW5hcnlTd2l0Y2gpOgorICAgICAgICAoSlNDOjpCaW5hcnlTd2l0Y2g6OmJ1
aWxkKToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTElu
dDo6RGF0YTo6bG9hZFN0YXRzKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnNhdmVTdGF0
cyk6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OkFycmF5UHJvdG90eXBlOjp0cnlJbml0aWFsaXplU3BlY2llc1dhdGNocG9pbnQpOgorICAgICAg
ICAoSlNDOjpBcnJheVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ6
OmhhbmRsZUZpcmUpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAg
ICAgIChKU0M6OkZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3I6OkZpbmRG
aXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9ja0Z1bmN0b3IpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpGaW5kRmlyc3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjpvcGVyYXRvcigp
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJs
b2NrRnVuY3Rvcjo6Zm91bmRDYWxsRnJhbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpGaW5kRmlyc3RDYWxsZXJGcmFtZVdpdGhDb2RlYmxvY2tGdW5jdG9yOjppbmRleCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOgorICAg
ICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCk6
CisgICAgICAgICogcnVudGltZS9Qcm9taXNlRGVmZXJyZWRUaW1lci5jcHA6CisgICAgICAgIChK
U0M6OlByb21pc2VEZWZlcnJlZFRpbWVyOjpkb1dvcmspOgorICAgICAgICAoSlNDOjpQcm9taXNl
RGVmZXJyZWRUaW1lcjo6YWRkUGVuZGluZ1Byb21pc2UpOgorICAgICAgICAoSlNDOjpQcm9taXNl
RGVmZXJyZWRUaW1lcjo6Y2FuY2VsUGVuZGluZ1Byb21pc2UpOgorICAgICAgICAqIHJ1bnRpbWUv
VHlwZVByb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVByb2ZpbGVyOjppbnNlcnROZXdM
b2NhdGlvbik6CisgICAgICAgICogcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwOgorICAgICAg
ICAoSlNDOjpUeXBlUHJvZmlsZXJMb2c6OnByb2Nlc3NMb2dFbnRyaWVzKToKKyAgICAgICAgKiBy
dW50aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFr
TWFwRGVsZXRlKToKKyAgICAgICAgKEpTQzo6cHJvdG9GdW5jV2Vha01hcEdldCk6CisgICAgICAg
IChKU0M6OnByb3RvRnVuY1dlYWtNYXBIYXMpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFr
TWFwU2V0KToKKyAgICAgICAgKEpTQzo6Z2V0V2Vha01hcERhdGEpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnByb3RvRnVu
Y1dlYWtTZXREZWxldGUpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrU2V0SGFzKToKKyAg
ICAgICAgKEpTQzo6cHJvdG9GdW5jV2Vha1NldEFkZCk6CisgICAgICAgIChKU0M6OmdldFdlYWtN
YXBEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiB0ZXN0UmVnRXhwLmNwcDoKKyAgICAgICAgKHRl
c3RPbmVSZWdFeHApOgorICAgICAgICAocnVuRnJvbUZpbGVzKToKKyAgICAgICAgKiB3YXNtL1dh
c21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxl
KToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6
QkJRUGxhbjo6bW92ZVRvU3RhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpwYXJz
ZUFuZFZhbGlkYXRlTW9kdWxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6cHJlcGFy
ZSk6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OmNvbXBpbGVGdW5jdGlvbnMpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpjb21wbGV0ZSk6CisgICAgICAgICogd2FzbS9XYXNt
RmF1bHRTaWduYWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6dHJhcEhhbmRsZXIp
OgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpP
TUdQbGFuOjpPTUdQbGFuKToKKyAgICAgICAgKEpTQzo6V2FzbTo6T01HUGxhbjo6d29yayk6Cisg
ICAgICAgICogd2FzbS9XYXNtUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlBsYW46OmZh
aWwpOgorICAgICAgICAqIHdhc20vV2FzbVNpZ25hdHVyZS5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjphZG9wdCk6CisgICAgICAgICogd2FzbS9XYXNtV29y
a2xpc3QuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpXb3JrbGlzdDo6ZW5xdWV1ZSk6CisKIDIw
MTctMDktMTEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIE1vcmUg
ZXhjZXB0aW9uIGNoZWNrIGJvb2sta2VlcGluZyBuZWVkZWQgZm91bmQgYnkgMzItYml0IEpTQyB0
ZXN0IGZhaWx1cmVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCA4MTMwODMwZWE4ODY0YTc0ZDFmYjc0YWI1NWU4Yjc1OTdiMmEx
NzQ2Li4yZDRkZjRlMmMwZWE3MGFjYjlkNmUwYTFiN2MxNzdlODFhNzAxOTIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM3IEBACisyMDE3LTA5LTExICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUu
Y29tPgorCisgICAgICAgIERvIHVuaWZpZWQgc291cmNlIGJ1aWxkcyBmb3IgSlNDCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYwNzYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
YSBzY3JpcHQgdGhhdCB3aWxsIGF1dG9tYXRpY2FsbHkgYnVuZGxlIHNvdXJjZQorICAgICAgICBm
aWxlcywgd2hpY2ggaXMgY3VycmVudGx5IG9ubHkgdXNlZCBieSB0aGUgQ01ha2UgYnVpbGQuIEl0
J3MKKyAgICAgICAgaW1wb3J0YW50IHRoYXQgd2UgdXNlIHRoZSBzYW1lIHNjcmlwdCB0byBnZW5l
cmF0ZSB0aGUgYnVuZGxlcworICAgICAgICBmb3IgdGhlIENNYWtlIGJ1aWxkIGFzIHRoZSBYY29k
ZSBidWlsZC4gSWYgd2UgZGlkbid0IGRvIHRoaXMgdGhlbgorICAgICAgICBpdCdzIGxpa2VseSB0
aGF0IHRoZXJlIHdvdWxkIGJlIGJ1aWxkIGVycm9ycyB0aGF0IG9jY3VyIGluIG9ubHkKKyAgICAg
ICAgb25lIGJ1aWxkIHN5c3RlbS4gT24gdGhlIHNhbWUgbm90ZSwgd2UgYWxzbyBuZWVkIHRvIGJl
IGNhcmVmdWwgdG8KKyAgICAgICAgbm90IGJ1bmRsZSBwbGF0Zm9ybSBzcGVjaWZpYyBzb3VyY2Ug
ZmlsZXMgd2l0aCBwbGF0Zm9ybQorICAgICAgICBpbmRlcGVuZGVudCBvbmVzLiBUaGVyZSBhcmUg
YSBjb3VwbGUgb2YgdGhpbmdzIHRoZSBzY3JpcHQgZG9lcyBub3QKKyAgICAgICAgY3VycmVudGx5
IGhhbmRsZSBidXQgYXJlIG5vdCBlc3NlbnRpYWwgZm9yIHRoZSBDTWFrZSBidWlsZC4gRmlyc3Qs
CisgICAgICAgIGl0IGRvZXMgbm90IGhhbmRsZSB0aGUgbWF4IGJ1bmRsZSBzaXplIHJlc3RyaWN0
aW9ucyB0aGF0IHRoZSBYY29kZQorICAgICAgICBidWlsZCB3aWxsIHJlcXVpcmUuIEl0IGFsc28g
ZG9lcyBub3QgaGFuZGxlIEMgZmlsZXMuCisKKyAgICAgICAgVGhlIHVuaWZpZWQgc291cmNlIGdl
bmVyYXRvciBzY3JpcHQgd29ya3MgYnkgY29sbGVjdGluZyBncm91cHMgb2YKKyAgICAgICAgdXAg
dG8gOCBmaWxlcyBmcm9tIHRoZSBzYW1lIGRpcmVjdG9yeS4gV2UgZG9uJ3QgYnVuZGxlIGZpbGVz
IGZyb20KKyAgICAgICAgYWNyb3NzIGRpcmVjdG9yaWVzIHNpbmNlIEkgZGlkbid0IHNlZSBhIHNw
ZWVkdXAgZnJvbSBkb2luZworICAgICAgICBzby4gQWRkaXRpb25hbGx5LCBzcGxpdHRpbmcgYXQg
dGhlIGRpcmVjdG9yeSBib3VuZGFyeSBtZWFucyB0aGF0CisgICAgICAgIGl0IGlzIGxlc3MgbGlr
ZWx5IHRoYXQgYWRkaW5nIGEgbmV3IGZpbGUgd2lsbCBmb3JjZSBhICJjbGVhbiIKKyAgICAgICAg
YnVpbGQuIFRoaXMgd291bGQgaGFwcGVuIGJlY2F1c2UgdGhlIG5ldyBmaWxlIHdpbGwgc2hpZnQg
ZXZlcnkKKyAgICAgICAgc3Vic2VxdWVudCBmaWxlIGludG8gdGhlIG5leHQgdW5pZmllZCBzb3Vy
Y2UgYnVuZGxlLgorCisgICAgICAgIFVzaW5nIHVuaWZpZWQgc291cmNlcyBhcHBlYXJzIHRvIGJl
IGEgcm91Z2hseSAzLjV4IGJ1aWxkIHRpbWUKKyAgICAgICAgc3BlZWQgdXAgZm9yIGNsZWFuIGJ1
aWxkcyBvbiBteSBNQlAgYW5kIGFwcGVhcnMgdG8gaGF2ZSBhCisgICAgICAgIG5lZ2xpZ2libGUg
ZWZmZWN0IGluIGluY3JlbWVudGFsIGJ1aWxkcy4KKworICAgICAgICAqIGdlbmVyYXRlLXVuaWZp
ZWQtc291cmNlLWJ1bmRsZXMucmI6IEFkZGVkLgorICAgICAgICAqIHd0Zi9Bc3NlcnRpb25zLmg6
CisKIDIwMTctMDktMTEgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMTg1NC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCBkYTFiYTFkOWJlMTU3YjU4M2M4MTA3OGJhZGJlZmRlYWQ1YmIy
MGZhLi5kZWJjYWM4ZmI1YjRmZGQxMTI0MTE5MWY4NWVhNWQwMThhOTY5MWM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00Niw3ICs0Niw3IEBAIHNldChKYXZhU2NyaXB0
Q29yZV9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0lDVV9JTkNMVURFX0RJUlN9
IgogKQogCi1zZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUworc2V0KEphdmFTY3JpcHRDb3JlX09H
X1NPVVJDRVMKICAgICBBUEkvSlNCYXNlLmNwcAogICAgIEFQSS9KU0NUZXN0UnVubmVyVXRpbHMu
Y3BwCiAgICAgQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAKQEAgLTg3OSw3ICs4NzksNiBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5j
cHAKICAgICBydW50aW1lL1Byb3RvdHlwZU1hcC5jcHAKICAgICBydW50aW1lL1Byb3h5Q29uc3Ry
dWN0b3IuY3BwCi0gICAgcnVudGltZS9Qcm94eU9iamVjdC5jcHAKICAgICBydW50aW1lL1Byb3h5
UmV2b2tlLmNwcAogICAgIHJ1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKICAgICBydW50aW1lL1Jl
Z0V4cC5jcHAKQEAgLTEwMTcsNiArMTAxNiwzMCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNF
UwogICAgIHlhcnIvWWFyclN5bnRheENoZWNrZXIuY3BwCiApCiAKK2ZvcmVhY2ggKF9zb3VyY2VG
aWxlIElOIExJU1RTIEphdmFTY3JpcHRDb3JlX09HX1NPVVJDRVMpCisgICAgaWYgKE5PVCAoJHtf
c291cmNlRmlsZX0gTUFUQ0hFUyAiWy5dYyQiKSkKKyAgICAgICAgc2V0X3NvdXJjZV9maWxlc19w
cm9wZXJ0aWVzKCR7X3NvdXJjZUZpbGV9IFBST1BFUlRJRVMgSEVBREVSX0ZJTEVfT05MWSBPTikK
KyAgICAgICAgbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUyAke19zb3VyY2VGaWxl
fSkKKyAgICBlbmRpZiAoKQorZW5kZm9yZWFjaCAoKQorCitleGVjdXRlX3Byb2Nlc3MoQ09NTUFO
RCAke1JVQllfRVhFQ1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9Ly4uL1dURi9n
ZW5lcmF0ZS11bmlmaWVkLXNvdXJjZS1idW5kbGVzLnJiCisgICItLWRlcml2ZWQtc291cmNlcy1w
YXRoIiAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9ICR7SmF2YVNjcmlwdENv
cmVfT0dfU09VUkNFU30KKyAgUkVTVUxUX1ZBUklBQkxFIGdlbmVyYXRlVW5pZmllZFNvdXJjZXNS
ZXN1bHQKKyAgT1VUUFVUX1ZBUklBQkxFIGdlbmVyYXRlVW5pZmllZFNvdXJjZXNPdXRwdXQKKykK
KworaWYgKCR7Z2VuZXJhdGVVbmlmaWVkU291cmNlc1Jlc3VsdH0pCisgICAgbWVzc2FnZShGQVRB
TF9FUlJPUiAidW5pZmllZC1zb3VyY2UtYnVuZGxlci5yYiBleGl0ZWQgd2l0aCBub24temVybyBz
dGF0dXMgbm90IGFwcGVuZGluZyByZXN1bHRzIikKK2Vsc2UgKCkKKyAgICBsaXN0KEFQUEVORCBK
YXZhU2NyaXB0Q29yZV9TT1VSQ0VTICR7Z2VuZXJhdGVVbmlmaWVkU291cmNlc091dHB1dH0pCitl
bmRpZiAoKQorCisjIFRoZXNlIGFyZSBzcGVjaWFsIGZpbGVzIHRoYXQgd2UgY2FuJ3Qgb3IgZG9u
J3Qgd2FudCB0byB1bmlmaWVkIHNvdXJjZSBjb21waWxlCitsaXN0KEFQUEVORCBKYXZhU2NyaXB0
Q29yZV9TT1VSQ0VTCisgICAgcnVudGltZS9Qcm94eU9iamVjdC5jcHAKKykKKwogIyBFeHRyYSBm
bGFncyBmb3IgY29tcGlsZSBzb3VyY2VzIGNhbiBnbyBoZXJlLgogaWYgKE5PVCBNU1ZDKQogICAg
IHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcyhydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBQUk9Q
RVJUSUVTIENPTVBJTEVfRkxBR1MgLWZuby1vcHRpbWl6ZS1zaWJsaW5nLWNhbGxzKQpAQCAtMTMz
Niw2ICsxMzU5LDcgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAgIE1BSU5fREVQRU5ERU5DWSAk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vY3JlYXRlX3JlZ2V4X3RhYmxlcwogICAgIENPTU1B
TkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2NyZWF0
ZV9yZWdleF90YWJsZXMgPiAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L1Jl
Z0V4cEppdFRhYmxlcy5oCiAgICAgVkVSQkFUSU0pCitsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29y
ZV9IRUFERVJTICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vUmVnRXhwSml0
VGFibGVzLmgpCiBXRUJLSVRfQUREX1NPVVJDRV9ERVBFTkRFTkNJRVMoJHtDTUFLRV9DVVJSRU5U
X1NPVVJDRV9ESVJ9L3lhcnIvWWFyclBhdHRlcm4uY3BwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUFRDT1JFX0RJUn0vUmVnRXhwSml0VGFibGVzLmgpCiAKIGFkZF9jdXN0b21fY29tbWFuZCgK
QEAgLTEzNTYsNiArMTM4MCw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBERVBFTkRTICR7
Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9wYXJzZXIvS2V5d29yZHMudGFibGUKICAgICBDT01N
QU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9LZXl3
b3JkTG9va3VwR2VuZXJhdG9yLnB5ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9wYXJzZXIv
S2V5d29yZHMudGFibGUgPiAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0tl
eXdvcmRMb29rdXAuaAogICAgIFZFUkJBVElNKQorbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVf
SEVBREVSUyAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0tleXdvcmRMb29r
dXAuaCkKIFdFQktJVF9BRERfU09VUkNFX0RFUEVOREVOQ0lFUygke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vcGFyc2VyL0xleGVyLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09S
RV9ESVJ9L0tleXdvcmRMb29rdXAuaCkKIAogCkBAIC0xNTAzLDcgKzE1MjgsNyBAQCBhZGRfY3Vz
dG9tX2NvbW1hbmQoCiAgICAgV09SS0lOR19ESVJFQ1RPUlkgJHtERVJJVkVEX1NPVVJDRVNfSkFW
QVNDUklQVENPUkVfRElSfQogKQogCi1saXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VT
CitsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTCiAgICAgJHtERVJJVkVEX1NPVVJD
RVNfSkFWQVNDUklQVENPUkVfRElSfS9BaXJPcGNvZGUuaAogICAgICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vQWlyT3Bjb2RlR2VuZXJhdGVkLmgKICkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuY3BwCmluZGV4IGJlYjg3OTI4NTg4ZmQ1YjZk
NzMxMGY3ZjM0ODViYzE3NWJhM2RiZmYuLjdjNTM3MmFjNWUyNzExNDE5OTNmNzhiZTE2ODNlMDkz
MTg1M2M4OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3Bl
Y2lhbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNw
cApAQCAtMzYsMTEgKzM2LDEzIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewog
Ci11c2luZyBuYW1lc3BhY2UgQWlyOwordXNpbmcgSW5zdCA9IEFpcjo6SW5zdDsKK3VzaW5nIEFy
ZyA9IEFpcjo6QXJnOwordXNpbmcgR2VuZXJhdGlvbkNvbnRleHQgPSBBaXI6OkdlbmVyYXRpb25D
b250ZXh0OwogCiBuYW1lc3BhY2UgewogCi11bnNpZ25lZCBudW1CM0FyZ3MoQjM6OktpbmQga2lu
ZCkKK3Vuc2lnbmVkIG51bUIzQXJncyhLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kLm9w
Y29kZSgpKSB7CiAgICAgY2FzZSBDaGVja0FkZDoKQEAgLTEwOCw2ICsxMTAsNyBAQCBJbnN0IENo
ZWNrU3BlY2lhbDo6aGlkZGVuQnJhbmNoKGNvbnN0IEluc3QmIGluc3QpIGNvbnN0CiAKIHZvaWQg
Q2hlY2tTcGVjaWFsOjpmb3JFYWNoQXJnKEluc3QmIGluc3QsIGNvbnN0IFNjb3BlZExhbWJkYTxJ
bnN0OjpFYWNoQXJnQ2FsbGJhY2s+JiBjYWxsYmFjaykKIHsKKyAgICB1c2luZyBuYW1lc3BhY2Ug
QWlyOwogICAgIHN0ZDo6b3B0aW9uYWw8V2lkdGg+IG9wdGlvbmFsRGVmQXJnV2lkdGg7CiAgICAg
SW5zdCBoaWRkZW4gPSBoaWRkZW5CcmFuY2goaW5zdCk7CiAgICAgaGlkZGVuLmZvckVhY2hBcmco
CkBAIC0xNTYsNiArMTU5LDcgQEAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gQ2hlY2tTcGVjaWFs
OjpzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0JiBpbnN0KQogCiBDQ2FsbEhlbHBlcnM6Okp1bXAg
Q2hlY2tTcGVjaWFsOjpnZW5lcmF0ZShJbnN0JiBpbnN0LCBDQ2FsbEhlbHBlcnMmIGppdCwgR2Vu
ZXJhdGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAg
ICBDQ2FsbEhlbHBlcnM6Okp1bXAgZmFpbCA9IGhpZGRlbkJyYW5jaChpbnN0KS5nZW5lcmF0ZShq
aXQsIGNvbnRleHQpOwogICAgIEFTU0VSVChmYWlsLmlzU2V0KCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNEdXBsaWNhdGVUYWlscy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNEdXBsaWNhdGVUYWlscy5jcHAKaW5kZXggZmQ2NTc5MGU5OWMyZmVh
ZDRmNWZiYjllYWY2MGMxYTc1YzkzMjI1NS4uY2ZmNDRhNGMxZTAwOTFlYmE0YTc4M2IzOGYzNWEz
YmRjZWQxYmNmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRHVwbGlj
YXRlVGFpbHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0R1cGxpY2F0ZVRh
aWxzLmNwcApAQCAtNDQsNyArNDQsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsK
IAogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2Ug
QjNEdXBsaWNhdGVUYWlsc0ludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBm
YWxzZTsKK30KIAogY2xhc3MgRHVwbGljYXRlVGFpbHMgewogcHVibGljOgpAQCAtOTQsNyArOTYs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZGVtb3RlVmFs
dWVzKG1fcHJvYywgdmFsdWVzVG9EZW1vdGUpOwotICAgICAgICBpZiAodmVyYm9zZSkgeworICAg
ICAgICBpZiAoQjNEdXBsaWNhdGVUYWlsc0ludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAg
ICBkYXRhTG9nKCJQcm9jZWR1cmUgYWZ0ZXIgdmFsdWUgZGVtb3Rpb246XG4iKTsKICAgICAgICAg
ICAgIGRhdGFMb2cobV9wcm9jKTsKICAgICAgICAgfQpAQCAtMTE2LDcgKzExOCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIC8vIHBvaW50LgogICAgICAgICAgICAgY2FuZGlkYXRlcy5yZW1vdmUo
YmxvY2spOwogCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0R1
cGxpY2F0ZVRhaWxzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygi
RHVwbGljYXRpbmcgIiwgKnRhaWwsICIgaW50byAiLCAqYmxvY2ssICJcbiIpOwogCiAgICAgICAg
ICAgICBibG9jay0+cmVtb3ZlTGFzdChtX3Byb2MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCmlu
ZGV4IDFhZTQzNTU2MTUxN2U5MWMwOWU2NjhjNjllYWZjMTU0YTc0OGJkZTYuLjlhMmU5OGFhNDM4
NTYyODAwOWYxMmE0NDUyNGE0ZDFhZmY1NWY5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAK
QEAgLTUzLDcgKzUzLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5hbWVz
cGFjZSB7CiAKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEIzRWxpbWlu
YXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJi
b3NlID0gZmFsc2U7Cit9CiAKIC8vIEZJWE1FOiBXZSBjb3VsZCB0cmVhdCBQYXRjaHBvaW50cyB3
aXRoIGEgbm9uLWVtcHR5IHNldCBvZiByZWFkcyBhcyBhICJtZW1vcnkgdmFsdWUiIGFuZCBzb21l
aG93CiAvLyBlbGltaW5hdGUgcmVkdW5kYW50IG9uZXMuIFdlIHdvdWxkIG5lZWQgc29tZSB3YXkg
b2YgZGV0ZXJtaW5pbmcgaWYgdHdvIHBhdGNocG9pbnRzIGFyZSByZXBsYWNhYmxlLgpAQCAtMTYw
LDcgKzE2Miw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0lu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQjMgYmVmb3JlIENTRTpcbiIs
IG1fcHJvYyk7CiAgICAgICAgIAogICAgICAgICBtX3Byb2MucmVzZXRWYWx1ZU93bmVycygpOwpA
QCAtMTg4LDcgKzE5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZW1v
cnlWYWx1ZXNBdFRhaWwuYWRkKG1lbW9yeSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVz
c2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJCbG9jayAi
LCAqYmxvY2ssICI6ICIsIGRhdGEsICJcbiIpOwogICAgICAgICB9CiAKQEAgLTE5Niw3ICsxOTgs
NyBAQCBwdWJsaWM6CiAgICAgICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gcG9zdE9yZGVyID0gbV9w
cm9jLmJsb2Nrc0luUG9zdE9yZGVyKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHBvc3RP
cmRlci5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIG1fYmxvY2sgPSBwb3N0T3JkZXJbaV07
Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0VsaW1pbmF0ZUNv
bW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0
YUxvZygiTG9va2luZyBhdCAiLCAqbV9ibG9jaywgIjpcbiIpOwogCiAgICAgICAgICAgICBtX2Rh
dGEgPSBJbXB1cmVCbG9ja0RhdGEoKTsKQEAgLTIyMiw3ICsyMjQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKICAgICAgICAgfQogCi0gICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNz
aW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQjMgYWZ0ZXIgQ1NF
OlxuIiwgbV9wcm9jKTsKIAogICAgICAgICByZXR1cm4gbV9jaGFuZ2VkOwpAQCAtNDg3LDcgKzQ4
OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGV4cGVuc2l2ZSwgYnV0IGluIHRoZSBvdmVyd2hl
bG1pbmcgbWFqb3JpdHkgb2YgY2FzZXMgaXQgd2lsbCBhbG1vc3QgaW1tZWRpYXRlbHkgaGl0IGFu
IAogICAgICAgICAvLyBvcGVyYXRpb24gdGhhdCBpbnRlcmZlcmVzLgogCi0gICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygqbV92YWx1ZSwgIjogbG9va2luZyBm
b3J3YXJkIGZvciBzdG9yZXMgdG8gIiwgKnB0ciwgIi4uLlxuIik7CiAKICAgICAgICAgLy8gRmly
c3Qgc2VhcmNoIGZvcndhcmQgaW4gdGhpcyBiYXNpYyBibG9jay4KQEAgLTU1Nyw3ICs1NTksNyBA
QCBwcml2YXRlOgogICAgICAgICBpZiAobWF0Y2hlcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCM0VsaW1p
bmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBk
YXRhTG9nKCJFbGltaW5hdGluZyAiLCAqbV92YWx1ZSwgIiBkdWUgdG8gIiwgcG9pbnRlckxpc3RE
dW1wKG1hdGNoZXMpLCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7
CkBAIC01NjYsNyArNTY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBk
b21pbmF0aW5nTWF0Y2ggPSBtYXRjaGVzWzBdOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bV9kb21pbmF0b3JzLmRvbWluYXRlcyhkb21pbmF0aW5nTWF0Y2gtPm93bmVyLCBtX2Jsb2NrKSk7
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYg
KEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgRWxpbWluYXRpbmcgdXNpbmcgIiwgKmRvbWluYXRpbmdN
YXRjaCwgIlxuIik7CiAgICAgICAgICAgICBWZWN0b3I8VmFsdWUqPiBleHRyYVZhbHVlczsKICAg
ICAgICAgICAgIGlmIChWYWx1ZSogdmFsdWUgPSByZXBsYWNlKGRvbWluYXRpbmdNYXRjaCwgZXh0
cmFWYWx1ZXMpKSB7CkBAIC01OTAsNyArNTkyLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBWYXJp
YWJsZVZhbHVlKiBnZXQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFyaWFibGVWYWx1ZT4oCiAg
ICAgICAgICAgICBtX2luZGV4LCBHZXQsIG1fdmFsdWUtPm9yaWdpbigpLCB2YXJpYWJsZSk7Ci0g
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQjNFbGltaW5hdGVDb21tb25TdWJleHBy
ZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEluc2Vy
dGluZyBnZXQgb2YgdmFsdWU6ICIsICpnZXQsICJcbiIpOwogICAgICAgICBtX3ZhbHVlLT5yZXBs
YWNlV2l0aElkZW50aXR5KGdldCk7CiAgICAgICAgICAgICAKQEAgLTYxNSwyMyArNjE3LDIzIEBA
IHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyPgogICAgIE1lbW9yeU1hdGNo
ZXMgZmluZE1lbW9yeVZhbHVlKFZhbHVlKiBwdHIsIEhlYXBSYW5nZSByYW5nZSwgY29uc3QgRmls
dGVyJiBmaWx0ZXIpCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEIz
RWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgIGRhdGFMb2coKm1fdmFsdWUsICI6IGxvb2tpbmcgYmFja3dhcmQgZm9yICIsICpwdHIsICIu
Li5cbiIpOwogICAgICAgICAKICAgICAgICAgaWYgKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigp
LT5oYXNGZW5jZSgpKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlm
IChCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiICAgIEdpdmluZyB1cCBiZWNhdXNlIGZlbmNlcy5cbiIpOwog
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYg
KE1lbW9yeVZhbHVlKiBtYXRjaCA9IG1fZGF0YS5tZW1vcnlWYWx1ZXNBdFRhaWwuZmluZChwdHIs
IGZpbHRlcikpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIz
RWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgRm91bmQgIiwgKm1hdGNoLCAiIGxvY2FsbHkuXG4iKTsKICAg
ICAgICAgICAgIHJldHVybiB7IG1hdGNoIH07CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9k
YXRhLndyaXRlcy5vdmVybGFwcyhyYW5nZSkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgR2l2aW5nIHVwIGJlY2F1c2Ug
b2Ygd3JpdGVzLlxuIik7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CkBAIC02
NDIsMjcgKzY0NCwyNyBAQCBwcml2YXRlOgogICAgICAgICBNZW1vcnlNYXRjaGVzIG1hdGNoZXM7
CiAKICAgICAgICAgd2hpbGUgKEJhc2ljQmxvY2sqIGJsb2NrID0gd29ya2xpc3QucG9wKCkpIHsK
LSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29t
bW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgTG9va2luZyBhdCAiLCAqYmxvY2ssICJcbiIpOwogCiAgICAgICAgICAgICBJbXB1
cmVCbG9ja0RhdGEmIGRhdGEgPSBtX2ltcHVyZUJsb2NrRGF0YVtibG9ja107CiAKICAgICAgICAg
ICAgIE1lbW9yeVZhbHVlKiBtYXRjaCA9IGRhdGEubWVtb3J5VmFsdWVzQXRUYWlsLmZpbmQocHRy
LCBmaWx0ZXIpOwogICAgICAgICAgICAgaWYgKG1hdGNoICYmIG1hdGNoICE9IG1fdmFsdWUpIHsK
LSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQjNFbGlt
aW5hdGVDb21tb25TdWJleHByZXNzaW9uc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgRm91bmQgbWF0Y2g6ICIsICptYXRjaCwgIlxuIik7CiAgICAg
ICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQobWF0Y2gpOwogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoZGF0YS53cml0ZXMub3Zlcmxh
cHMocmFuZ2UpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAg
ICAgaWYgKEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEdpdmluZyB1cCBiZWNhdXNlIG9mIHdy
aXRlcy5cbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGlmICghYmxvY2stPm51bVByZWRlY2Vzc29ycygpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEIzRWxpbWluYXRlQ29tbW9u
U3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZygiICAgIEdpdmluZyB1cCBiZWNhdXNlIGl0J3MgbGl2ZSBhdCByb290LlxuIik7CiAgICAg
ICAgICAgICAgICAgLy8gVGhpcyBlc3NlbnRpYWxseSBwcm92ZXMgdGhhdCB0aGlzIGlzIGxpdmUg
YXQgdGhlIHByb2xvZ3VlLiBUaGF0IG1lYW5zIHRoYXQgd2UKICAgICAgICAgICAgICAgICAvLyBj
YW5ub3QgcmVsaWFibHkgb3B0aW1pemUgdGhpcyBjYXNlLgpAQCAtNjcyLDcgKzY3NCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICB3b3JrbGlzdC5wdXNoQWxsKGJsb2NrLT5wcmVkZWNlc3NvcnMo
KSk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEIzRWxp
bWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBHb3QgbWF0Y2hlczogIiwgcG9pbnRlckxpc3REdW1wKG1hdGNoZXMpLCAi
XG4iKTsKICAgICAgICAgcmV0dXJuIG1hdGNoZXM7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzRml4U1NBLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0ZpeFNTQS5jcHAKaW5kZXggZDIwMzgxZDIwMjJmYTA0ZjI2M2E4N2VmYjFiM2NkOTIwMmU2
NzU4YS4uYjI4ZjIxZjExMDdjODI2ZmFmNjJiM2Y4MzcwNjI1ODM2ODdlMzdmNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRml4U1NBLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNGaXhTU0EuY3BwCkBAIC00OCw3ICs0OCw5IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgQjMgewogCiBuYW1lc3BhY2UgewogCi1jb25zdCBib29sIHZlcmJvc2Ug
PSBmYWxzZTsKK25hbWVzcGFjZSBCM0ZpeFNTQUludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29s
IHZlcmJvc2UgPSBmYWxzZTsKK30KIAogdm9pZCBraWxsRGVhZFZhcmlhYmxlcyhQcm9jZWR1cmUm
IHByb2MpCiB7CkBAIC0xNTcsNyArMTU5LDcgQEAgdm9pZCBmaXhTU0FHbG9iYWxseShQcm9jZWR1
cmUmIHByb2MpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIFZhbHVlKiBwaGkgPSBwcm9jLmFkZDxWYWx1ZT4oUGhp
LCB2YXJpYWJsZS0+dHlwZSgpLCBibG9jay0+YXQoMCktPm9yaWdpbigpKTsKLSAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgICAgIGlmIChCM0ZpeFNTQUludGVybmFs
Ojp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAg
ICAgICAgICAgICAiQWRkaW5nIFBoaSBmb3IgIiwgcG9pbnRlckR1bXAodmFyaWFibGUpLCAiIGF0
ICIsICpibG9jaywgIjogIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGRlZXBEdW1wKHByb2Ms
IHBoaSksICJcbiIpOwpAQCAtMjMxLDcgKzIzMyw3IEBAIHZvaWQgZml4U1NBR2xvYmFsbHkoUHJv
Y2VkdXJlJiBwcm9jKQogICAgICAgICAgICAgICAgIFZhcmlhYmxlKiB2YXJpYWJsZSA9IGNhbGNW
YXJUb1ZhcmlhYmxlW2NhbGNWYXItPmluZGV4KCldOwogCiAgICAgICAgICAgICAgICAgVmFsdWUq
IG1hcHBlZFZhbHVlID0gZW5zdXJlTWFwcGluZyh2YXJpYWJsZSwgdXBzaWxvbkluc2VydGlvblBv
aW50LCB1cHNpbG9uT3JpZ2luKTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAg
ICAgICAgICAgICAgIGlmIChCM0ZpeFNTQUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAiTWFwcGVkIHZhbHVl
IGZvciAiLCAqdmFyaWFibGUsICIgd2l0aCBzdWNjZXNzb3IgUGhpICIsICpwaGksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAiIGF0IGVuZCBvZiAiLCAqYmxvY2ssICI6ICIsIHBvaW50ZXJEdW1w
KG1hcHBlZFZhbHVlKSwgIlxuIik7CkBAIC0yNDUsNyArMjQ3LDcgQEAgdm9pZCBmaXhTU0FHbG9i
YWxseShQcm9jZWR1cmUmIHByb2MpCiAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2Nr
KTsKICAgICB9CiAKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChCM0ZpeFNTQUludGVybmFs
Ojp2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2coIkIzIGFmdGVyIFNTQSBjb252ZXJzaW9uOlxu
Iik7CiAgICAgICAgIGRhdGFMb2cocHJvYyk7CiAgICAgfQpAQCAtMjY2LDcgKzI2OCw3IEBAIHZv
aWQgZGVtb3RlVmFsdWVzKFByb2NlZHVyZSYgcHJvYywgY29uc3QgSW5kZXhTZXQ8VmFsdWUqPiYg
dmFsdWVzKQogICAgICAgICAgICAgcGhpTWFwLmFkZCh2YWx1ZSwgcHJvYy5hZGRWYXJpYWJsZSh2
YWx1ZS0+dHlwZSgpKSk7CiAgICAgfQogCi0gICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoQjNG
aXhTU0FJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICBkYXRhTG9nKCJEZW1vdGluZyB2YWx1
ZXMgYXMgZm9sbG93czpcbiIpOwogICAgICAgICBkYXRhTG9nKCIgICBtYXAgPSAiKTsKICAgICAg
ICAgQ29tbWFQcmludGVyIGNvbW1hOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzRm9sZFBhdGhDb25zdGFudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
Rm9sZFBhdGhDb25zdGFudHMuY3BwCmluZGV4IGI5YmRjOGQ0ZjI4OGI4MmM2MzMxZWYzMTBkMzMz
ZTNhNTY0N2UwNGQuLjIyMjUwY2JjN2YzNWM0Y2ZjZjk5MTZhNWFiMmVlNzI2YWZjNGFkNWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZvbGRQYXRoQ29uc3RhbnRzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGb2xkUGF0aENvbnN0YW50cy5jcHAK
QEAgLTQxLDcgKzQxLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5hbWVz
cGFjZSB7CiAKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEIzRm9sZFBh
dGhDb25zdGFudHNJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7
Cit9CiAKIGNsYXNzIEZvbGRQYXRoQ29uc3RhbnRzIHsKIHB1YmxpYzoKQEAgLTU1LDcgKzU3LDcg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAKLSAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChCM0ZvbGRQYXRoQ29uc3RhbnRzSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJCMyBiZWZvcmUgZm9sZGluZyBwYXRoIGNv
bnN0YW50czogXG4iLCBtX3Byb2MsICJcbiIpOwogICAgICAgICAKICAgICAgICAgLy8gRmluZCBh
bGwgb2YgdGhlIHZhbHVlcyB0aGF0IGFyZSB0aGUgc3ViamVjdCBvZiBhIGJyYW5jaCBvciBzd2l0
Y2guIEZvciBhbnkgc3VjY2Vzc29yCkBAIC04MCw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChvdGhlck92ZXJyaWRlLCBvdGhlck92ZXJyaWRlLmJs
b2NrICE9IG92ZXJyaWRlLmJsb2NrKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNGb2xkUGF0aENvbnN0YW50c0ludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIk92ZXJyaWRpbmcgIiwgKnZhbHVlLCAi
IGZyb20gIiwgKmZyb20sICI6ICIsIG92ZXJyaWRlLCAiXG4iKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgZm9yVmFsdWUuYXBwZW5kKG92ZXJyaWRlKTsKQEAgLTE0OSw3ICsxNTEsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG92ZXJyaWRlOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0ZvbGRQ
YXRoQ29uc3RhbnRzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygi
SW4gYmxvY2sgIiwgKmJsb2NrLCAiIGdldHRpbmcgb3ZlcnJpZGUgZm9yICIsICp2YWx1ZSwgIjog
IiwgcmVzdWx0LCAiXG4iKTsKIAogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luZmVyU3dpdGNoZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzSW5mZXJTd2l0Y2hlcy5jcHAKaW5kZXggZjI5ZjRmMDk1NGIy
YWU3MjAwNWExMzAyZWZmY2NkNGUzNGRmYjg3OC4uZWU2MTJmZWYyOGM2YTc3YWFjMTVjOThhOTdh
YzkzOTJiMTNjNWFkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5m
ZXJTd2l0Y2hlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5mZXJTd2l0
Y2hlcy5jcHAKQEAgLTQyLDcgKzQyLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7
CiAKIG5hbWVzcGFjZSB7CiAKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNl
IEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBm
YWxzZTsKK30KIAogY2xhc3MgSW5mZXJTd2l0Y2hlcyB7CiBwdWJsaWM6CkBAIC01NSw3ICs1Nyw3
IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIHJ1bigpCiAgICAgewotICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICAgICAgZGF0YUxvZygiQjMgYmVmb3JlIGluZmVyU3dpdGNoZXM6XG4iLCBtX3Byb2MpOwog
ICAgICAgICAKICAgICAgICAgYm9vbCBjaGFuZ2VkID0gdHJ1ZTsKQEAgLTYzLDcgKzY1LDcgQEAg
cHVibGljOgogICAgICAgICB3aGlsZSAoY2hhbmdlZCkgewogICAgICAgICAgICAgY2hhbmdlZCA9
IGZhbHNlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCJQZXJmb3JtaW5nIGZpeHBvaW50IGl0ZXJhdGlvbjpcbiIpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jKQpAQCAtNzgs
NyArODAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fcHJvYy5kZWxl
dGVPcnBoYW5zKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICAgICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgICAgIGRhdGFMb2coIkIzIGFmdGVyIGluZmVyU3dpdGNoZXM6XG4iLCBtX3Byb2MpOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTk2LDEwICs5OCwxMCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKICAgICAgICAgU3dpdGNo
RGVzY3JpcHRpb24gZGVzY3JpcHRpb24gPSBkZXNjcmliZShibG9jayk7Ci0gICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICBpZiAoQjNJbmZlclN3aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICBkYXRhTG9nKCJEZXNjcmlwdGlvbiBvZiBwcmltYXJ5IGJsb2NrICIsICpibG9j
aywgIjogIiwgZGVzY3JpcHRpb24sICJcbiIpOwogICAgICAgICBpZiAoIWRlc2NyaXB0aW9uKSB7
Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0luZmVyU3dpdGNo
ZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGlu
ZyBiZWNhdXNlIG5vdCBzd2l0Y2gtbGlrZS5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CkBAIC0xMTUsMTcgKzExNywxNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKHZhbHVlID09IGRlc2NyaXB0aW9uLmJyYW5j
aCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQor
ICAgICAgICAgICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgICAgIGRhdGFMb2coIiAgICBCYWlsaW5nIGJlY2F1c2Ugb2YgIiwgZGVlcER1bXAobV9w
cm9jLCB2YWx1ZSksICJcbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGJsb2NrLT5wcmVk
ZWNlc3NvcigwKTsKICAgICAgICAgU3dpdGNoRGVzY3JpcHRpb24gcHJlZGVjZXNzb3JEZXNjcmlw
dGlvbiA9IGRlc2NyaWJlKHByZWRlY2Vzc29yKTsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRh
dGFMb2coIiAgICBEZXNjcmlwdGlvbiBvZiBwcmVkZWNlc3NvciBibG9jayAiLCAqcHJlZGVjZXNz
b3IsICI6ICIsIHByZWRlY2Vzc29yRGVzY3JpcHRpb24sICJcbiIpOwogICAgICAgICBpZiAoIXBy
ZWRlY2Vzc29yRGVzY3JpcHRpb24pIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgaWYgKEIzSW5mZXJTd2l0Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2coIiAgICBCYWlsaW5nIGJlY2F1c2Ugbm90IHN3aXRjaC1saWtlLlxuIik7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTEzMyw3ICsxMzUsNyBAQCBw
cml2YXRlOgogICAgICAgICAvLyBCb3RoIHVzIGFuZCB0aGUgcHJlZGVjZXNzb3IgYXJlIHN3aXRj
aC1saWtlLCBidXQgdGhhdCBkb2Vzbid0IG1lYW4gdGhhdCB3ZSdyZSBjb21wYXRpYmxlLgogICAg
ICAgICAvLyBXZSBtYXkgYmUgc3dpdGNoaW5nIG9uIGRpZmZlcmVudCB2YWx1ZXMhCiAgICAgICAg
IGlmIChkZXNjcmlwdGlvbi5zb3VyY2UgIT0gcHJlZGVjZXNzb3JEZXNjcmlwdGlvbi5zb3VyY2Up
IHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEIzSW5mZXJTd2l0
Y2hlc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBCYWls
aW5nIGJlY2F1c2Ugc291cmNlcyBkb24ndCBtYXRjaC5cbiIpOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CkBAIC0xNDMsNyArMTQ1LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Ly8ganVzdCB0b3RhbGx5IHJlZHVuZGFudCBhbmQgd2Ugc2hvdWxkIGJlIGdldHRpbmcgcmlkIG9m
IGl0LiBCdXQgd2UgZG9uJ3QgaGFuZGxlIHRoYXQgaGVyZSwKICAgICAgICAgLy8geWV0LgogICAg
ICAgICBpZiAocHJlZGVjZXNzb3JEZXNjcmlwdGlvbi5mYWxsVGhyb3VnaC5ibG9jaygpICE9IGJs
b2NrKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChCM0luZmVy
U3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
QmFpbGluZyBiZWNhdXNlIGZhbGwtdGhyb3VnaCBvZiBwcmVkZWNlc3NvciBpcyBub3QgdGhlIHBy
aW1hcnkgYmxvY2suXG4iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpA
QCAtMTUxLDE0ICsxNTMsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQg
dGhlcmUgYWluJ3Qgbm8gbG9vcHMuCiAgICAgICAgIGlmIChkZXNjcmlwdGlvbi5mYWxsVGhyb3Vn
aC5ibG9jaygpID09IGJsb2NrCiAgICAgICAgICAgICB8fCBkZXNjcmlwdGlvbi5mYWxsVGhyb3Vn
aC5ibG9jaygpID09IHByZWRlY2Vzc29yKSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGluZyBiZWNhdXNlIG9mIGZhbGwtdGhyb3VnaCBsb29w
LlxuIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgZm9y
IChTd2l0Y2hDYXNlIHN3aXRjaENhc2UgOiBkZXNjcmlwdGlvbi5jYXNlcykgewogICAgICAgICAg
ICAgaWYgKHN3aXRjaENhc2UudGFyZ2V0QmxvY2soKSA9PSBibG9jawogICAgICAgICAgICAgICAg
IHx8IHN3aXRjaENhc2UudGFyZ2V0QmxvY2soKSA9PSBwcmVkZWNlc3NvcikgewotICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChCM0luZmVyU3dpdGNoZXNJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEJhaWxp
bmcgYmVjYXVzZSBvZiBsb29wIGluIHByaW1hcnkgY2FzZXMuXG4iKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CkBAIC0xNjYsMTMgKzE2OCwxMyBAQCBwcml2
YXRlOgogICAgICAgICBmb3IgKFN3aXRjaENhc2Ugc3dpdGNoQ2FzZSA6IHByZWRlY2Vzc29yRGVz
Y3JpcHRpb24uY2FzZXMpIHsKICAgICAgICAgICAgIGlmIChzd2l0Y2hDYXNlLnRhcmdldEJsb2Nr
KCkgPT0gYmxvY2sKICAgICAgICAgICAgICAgICB8fCBzd2l0Y2hDYXNlLnRhcmdldEJsb2NrKCkg
PT0gcHJlZGVjZXNzb3IpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgICAgICBpZiAoQjNJbmZlclN3aXRjaGVzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2coIiAgICBCYWlsaW5nIGJlY2F1c2Ugb2YgbG9vcCBpbiBwcmVkZWNl
c3NvciBjYXNlcy5cbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
IGlmIChCM0luZmVyU3dpdGNoZXNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFM
b2coIiAgICBEb2luZyBpdCFcbiIpOwogICAgICAgICAvLyBXZSdyZSBjb21taXR0ZWQgdG8gZG9p
bmcgdGhlIHRoaW5nLgogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcAppbmRleCA5NjNj
MTBlZGM1ZTQ5MzlmNWZiZTJlZDQyNTY0ZGQzZDdlMDc2M2RkLi4xNDU2N2ZjYzViZGFjOWUwZjhl
NzE4MTY4ZDZmZjI3NzBjNjQ4ZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQWlyQXJnLmgiCiAj
aW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQmxvY2tJbnNlcnRp
b25TZXQuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKQEAgLTM5LDExICs0MCwxNSBAQAog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAordXNpbmcgQXJnID0gQWlyOjpBcmc7
Cit1c2luZyBDb2RlID0gQWlyOjpDb2RlOwordXNpbmcgVG1wID0gQWlyOjpUbXA7CisKIG5hbWVz
cGFjZSB7CiAKLWNsYXNzIExvd2VyTWFjcm9zIHsKK2NsYXNzIExvd2VyTWFjcm9zQWZ0ZXJPcHRp
bWl6YXRpb25zIHsKIHB1YmxpYzoKLSAgICBMb3dlck1hY3JvcyhQcm9jZWR1cmUmIHByb2MpCisg
ICAgTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMoUHJvY2VkdXJlJiBwcm9jKQogICAgICAg
ICA6IG1fcHJvYyhwcm9jKQogICAgICAgICAsIG1fYmxvY2tJbnNlcnRpb25TZXQocHJvYykKICAg
ICAgICAgLCBtX2luc2VydGlvblNldChwcm9jKQpAQCAtMTgzLDcgKzE4OCw3IEBAIHByaXZhdGU6
CiAKIGJvb2wgbG93ZXJNYWNyb3NJbXBsKFByb2NlZHVyZSYgcHJvYykKIHsKLSAgICBMb3dlck1h
Y3JvcyBsb3dlck1hY3Jvcyhwcm9jKTsKKyAgICBMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9u
cyBsb3dlck1hY3Jvcyhwcm9jKTsKICAgICByZXR1cm4gbG93ZXJNYWNyb3MucnVuKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggMTQ4OWMzMTFj
NjNlZTAwMmZhOTFhNzYxYjFkNjA2MGNhZjRlMjkzMS4uNzY0ZGI0Y2JkODY4ZGQ4NTBiZDhhM2Fi
ZDE0ODJhZmE0MjM4NDJkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fp
ci5jcHAKQEAgLTY5LDIxICs2OSwyNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIz
IHsKIAotdXNpbmcgbmFtZXNwYWNlIEFpcjsKLQogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2
ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgQjNMb3dlclRvQWlySW50ZXJuYWwgeworc3RhdGlj
IGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQorCit1c2luZyBBcmcgPSBBaXI6OkFyZzsK
K3VzaW5nIEluc3QgPSBBaXI6Okluc3Q7Cit1c2luZyBDb2RlID0gQWlyOjpDb2RlOwordXNpbmcg
VG1wID0gQWlyOjpUbXA7CiAKIC8vIEZJWE1FOiBXZSB3b3VsZG4ndCBuZWVkIHRoaXMgaWYgQWly
IHN1cHBvcnRlZCBXaWR0aCBtb2RpZmllcnMgaW4gQWlyOjpLaW5kLgogLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTI0NwogI2RlZmluZSBPUENPREVfRk9SX1dJ
RFRIKG9wY29kZSwgd2lkdGgpICggXAotICAgICh3aWR0aCkgPT0gV2lkdGg4ID8gb3Bjb2RlICMj
IDggOiBcCi0gICAgKHdpZHRoKSA9PSBXaWR0aDE2ID8gb3Bjb2RlICMjIDE2IDogXAotICAgICh3
aWR0aCkgPT0gV2lkdGgzMiA/IG9wY29kZSAjIyAzMiA6IFwKLSAgICBvcGNvZGUgIyMgNjQpCisg
ICAgKHdpZHRoKSA9PSBXaWR0aDggPyBBaXI6Om9wY29kZSAjIyA4IDogXAorICAgICh3aWR0aCkg
PT0gV2lkdGgxNiA/IEFpcjo6b3Bjb2RlICMjIDE2IDogICAgXAorICAgICh3aWR0aCkgPT0gV2lk
dGgzMiA/IEFpcjo6b3Bjb2RlICMjIDMyIDogICAgXAorICAgIEFpcjo6b3Bjb2RlICMjIDY0KQog
I2RlZmluZSBPUENPREVfRk9SX0NBTk9OSUNBTF9XSURUSChvcGNvZGUsIHdpZHRoKSAoIFwKLSAg
ICAod2lkdGgpID09IFdpZHRoNjQgPyBvcGNvZGUgIyMgNjQgOiBvcGNvZGUgIyMgMzIpCisgICAg
KHdpZHRoKSA9PSBXaWR0aDY0ID8gQWlyOjpvcGNvZGUgIyMgNjQgOiBBaXI6Om9wY29kZSAjIyAz
MikKIAogY2xhc3MgTG93ZXJUb0FpciB7CiBwdWJsaWM6CkBAIC0xMDcsNiArMTEyLDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBydW4oKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFp
cjsKICAgICAgICAgZm9yIChCMzo6QmFzaWNCbG9jayogYmxvY2sgOiBtX3Byb2NlZHVyZSkKICAg
ICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXSA9IG1fY29kZS5hZGRCbG9jayhibG9jay0+
ZnJlcXVlbmN5KCkpOwogICAgICAgICAKQEAgLTExNCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBzd2l0Y2ggKHZhbHVlLT5vcGNvZGUoKSkgewogICAgICAgICAgICAgY2FzZSBQaGk6
IHsKICAgICAgICAgICAgICAgICBtX3BoaVRvVG1wW3ZhbHVlXSA9IG1fY29kZS5uZXdUbXAodmFs
dWUtPnJlc3VsdEJhbmsoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICAgICAgaWYgKEIzTG93ZXJUb0FpckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCJQaGkgdG1wIGZvciAiLCAqdmFsdWUsICI6ICIsIG1fcGhpVG9UbXBb
dmFsdWVdLCAiXG4iKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAg
LTE0Niw3ICsxNTIsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgICAgIG1faXNSYXJlID0gIW1fZmFz
dFdvcmtsaXN0LnNhdyhibG9jayk7CiAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgaWYgKEIzTG93ZXJUb0FpckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAg
IGRhdGFMb2coIkxvd2VyaW5nIEJsb2NrICIsICpibG9jaywgIjpcbiIpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgc3VjY2Vzc29ycyBhcmUgc2V0IHVw
IGNvcnJlY3RseS4KQEAgLTE2MywxMCArMTY5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICBpZiAobV9sb2NrZWQuY29udGFpbnMobV92YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgIG1faW5zdHMuYXBwZW5kKFZlY3RvcjxJbnN0PigpKTsK
LSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQjNMb3dl
clRvQWlySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkxv
d2VyaW5nICIsIGRlZXBEdW1wKG1fcHJvY2VkdXJlLCBtX3ZhbHVlKSwgIjpcbiIpOwogICAgICAg
ICAgICAgICAgIGxvd2VyKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoQjNMb3dlclRvQWlySW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAg
ICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9pbnN0cy5sYXN0KCkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgIiwgaW5zdCwgIlxuIik7CiAgICAgICAgICAgICAg
ICAgfQpAQCAtMzc5LDcgKzM4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmVhbFRt
cCA9IG1fY29kZS5uZXdUbXAodmFsdWUtPnJlc3VsdEJhbmsoKSk7CiAgICAgICAgICAgICAgICAg
aWYgKG1fcHJvY2VkdXJlLmlzRmFzdENvbnN0YW50KHZhbHVlLT5rZXkoKSkpCiAgICAgICAgICAg
ICAgICAgICAgIG1fY29kZS5hZGRGYXN0VG1wKHJlYWxUbXApOwotICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChCM0xvd2VyVG9BaXJJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiVG1wIGZvciAiLCAqdmFsdWUsICI6
ICIsIHJlYWxUbXAsICJcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdG1wID0gcmVh
bFRtcDsKQEAgLTkwNiw2ICs5MTIsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPEFpcjo6T3Bj
b2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2ND4KICAgICB2b2lkIGFwcGVuZFNoaWZ0
KFZhbHVlKiB2YWx1ZSwgVmFsdWUqIGFtb3VudCkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVz
cGFjZSBBaXI7CiAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUob3Bj
b2RlMzIsIG9wY29kZTY0LCB2YWx1ZS0+dHlwZSgpKTsKICAgICAgICAgCiAgICAgICAgIGlmIChp
bW0oYW1vdW50KSkgewpAQCAtMTAxOSw2ICsxMDI2LDcgQEAgcHJpdmF0ZToKIAogICAgIEluc3Qg
Y3JlYXRlU3RvcmUoQWlyOjpLaW5kIG1vdmUsIFZhbHVlKiB2YWx1ZSwgY29uc3QgQXJnJiBkZXN0
KQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAgaWYgKGF1dG8g
aW1tX3ZhbHVlID0gaW1tKHZhbHVlKSkgewogICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSAmJiBp
bW1fdmFsdWUudmFsdWUoKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChtb3ZlLm9w
Y29kZSkgewpAQCAtMTA0Myw2ICsxMDUxLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBBaXI6Ok9w
Y29kZSBzdG9yZU9wY29kZShXaWR0aCB3aWR0aCwgQmFuayBiYW5rKQogICAgIHsKKyAgICAgICAg
dXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAgICAgc3dpdGNoICh3aWR0aCkgewogICAgICAgICBj
YXNlIFdpZHRoODoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0gR1ApOwpAQCAt
MTA3Myw2ICsxMDgyLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGFwcGVuZFN0b3JlKFZh
bHVlKiB2YWx1ZSwgY29uc3QgQXJnJiBkZXN0KQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNw
YWNlIEFpcjsKICAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IHZhbHVlLT5hczxNZW1vcnlW
YWx1ZT4oKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobWVtb3J5LT5pc1N0b3JlKCkpOwogCkBA
IC0xMTAwLDYgKzExMTAsNyBAQCBwcml2YXRlOgogCiAgICAgQWlyOjpPcGNvZGUgbW92ZUZvclR5
cGUoVHlwZSB0eXBlKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsKICAgICAg
ICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgSW50MzI6CiAgICAgICAgICAgICByZXR1
cm4gTW92ZTMyOwpAQCAtMTExOSw2ICsxMTMwLDcgQEAgcHJpdmF0ZToKIAogICAgIEFpcjo6T3Bj
b2RlIHJlbGF4ZWRNb3ZlRm9yVHlwZShUeXBlIHR5cGUpCiAgICAgeworICAgICAgICB1c2luZyBu
YW1lc3BhY2UgQWlyOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBJbnQz
MjoKICAgICAgICAgY2FzZSBJbnQ2NDoKQEAgLTExNjIsOCArMTE3NCw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBwcmludChWYWx1ZSogb3JpZ2luLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAg
ICAgewogICAgICAgICBhdXRvIHByaW50TGlzdCA9IFByaW50ZXI6Om1ha2VQcmludFJlY29yZExp
c3QoYXJndW1lbnRzLi4uKTsKLSAgICAgICAgYXV0byBwcmludFNwZWNpYWwgPSBzdGF0aWNfY2Fz
dDxQcmludFNwZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPFByaW50
U3BlY2lhbD4ocHJpbnRMaXN0KSkpOwotICAgICAgICBJbnN0IGluc3QoUGF0Y2gsIG9yaWdpbiwg
QXJnOjpzcGVjaWFsKHByaW50U3BlY2lhbCkpOworICAgICAgICBhdXRvIHByaW50U3BlY2lhbCA9
IHN0YXRpY19jYXN0PEFpcjo6UHJpbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwoc3RkOjpt
YWtlX3VuaXF1ZTxBaXI6OlByaW50U3BlY2lhbD4ocHJpbnRMaXN0KSkpOworICAgICAgICBJbnN0
IGluc3QoQWlyOjpQYXRjaCwgb3JpZ2luLCBBcmc6OnNwZWNpYWwocHJpbnRTcGVjaWFsKSk7CiAg
ICAgICAgIFByaW50ZXI6OmFwcGVuZEFpckFyZ3MoaW5zdCwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50
cz4oYXJndW1lbnRzKS4uLik7CiAgICAgICAgIGFwcGVuZChXVEZNb3ZlKGluc3QpKTsKICAgICB9
CkBAIC0xNzYyLDYgKzE3NzQsNyBAQCBwcml2YXRlOgogCiAgICAgSW5zdCBjcmVhdGVCcmFuY2go
VmFsdWUqIHZhbHVlLCBib29sIGludmVydGVkID0gZmFsc2UpCiAgICAgeworICAgICAgICB1c2lu
ZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICByZXR1cm4gY3JlYXRlR2VuZXJpY0NvbXBhcmUoCiAg
ICAgICAgICAgICB2YWx1ZSwKICAgICAgICAgICAgIFt0aGlzXSAoCkBAIC0xODQ1LDYgKzE4NTgs
NyBAQCBwcml2YXRlOgogCiAgICAgSW5zdCBjcmVhdGVDb21wYXJlKFZhbHVlKiB2YWx1ZSwgYm9v
bCBpbnZlcnRlZCA9IGZhbHNlKQogICAgIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEFpcjsK
ICAgICAgICAgcmV0dXJuIGNyZWF0ZUdlbmVyaWNDb21wYXJlKAogICAgICAgICAgICAgdmFsdWUs
CiAgICAgICAgICAgICBbdGhpc10gKApAQCAtMTkyNCw2ICsxOTM4LDcgQEAgcHJpdmF0ZToKICAg
ICB9OwogICAgIEluc3QgY3JlYXRlU2VsZWN0KGNvbnN0IE1vdmVDb25kaXRpb25hbGx5Q29uZmln
JiBjb25maWcpCiAgICAgeworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICBh
dXRvIGNyZWF0ZVNlbGVjdEluc3RydWN0aW9uID0gWyZdIChBaXI6Ok9wY29kZSBvcGNvZGUsIGNv
bnN0IEFyZyYgY29uZGl0aW9uLCBBcmdQcm9taXNlJiBsZWZ0LCBBcmdQcm9taXNlJiByaWdodCkg
LT4gSW5zdCB7CiAgICAgICAgICAgICBpZiAoaXNWYWxpZEZvcm0ob3Bjb2RlLCBjb25kaXRpb24u
a2luZCgpLCBsZWZ0LmtpbmQoKSwgcmlnaHQua2luZCgpLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFy
Zzo6VG1wKSkgewogICAgICAgICAgICAgICAgIFRtcCByZXN1bHQgPSB0bXAobV92YWx1ZSk7CkBA
IC0xOTg3LDYgKzIwMDIsNyBAQCBwcml2YXRlOgogICAgIAogICAgIGJvb2wgdHJ5QXBwZW5kTGVh
KCkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAgICAgICAgIEFpcjo6T3Bj
b2RlIGxlYU9wY29kZSA9IHRyeU9wY29kZUZvclR5cGUoTGVhMzIsIExlYTY0LCBtX3ZhbHVlLT50
eXBlKCkpOwogICAgICAgICBpZiAoIWlzVmFsaWRGb3JtKGxlYU9wY29kZSwgQXJnOjpJbmRleCwg
QXJnOjpUbXApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjExNiw2ICsyMTMyLDcg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYXBwZW5kWDg2RGl2KEIzOjpPcGNvZGUgb3ApCiAgICAg
eworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICBBaXI6Ok9wY29kZSBjb252
ZXJ0VG9Eb3VibGVXb3JkOwogICAgICAgICBBaXI6Ok9wY29kZSBkaXY7CiAgICAgICAgIHN3aXRj
aCAobV92YWx1ZS0+dHlwZSgpKSB7CkBAIC0yMTQzLDYgKzIxNjAsNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBhcHBlbmRYODZVRGl2KEIzOjpPcGNvZGUgb3ApCiAgICAgeworICAgICAgICB1c2lu
ZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICBBaXI6Ok9wY29kZSBkaXYgPSBtX3ZhbHVlLT50eXBl
KCkgPT0gSW50MzIgPyBYODZVRGl2MzIgOiBYODZVRGl2NjQ7CiAKICAgICAgICAgQVNTRVJUKG9w
ID09IFVEaXYgfHwgb3AgPT0gVU1vZCk7CkBAIC0yMTc4LDYgKzIxOTYsNyBAQCBwcml2YXRlOgog
ICAgIC8vIGdlbmVyYXRlZC4gSXQgYXNzdW1lcyB0aGF0IHlvdSd2ZSBjb25zdW1lZCBldmVyeXRo
aW5nIHRoYXQgbmVlZHMgdG8gYmUgY29uc3VtZWQuCiAgICAgdm9pZCBhcHBlbmRDQVMoVmFsdWUq
IGF0b21pY1ZhbHVlLCBib29sIGludmVydCkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFj
ZSBBaXI7CiAgICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBhdG9taWNWYWx1ZS0+YXM8QXRv
bWljVmFsdWU+KCk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGF0b21pYyk7CiAgICAgICAgIApA
QCAtMjM0MCw2ICsyMzU5LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGFwcGVuZEdlbmVy
YWxBdG9taWMoQWlyOjpPcGNvZGUgb3Bjb2RlLCBDb21tdXRhdGl2aXR5IGNvbW11dGF0aXZpdHkg
PSBOb3RDb21tdXRhdGl2ZSkKICAgICB7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7CiAg
ICAgICAgIEF0b21pY1ZhbHVlKiBhdG9taWMgPSBtX3ZhbHVlLT5hczxBdG9taWNWYWx1ZT4oKTsK
ICAgICAgICAgCiAgICAgICAgIEFyZyBhZGRyZXNzID0gYWRkcihtX3ZhbHVlKTsKQEAgLTI0MjQs
NiArMjQ0NCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBsb3dlcigpCiAgICAgeworICAg
ICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwogICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPm9wY29k
ZSgpKSB7CiAgICAgICAgIGNhc2UgQjM6Ok5vcDogewogICAgICAgICAgICAgLy8gWWVzLCB3ZSB3
aWxsIHRvdGFsbHkgc2VlIE5vcCdzIGJlY2F1c2Ugc29tZSBwaGFzZXMgd2lsbCByZXBsYWNlV2l0
aE5vcCgpIGluc3RlYWQgb2YKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1BhdGNocG9pbnRTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNo
cG9pbnRTcGVjaWFsLmNwcAppbmRleCA0N2YwYWJkMmZmZjNiNTA1NzA4MmQ3MDNhNTE0MjNjOGNi
MzhiMGIwLi5iMzc1Y2RkMGUwZmIwYmYwODYyMDRkMTI3NjNhYTBkNTJiMTgxMmEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwCkBAIC0z
NCw3ICszNCw4IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi11c2luZyBu
YW1lc3BhY2UgQWlyOwordXNpbmcgQXJnID0gQWlyOjpBcmc7Cit1c2luZyBJbnN0ID0gQWlyOjpJ
bnN0OwogCiBQYXRjaHBvaW50U3BlY2lhbDo6UGF0Y2hwb2ludFNwZWNpYWwoKQogewpAQCAtMTM1
LDggKzEzNiw3IEBAIGJvb2wgUGF0Y2hwb2ludFNwZWNpYWw6OmFkbWl0c0V4dGVuZGVkT2Zmc2V0
QWRkcihJbnN0JiBpbnN0LCB1bnNpZ25lZCBhcmdJbmRleCkKICAgICByZXR1cm4gYWRtaXRzU3Rh
Y2soaW5zdCwgYXJnSW5kZXgpOwogfQogCi1DQ2FsbEhlbHBlcnM6Okp1bXAgUGF0Y2hwb2ludFNw
ZWNpYWw6OmdlbmVyYXRlKAotICAgIEluc3QmIGluc3QsIENDYWxsSGVscGVycyYgaml0LCBHZW5l
cmF0aW9uQ29udGV4dCYgY29udGV4dCkKK0NDYWxsSGVscGVyczo6SnVtcCBQYXRjaHBvaW50U3Bl
Y2lhbDo6Z2VuZXJhdGUoSW5zdCYgaW5zdCwgQ0NhbGxIZWxwZXJzJiBqaXQsIEFpcjo6R2VuZXJh
dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgUGF0Y2hwb2ludFZhbHVlKiB2YWx1ZSA9IGlu
c3Qub3JpZ2luLT5hczxQYXRjaHBvaW50VmFsdWU+KCk7CiAgICAgQVNTRVJUKHZhbHVlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAK
aW5kZXggMWM3YjBkMDAyYTFiOTE5ZTIzMGZlNjQ2YjAzMmU0YTRlOTljZDE2MS4uNmQzMWY3Y2Jj
MDQ2N2NiZGQ2ZjZlM2M1OGM2MGNjM2U5MTdjY2ViYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAKQEAgLTM5LDcgKzM5LDkgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVy
Ym9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEIzUmVkdWNlRG91YmxlVG9GbG9hdEludGVybmFsIHsK
K3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIGJvb2wgcHJpbnRSZW1haW5p
bmdDb252ZXJzaW9ucyA9IGZhbHNlOwogCiBjbGFzcyBEb3VibGVUb0Zsb2F0UmVkdWN0aW9uIHsK
QEAgLTEyOCw3ICsxMzAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICB9IHdo
aWxlIChjaGFuZ2VkUGhpU3RhdGUpOwogCi0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAg
IGlmIChCM1JlZHVjZURvdWJsZVRvRmxvYXRJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAg
ICAgZGF0YUxvZygiQ29udmVyc2lvbiBjYW5kaWRhdGVzOlxuIik7CiAgICAgICAgICAgICBmb3Ig
KEJhc2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jZWR1cmUpIHsKICAgICAgICAgICAgICAgICBmb3Ig
KFZhbHVlKiB2YWx1ZSA6ICpibG9jaykgewpAQCAtMTkyLDcgKzE5NCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gd2hpbGUgKGNoYW5nZWRQaGlTdGF0ZSk7CiAKLSAgICAg
ICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKEIzUmVkdWNlRG91YmxlVG9GbG9hdEludGVy
bmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJQaGlzIGNvbnRhaW5pbmcgZmxv
YXQgdmFsdWVzOlxuIik7CiAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9w
cm9jZWR1cmUpIHsKICAgICAgICAgICAgICAgICBmb3IgKFZhbHVlKiB2YWx1ZSA6ICpibG9jaykg
ewpAQCAtNDg5LDEzICs0OTEsMTMgQEAgdm9pZCByZWR1Y2VEb3VibGVUb0Zsb2F0KFByb2NlZHVy
ZSYgcHJvY2VkdXJlKQogewogICAgIFBoYXNlU2NvcGUgcGhhc2VTY29wZShwcm9jZWR1cmUsICJy
ZWR1Y2VEb3VibGVUb0Zsb2F0Iik7CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQjNSZWR1
Y2VEb3VibGVUb0Zsb2F0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkJlZm9y
ZSBEb3VibGVUb0Zsb2F0UmVkdWN0aW9uOlxuIiwgcHJvY2VkdXJlLCAiXG4iKTsKIAogICAgIERv
dWJsZVRvRmxvYXRSZWR1Y3Rpb24gZG91YmxlVG9GbG9hdFJlZHVjdGlvbihwcm9jZWR1cmUpOwog
ICAgIGRvdWJsZVRvRmxvYXRSZWR1Y3Rpb24ucnVuKCk7CiAKLSAgICBpZiAodmVyYm9zZSkKKyAg
ICBpZiAoQjNSZWR1Y2VEb3VibGVUb0Zsb2F0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRh
dGFMb2coIkFmdGVyIERvdWJsZVRvRmxvYXRSZWR1Y3Rpb246XG4iLCBwcm9jZWR1cmUsICJcbiIp
OwogCiAgICAgcHJpbnRHcmFwaElmQ29udmVydGluZyhwcm9jZWR1cmUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCmluZGV4IGMyMmU5YjQ1M2QwOTUy
OTY3ZjIyYTZmZmJhNjQ5MWZmZDAwZjljNmMuLjU1MDJkNWU0N2U1ODcwNjEwNjJiMTY4NmQ5YmIz
YzI2OTM1OGI5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVj
ZVN0cmVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJl
bmd0aC5jcHAKQEAgLTg4LDcgKzg4LDkgQEAgbmFtZXNwYWNlIHsKIC8vIGNvbnN0YW50cyB0aGVu
IHRoZSBjYW5vbmljYWwgZm9ybSBpbnZvbHZlcyB0aGUgbG93ZXItaW5kZXhlZCB2YWx1ZSBmaXJz
dC4gR2l2ZW4gQWRkKHgsIHkpLCBpdCdzCiAvLyBjYW5vbmljYWwgaWYgeC0+aW5kZXgoKSA8PSB5
LT5pbmRleCgpLgogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBCM1JlZHVjZVN0
cmVuZ3RoSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQog
CiAvLyBGSVhNRTogVGhpcyBJbnRSYW5nZSBzdHVmZiBzaG91bGQgYmUgcmVmYWN0b3JlZCBpbnRv
IGEgZ2VuZXJhbCBjb25zdGFudCBwcm9wYWdhdG9yLiBJdCdzIHdlaXJkCiAvLyB0aGF0IGl0J3Mg
anVzdCBzaXR0aW5nIGhlcmUgaW4gdGhpcyBmaWxlLgpAQCAtNDE0LDcgKzQxNiw3IEBAIHB1Ymxp
YzoKIAogICAgICAgICAgICAgaWYgKGZpcnN0KQogICAgICAgICAgICAgICAgIGZpcnN0ID0gZmFs
c2U7Ci0gICAgICAgICAgICBlbHNlIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICBlbHNlIGlm
IChCM1JlZHVjZVN0cmVuZ3RoSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICBk
YXRhTG9nKCJCMyBhZnRlciBpdGVyYXRpb24gIyIsIGluZGV4IC0gMSwgIiBvZiByZWR1Y2VTdHJl
bmd0aDpcbiIpOwogICAgICAgICAgICAgICAgIGRhdGFMb2cobV9wcm9jKTsKICAgICAgICAgICAg
IH0KQEAgLTQ1Miw3ICs0NTQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbV9ibG9jayA9
IGJsb2NrOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZvciAobV9pbmRleCA9
IDA7IG1faW5kZXggPCBibG9jay0+c2l6ZSgpOyArK21faW5kZXgpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEIzUmVkdWNlU3Ry
ZW5ndGhJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
ZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTG9va2luZyBhdCAiLCAqYmxvY2ssICIg
IyIsIG1faW5kZXgsICI6ICIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVlcER1bXAo
bV9wcm9jLCBibG9jay0+YXQobV9pbmRleCkpLCAiXG4iKTsKQEAgLTIwMzUsNyArMjAzNyw3IEBA
IHByaXZhdGU6CiAgICAgLy8gZWFybHkuCiAgICAgdm9pZCBzcGVjaWFsaXplU2VsZWN0KFZhbHVl
KiBzb3VyY2UpCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEIzUmVk
dWNlU3RyZW5ndGhJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIlNwZWNp
YWxpemluZyBzZWxlY3Q6ICIsIGRlZXBEdW1wKG1fcHJvYywgc291cmNlKSwgIlxuIik7CiAKICAg
ICAgICAgLy8gVGhpcyBtdXRhdGVzIHN0YXJ0SW5kZXggdG8gYWNjb3VudCBmb3IgdGhlIGZhY3Qg
dGhhdCBtX2Jsb2NrIGdvdCB0aGUgZnJvbnQgb2YgaXQKQEAgLTIyNzYsNyArMjI3OCw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHNpbXBsaWZ5Q0ZHKCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJi
b3NlKSB7CisgICAgICAgIGlmIChCM1JlZHVjZVN0cmVuZ3RoSW50ZXJuYWw6OnZlcmJvc2UpIHsK
ICAgICAgICAgICAgIGRhdGFMb2coIkJlZm9yZSBzaW1wbGlmeUNGRzpcbiIpOwogICAgICAgICAg
ICAgZGF0YUxvZyhtX3Byb2MpOwogICAgICAgICB9CkBAIC0yMzAxLDcgKzIzMDMsNyBAQCBwcml2
YXRlOgogICAgICAgICAvLyBpdGVyYXRpb25zIG5lZWRlZCB0byBraWxsIGEgbG90IG9mIGNvZGUu
CiAKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fcHJvYykgewotICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoQjNSZWR1Y2VTdHJlbmd0aEludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIGJsb2NrICIs
ICpibG9jaywgIjpcbiIpOwogCiAgICAgICAgICAgICBjaGVja1ByZWRlY2Vzc29yVmFsaWRpdHko
KTsKQEAgLTIzMTcsNyArMjMxOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICYm
IHN1Y2Nlc3Nvci0+bGFzdCgpLT5vcGNvZGUoKSA9PSBKdW1wKSB7CiAgICAgICAgICAgICAgICAg
ICAgIEJhc2ljQmxvY2sqIG5ld1N1Y2Nlc3NvciA9IHN1Y2Nlc3Nvci0+c3VjY2Vzc29yQmxvY2so
MCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdTdWNjZXNzb3IgIT0gc3VjY2Vzc29yKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKEIzUmVkdWNlU3RyZW5ndGhJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJSZXBsYWNpbmcgIiwgcG9pbnRlckR1bXAoYmxvY2spLCAiLT4iLCBwb2ludGVyRHVt
cChzdWNjZXNzb3IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHdpdGggIiwg
cG9pbnRlckR1bXAoYmxvY2spLCAiLT4iLCBwb2ludGVyRHVtcChuZXdTdWNjZXNzb3IpLApAQCAt
MjM0OCw3ICsyMzUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAoYWxsU2FtZSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChCM1JlZHVjZVN0cmVuZ3RoSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiQ2hhbmdpbmcgIiwgcG9pbnRlckR1bXAoYmxvY2spLCAiJ3MgdGVybWluYWwgdG8gYSBK
dW1wLlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0yMzg3LDcgKzIzODksNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIG5ld1N1Y2Nl
c3NvciA6IGJsb2NrLT5zdWNjZXNzb3JCbG9ja3MoKSkKICAgICAgICAgICAgICAgICAgICAgICAg
IG5ld1N1Y2Nlc3Nvci0+cmVwbGFjZVByZWRlY2Vzc29yKHN1Y2Nlc3NvciwgYmxvY2spOwogCi0g
ICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChCM1JlZHVjZVN0cmVuZ3RoSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1lcmdlZCAiLCBw
b2ludGVyRHVtcChibG9jayksICItPiIsIHBvaW50ZXJEdW1wKHN1Y2Nlc3NvciksICJcbiIpOwog
ICAgICAgICAgICAgICAgICAgICB9CkBAIC0yMzk3LDcgKzIzOTksNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1fY2hhbmdlZENGRyAmJiB2ZXJi
b3NlKSB7CisgICAgICAgIGlmIChtX2NoYW5nZWRDRkcgJiYgQjNSZWR1Y2VTdHJlbmd0aEludGVy
bmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJCMyBhZnRlciBzaW1wbGlmeUNG
RzpcbiIpOwogICAgICAgICAgICAgZGF0YUxvZyhtX3Byb2MpOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
LmNwcAppbmRleCBiYmE4NGNhZjhiNGJlMDljMjg4NjNjNDI5MDIwODUyZTcwNTExNjIyLi4zODll
ZjhiOWNhMmQ2MTBlZmRhNTdiOWQ4MGVhOTNlYmI1ODJlMTlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5jcHAKQEAg
LTM0LDggKzM0LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKLXVzaW5n
IG5hbWVzcGFjZSBBaXI7Ci0KIGNvbnN0IFJlZ2lzdGVyU2V0JiBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXM6OnVzZWRSZWdpc3RlcnMoKSBjb25zdAogewogICAgIEFTU0VSVChtX2NvbnRleHQuY29k
ZS0+bmVlZHNVc2VkUmVnaXN0ZXJzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1N0YWNrbWFwU3BlY2lhbC5jcHAKaW5kZXggNjAzNzBjNTc4ZGRmYzMyOTE4ZWZmYjVhMWJkZTg1
NzhlOTNmMmY3MC4uNWViNWI5YjBlNjdkMzczYzM5YmM3ZDk2ZDkzZWQ5ZjZhYzVkMTg0NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwCkBAIC0z
NCw3ICszNCw5IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi11c2luZyBu
YW1lc3BhY2UgQWlyOwordXNpbmcgQXJnID0gQWlyOjpBcmc7Cit1c2luZyBJbnN0ID0gQWlyOjpJ
bnN0OwordXNpbmcgVG1wID0gQWlyOjpUbXA7CiAKIFN0YWNrbWFwU3BlY2lhbDo6U3RhY2ttYXBT
cGVjaWFsKCkKIHsKQEAgLTIxMCw4ICsyMTIsNyBAQCBib29sIFN0YWNrbWFwU3BlY2lhbDo6YWRt
aXRzU3RhY2tJbXBsKAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotVmVjdG9yPFZhbHVlUmVwPiBT
dGFja21hcFNwZWNpYWw6OnJlcHNJbXBsKAotICAgIEdlbmVyYXRpb25Db250ZXh0JiBjb250ZXh0
LCB1bnNpZ25lZCBudW1JZ25vcmVkQjNBcmdzLCB1bnNpZ25lZCBudW1JZ25vcmVkQWlyQXJncywg
SW5zdCYgaW5zdCkKK1ZlY3RvcjxWYWx1ZVJlcD4gU3RhY2ttYXBTcGVjaWFsOjpyZXBzSW1wbChB
aXI6OkdlbmVyYXRpb25Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCBudW1JZ25vcmVkQjNBcmdz
LCB1bnNpZ25lZCBudW1JZ25vcmVkQWlyQXJncywgSW5zdCYgaW5zdCkKIHsKICAgICBWZWN0b3I8
VmFsdWVSZXA+IHJlc3VsdDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5zdC5vcmln
aW4tPm51bUNoaWxkcmVuKCkgLSBudW1JZ25vcmVkQjNBcmdzOyArK2kpCkBAIC0yNjcsNyArMjY4
LDcgQEAgYm9vbCBTdGFja21hcFNwZWNpYWw6OmlzQXJnVmFsaWRGb3JSZXAoQWlyOjpDb2RlJiBj
b2RlLCBjb25zdCBBaXI6OkFyZyYgYXJnLCBjb24KICAgICB9CiB9CiAKLVZhbHVlUmVwIFN0YWNr
bWFwU3BlY2lhbDo6cmVwRm9yQXJnKENvZGUmIGNvZGUsIGNvbnN0IEFyZyYgYXJnKQorVmFsdWVS
ZXAgU3RhY2ttYXBTcGVjaWFsOjpyZXBGb3JBcmcoQWlyOjpDb2RlJiBjb2RlLCBjb25zdCBBcmcm
IGFyZykKIHsKICAgICBzd2l0Y2ggKGFyZy5raW5kKCkpIHsKICAgICBjYXNlIEFyZzo6VG1wOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVN0YWNr
QnlHcmFwaENvbG9yaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxs
b2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZy5jcHAKaW5kZXggZTg2MGQ5Y2NjNWNiMGFlMWQ4N2Mz
YWZlZmRhYmY4ODY2ZjMxN2QxYS4uZWQ2N2QxYzdjZDg5ZGIwOGMwZjk4Y2YxZjY2M2ExZjVhYmM1
MmUzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0
ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckFsbG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcuY3BwCkBAIC00Miw3ICs0Miw5IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKIAogbmFtZXNw
YWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgQWlyQWxsb2Nh
dGVTdGFja0J5R3JhcGhDb2xvcmluZ0ludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJv
c2UgPSBmYWxzZTsKK30KIAogc3RydWN0IENvYWxlc2NhYmxlTW92ZSB7CiAgICAgQ29hbGVzY2Fi
bGVNb3ZlKCkKQEAgLTE1Myw3ICsxNTUsNyBAQCB2b2lkIGFsbG9jYXRlU3RhY2tCeUdyYXBoQ29s
b3JpbmcoQ29kZSYgY29kZSkKICAgICAgICAgU3RhY2tTbG90TGl2ZW5lc3M6OkxvY2FsQ2FsYyBs
b2NhbENhbGMobGl2ZW5lc3MsIGJsb2NrKTsKIAogICAgICAgICBhdXRvIGludGVyZmVyZSA9IFsm
XSAodW5zaWduZWQgaW5zdEluZGV4KSB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgICAgIGlmIChBaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiSW50ZXJmZXJpbmc6ICIsIFdURjo6cG9pbnRl
ckxpc3REdW1wKGxvY2FsQ2FsYy5saXZlKCkpLCAiXG4iKTsKIAogICAgICAgICAgICAgSW5zdCog
cHJldkluc3QgPSBibG9jay0+Z2V0KGluc3RJbmRleCk7CkBAIC0xODUsNyArMTg3LDcgQEAgdm9p
ZCBhbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nKENvZGUmIGNvZGUpCiAgICAgICAgIH07CiAK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnN0SW5kZXggPSBibG9jay0+c2l6ZSgpOyBpbnN0SW5k
ZXgtLTspIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEFpckFs
bG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmdJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJBbmFseXppbmc6ICIsIGJsb2NrLT5hdChpbnN0SW5kZXgpLCAiXG4iKTsK
IAogICAgICAgICAgICAgLy8gS2lsbCBkZWFkIHN0b3Jlcy4gRm9yIHNpbXBsaWNpdHkgd2Ugc2F5
IHRoYXQgYSBzdG9yZSBpcyBraWxsYWJsZSBpZiBpdCBoYXMgb25seSBsYXRlCkBAIC0yMzIsNyAr
MjM0LDcgQEAgdm9pZCBhbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nKENvZGUmIGNvZGUpCiAg
ICAgICAgICAgICB9KTsKICAgICB9CiAKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChBaXJB
bGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAg
Zm9yIChTdGFja1Nsb3QqIHNsb3QgOiBjb2RlLnN0YWNrU2xvdHMoKSkKICAgICAgICAgICAgIGRh
dGFMb2coIkludGVyZmVyZW5jZSBvZiAiLCBwb2ludGVyRHVtcChzbG90KSwgIjogIiwgcG9pbnRl
ckxpc3REdW1wKGludGVyZmVyZW5jZVtzbG90XSksICJcbiIpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZmbGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbWl0U2h1ZmZsZS5jcHAKaW5kZXggNzNkNzEwZmY2
OWU3MThlYjRiZTMwNjljMWMxZDgwYWZiOWM2NDk2Ny4uNzE2NmVkODY5NGVhM2YxODQyNGZkMjNl
ODAyMTA5ODA1ZjYxMmJmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJFbWl0U2h1ZmZsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJFbWl0U2h1ZmZsZS5jcHAKQEAgLTM3LDcgKzM3LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2Ug
PSBmYWxzZTsKK25hbWVzcGFjZSBBaXJFbWl0U2h1ZmZsZUludGVybmFsIHsKK3N0YXRpYyBjb25z
dCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4K
IFRtcCBmaW5kUG9zc2libGVTY3JhdGNoKENvZGUmIGNvZGUsIEJhbmsgYmFuaywgY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikgewpAQCAtMTI1LDcgKzEyNyw3IEBAIFZlY3RvcjxJbnN0PiBlbWl0U2h1
ZmZsZSgKICAgICBDb2RlJiBjb2RlLCBWZWN0b3I8U2h1ZmZsZVBhaXI+IHBhaXJzLCBzdGQ6OmFy
cmF5PEFyZywgMj4gc2NyYXRjaGVzLCBCYW5rIGJhbmssCiAgICAgVmFsdWUqIG9yaWdpbikKIHsK
LSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChBaXJFbWl0U2h1ZmZsZUludGVybmFsOjp2ZXJi
b3NlKSB7CiAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAiRGVhbGluZyB3aXRoIHBhaXJz
OiAiLCBsaXN0RHVtcChwYWlycyksICIgYW5kIHNjcmF0Y2hlcyAiLCBzY3JhdGNoZXNbMF0sICIs
ICIsCiAgICAgICAgICAgICBzY3JhdGNoZXNbMV0sICJcbiIpOwpAQCAtMTg1LDcgKzE4Nyw3IEBA
IFZlY3RvcjxJbnN0PiBlbWl0U2h1ZmZsZSgKICAgICAgICAgICAgIEFTU0VSVChjdXJyZW50UGFp
cnMuaXNFbXB0eSgpKTsKICAgICAgICAgICAgIEFyZyBvcmlnaW5hbFNyYyA9IG1hcHBpbmcuYmVn
aW4oKS0+a2V5OwogICAgICAgICAgICAgQVNTRVJUKCFzaGlmdHMuY29udGFpbnMob3JpZ2luYWxT
cmMpKTsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEFpckVtaXRT
aHVmZmxlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiUHJvY2Vz
c2luZyBmcm9tICIsIG9yaWdpbmFsU3JjLCAiXG4iKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgR3JhcGhOb2RlV29ya2xpc3Q8QXJnPiB3b3JrbGlzdDsKQEAgLTE5NSw3ICsxOTcsNyBAQCBW
ZWN0b3I8SW5zdD4gZW1pdFNodWZmbGUoCiAgICAgICAgICAgICAgICAgaWYgKGl0ZXIgPT0gbWFw
cGluZy5lbmQoKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBXaXRoIGEgc2hpZnQgaXQncyBw
b3NzaWJsZSB0aGF0IHdlIHByZXZpb3VzbHkgYnVpbHQgdGhlIHRhaWwgb2YgdGhpcyBzaGlmdC4K
ICAgICAgICAgICAgICAgICAgICAgLy8gU2VlIGlmIHRoYXQncyB0aGUgY2FzZSBub3cuCi0gICAg
ICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoQWly
RW1pdFNodWZmbGVJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2coIlRyeWluZyB0byBhcHBlbmQgc2hpZnQgYXQgIiwgc3JjLCAiXG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgY3VycmVudFBhaXJzLmFwcGVuZFZlY3RvcihzaGlmdHMudGFrZShzcmMpKTsK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0yMTMsNyArMjE1LDcgQEAgVmVjdG9y
PEluc3Q+IGVtaXRTaHVmZmxlKAogICAgICAgICAgICAgQVNTRVJUKGN1cnJlbnRQYWlycy5zaXpl
KCkpOwogICAgICAgICAgICAgQVNTRVJUKGN1cnJlbnRQYWlyc1swXS5zcmMoKSA9PSBvcmlnaW5h
bFNyYyk7CiAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKEFpckVt
aXRTaHVmZmxlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiY3Vy
cmVudFBhaXJzID0gIiwgbGlzdER1bXAoY3VycmVudFBhaXJzKSwgIlxuIik7CiAKICAgICAgICAg
ICAgIGJvb2wgaXNSb3RhdGUgPSBmYWxzZTsKQEAgLTIyNSw3ICsyMjcsNyBAQCBWZWN0b3I8SW5z
dD4gZW1pdFNodWZmbGUoCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChpc1JvdGF0
ZSkgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChB
aXJFbWl0U2h1ZmZsZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKCJJdCdzIGEgcm90YXRlLlxuIik7CiAgICAgICAgICAgICAgICAgUm90YXRlIHJvdGF0ZTsK
IApAQCAtMjc3LDE0ICsyNzksMTQgQEAgVmVjdG9yPEluc3Q+IGVtaXRTaHVmZmxlKAogICAgICAg
ICAgICAgICAgIHJvdGF0ZXMuYXBwZW5kKFdURk1vdmUocm90YXRlKSk7CiAgICAgICAgICAgICAg
ICAgY3VycmVudFBhaXJzLnNocmluaygwKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKEFpckVtaXRTaHVmZmxl
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkl0J3MgYSBz
aGlmdC5cbiIpOwogICAgICAgICAgICAgICAgIHNoaWZ0cy5hZGQob3JpZ2luYWxTcmMsIFdURk1v
dmUoY3VycmVudFBhaXJzKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBpZiAodmVyYm9zZSkgeworICAgIGlmIChBaXJFbWl0U2h1ZmZsZUludGVybmFsOjp2ZXJib3Nl
KSB7CiAgICAgICAgIGRhdGFMb2coIlNoaWZ0czpcbiIpOwogICAgICAgICBmb3IgKGF1dG8mIGVu
dHJ5IDogc2hpZnRzKQogICAgICAgICAgICAgZGF0YUxvZygiICAgICIsIGVudHJ5LmtleSwgIjog
IiwgbGlzdER1bXAoZW50cnkudmFsdWUpLCAiXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCmluZGV4IDljYjExMDFhMTFm
MjM1MTdjMjk5MzNiZmFiYTlhM2M5MjFhODY2YWUuLjYwYThjYzAzNWZmMTI5MDU5MTA1ZWQ2NWVj
ZjI1MzMyNmM4ZTUzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyRml4T2J2aW91c1NwaWxscy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcApAQCAtMzksNyArMzksOSBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wg
dmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIEFpckZpeE9idmlvdXNTcGlsbHNJbnRlcm5hbCB7
CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIEZpeE9idmlv
dXNTcGlsbHMgewogcHVibGljOgpAQCAtNTEsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHJ1bigpCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKEFpckZpeE9i
dmlvdXNTcGlsbHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkNvZGUg
YmVmb3JlIGZpeE9idmlvdXNTcGlsbHM6XG4iLCBtX2NvZGUpOwogICAgICAgICAKICAgICAgICAg
Y29tcHV0ZUFsaWFzZXMoKTsKQEAgLTczLDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBpZiAoIW1fc3RhdGUud2FzVmlzaXRlZCkKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAo
QWlyRml4T2J2aW91c1NwaWxsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCJFeGVjdXRpbmcgYmxvY2sgIiwgKm1fYmxvY2ssICI6ICIsIG1fc3RhdGUsICJc
biIpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZvciAobV9pbnN0SW5kZXgg
PSAwOyBtX2luc3RJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbV9pbnN0SW5kZXgpCkBAIC0xNjks
MTMgKzE3MSwxMyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgSW5zdCYgaW5zdCA9IG1fYmxv
Y2stPmF0KG1faW5zdEluZGV4KTsKIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYg
KEFpckZpeE9idmlvdXNTcGlsbHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFM
b2coIiAgICBFeGVjdXRpbmcgIiwgaW5zdCwgIjogIiwgbV9zdGF0ZSwgIlxuIik7CiAKICAgICAg
ICAgSW5zdDo6Zm9yRWFjaERlZldpdGhFeHRyYUNsb2JiZXJlZFJlZ3M8QXJnPigKICAgICAgICAg
ICAgICZpbnN0LCAmaW5zdCwKICAgICAgICAgICAgIFsmXSAoY29uc3QgQXJnJiBhcmcsIEFyZzo6
Um9sZSwgQmFuaywgV2lkdGgpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgICAgICAgICBpZiAoQWlyRml4T2J2aW91c1NwaWxsc0ludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgIENsb2JiZXJpbmcgIiwgYXJnLCAiXG4i
KTsKICAgICAgICAgICAgICAgICBtX3N0YXRlLmNsb2JiZXIoYXJnKTsKICAgICAgICAgICAgIH0p
OwpAQCAtMTkwLDcgKzE5Miw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBJbnN0JiBpbnN0
ID0gbV9ibG9jay0+YXQobV9pbnN0SW5kZXgpOwogCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICBpZiAoQWlyRml4T2J2aW91c1NwaWxsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgZGF0YUxvZygiRml4aW5nIGluc3QgIiwgaW5zdCwgIjogIiwgbV9zdGF0ZSwgIlxuIik7CiAg
ICAgICAgIAogICAgICAgICAvLyBDaGVjayBpZiBhbGlhcyBhbmFseXNpcyBzYXlzIHRoYXQgdGhp
cyBpcyB1bm5lY2Vzc2FyeS4KQEAgLTI2NywxMyArMjY5LDEzIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgY2FzZSBXaWR0aDY0OgogICAgICAgICAgICAgICAgICAgICBpZiAoYWxpYXMtPm1v
ZGUgIT0gUmVnU2xvdDo6QWxsQml0cykKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlm
IChBaXJGaXhPYnZpb3VzU3BpbGxzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgUmVwbGFjaW5nICIsIGFyZywgIiB3aXRoICIsIGFsaWFzLT5y
ZWcsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICBhcmcgPSBUbXAoYWxpYXMtPnJlZyk7CiAg
ICAgICAgICAgICAgICAgICAgIGRpZFRoaW5ncyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgICAgICBjYXNlIFdpZHRoMzI6Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoQWlyRml4T2J2aW91c1Nw
aWxsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
ICAgIFJlcGxhY2luZyAiLCBhcmcsICIgd2l0aCAiLCBhbGlhcy0+cmVnLCAiIChzdWJ3aWR0aCBj
YXNlKVxuIik7CiAgICAgICAgICAgICAgICAgICAgIGFyZyA9IFRtcChhbGlhcy0+cmVnKTsKICAg
ICAgICAgICAgICAgICAgICAgZGlkVGhpbmdzID0gdHJ1ZTsKQEAgLTI4NSw3ICsyODcsNyBAQCBw
cml2YXRlOgogCiAgICAgICAgICAgICAvLyBSZXZlcnQgdG8gaW1tZWRpYXRlIGlmIHRoYXQgZGlk
bid0IHdvcmsuCiAgICAgICAgICAgICBpZiAoY29uc3QgU2xvdENvbnN0KiBhbGlhcyA9IG1fc3Rh
dGUuZ2V0U2xvdENvbnN0KGFyZy5zdGFja1Nsb3QoKSkpIHsKLSAgICAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoQWlyRml4T2J2aW91c1NwaWxsc0ludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgUmVwbGFjaW5nICIs
IGFyZywgIiB3aXRoIGNvbnN0YW50ICIsIGFsaWFzLT5jb25zdGFudCwgIlxuIik7CiAgICAgICAg
ICAgICAgICAgaWYgKEFyZzo6aXNWYWxpZEltbUZvcm0oYWxpYXMtPmNvbnN0YW50KSkKICAgICAg
ICAgICAgICAgICAgICAgYXJnID0gQXJnOjppbW0oYWxpYXMtPmNvbnN0YW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNw
cAppbmRleCAxZmEwNTNkYjljYTdmYzRjMzg2ZmIxOTM3MTUyMjU1YmVlZDcxMzliLi5iZmVmM2Iz
ZjRmMTFhNTlhMjFkMmI4MWNjZTE5MjViY2Q4MWU1NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyQWZ0ZXJSZWdBbGxvYy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwCkBAIC00Niw3
ICs0Niw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsK
IAogbmFtZXNwYWNlIHsKIAotYm9vbCB2ZXJib3NlID0gZmFsc2U7CituYW1lc3BhY2UgQWlyTG93
ZXJBZnRlclJlZ0FsbG9jSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZh
bHNlOworfQogICAgIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKQEAgLTU0LDcgKzU2LDcg
QEAgdm9pZCBsb3dlckFmdGVyUmVnQWxsb2MoQ29kZSYgY29kZSkKIHsKICAgICBQaGFzZVNjb3Bl
IHBoYXNlU2NvcGUoY29kZSwgImxvd2VyQWZ0ZXJSZWdBbGxvYyIpOwogCi0gICAgaWYgKHZlcmJv
c2UpCisgICAgaWYgKEFpckxvd2VyQWZ0ZXJSZWdBbGxvY0ludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICBkYXRhTG9nKCJDb2RlIGJlZm9yZSBsb3dlckFmdGVyUmVnQWxsb2M6XG4iLCBjb2RlKTsK
ICAgICAKICAgICBhdXRvIGlzUmVsZXZhbnQgPSBbXSAoSW5zdCYgaW5zdCkgLT4gYm9vbCB7CkBA
IC0yMjEsNyArMjIzLDcgQEAgdm9pZCBsb3dlckFmdGVyUmVnQWxsb2MoQ29kZSYgY29kZSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YWNrU2xvdHMuYXBwZW5kKHN0YWNrU2xvdCk7CiAgICAg
ICAgICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgICAgICAgICAgaWYgKEFpckxvd2VyQWZ0ZXJSZWdBbGxvY0ludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJQcmUtY2FsbCBwYWlycyBmb3IgIiwgaW5zdCwg
IjogIiwgbGlzdER1bXAocGFpcnMpLCAiXG4iKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0SW5zdHMoCkBAIC0yNzMsNyArMjc1LDcgQEAgdm9p
ZCBsb3dlckFmdGVyUmVnQWxsb2MoQ29kZSYgY29kZSkKICAgICAgICAgICAgIH0pOwogICAgIH0K
IAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChBaXJMb3dlckFmdGVyUmVnQWxsb2NJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQ29kZSBhZnRlciBsb3dlckFmdGVyUmVnQWxs
b2M6XG4iLCBjb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJTdGFja0FsbG9jYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJTdGFja0FsbG9jYXRpb24uY3BwCmluZGV4IDM5MjIyM2NhODg1ODA1YzVmOTZkMmZiYjg4
MzlkMTIwMzljNjZjY2YuLjZiNmEyNmFlN2VmYmI3ZDlmM2YyZWExYmVhNjZiYWUzNGQ1OGI2ZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3RhY2tBbGxvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclN0YWNrQWxsb2Nh
dGlvbi5jcHAKQEAgLTM4LDcgKzM4LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7
IG5hbWVzcGFjZSBBaXIgewogCiBuYW1lc3BhY2UgewogCi1jb25zdCBib29sIHZlcmJvc2UgPSBm
YWxzZTsKK25hbWVzcGFjZSBBaXJTdGFja0FsbG9jYXRpb25JbnRlcm5hbCB7CitzdGF0aWMgY29u
c3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbGxlY3Rp
b24+CiB2b2lkIHVwZGF0ZUZyYW1lU2l6ZUJhc2VkT25TdGFja1Nsb3RzSW1wbChDb2RlJiBjb2Rl
LCBjb25zdCBDb2xsZWN0aW9uJiBjb2xsZWN0aW9uKQpAQCAtNTQsNyArNTYsNyBAQCB2b2lkIHVw
ZGF0ZUZyYW1lU2l6ZUJhc2VkT25TdGFja1Nsb3RzSW1wbChDb2RlJiBjb2RlLCBjb25zdCBDb2xs
ZWN0aW9uJiBjb2xsZWN0aQogYm9vbCBhdHRlbXB0QXNzaWdubWVudCgKICAgICBTdGFja1Nsb3Qq
IHNsb3QsIGludHB0cl90IG9mZnNldEZyb21GUCwgY29uc3QgVmVjdG9yPFN0YWNrU2xvdCo+JiBv
dGhlclNsb3RzKQogewotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChBaXJTdGFja0FsbG9jYXRp
b25JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQXR0ZW1wdGluZyB0byBhc3Np
Z24gIiwgcG9pbnRlckR1bXAoc2xvdCksICIgdG8gIiwgb2Zmc2V0RnJvbUZQLCAiIHdpdGggaW50
ZXJmZXJlbmNlICIsIHBvaW50ZXJMaXN0RHVtcChvdGhlclNsb3RzKSwgIlxuIik7CiAKICAgICAv
LyBOZWVkIHRvIGFsaWduIGl0IHRvIHRoZSBzbG90J3MgZGVzaXJlZCBhbGlnbm1lbnQuCkBAIC03
Miw3ICs3NCw3IEBAIGJvb2wgYXR0ZW1wdEFzc2lnbm1lbnQoCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEFpclN0YWNrQWxsb2Nh
dGlvbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJBc3NpZ25lZCAiLCBwb2lu
dGVyRHVtcChzbG90KSwgIiB0byAiLCBvZmZzZXRGcm9tRlAsICJcbiIpOwogICAgIHNsb3QtPnNl
dE9mZnNldEZyb21GUChvZmZzZXRGcm9tRlApOwogICAgIHJldHVybiB0cnVlOwpAQCAtODAsNyAr
ODIsNyBAQCBib29sIGF0dGVtcHRBc3NpZ25tZW50KAogCiB2b2lkIGFzc2lnbihTdGFja1Nsb3Qq
IHNsb3QsIGNvbnN0IFZlY3RvcjxTdGFja1Nsb3QqPiYgb3RoZXJTbG90cykKIHsKLSAgICBpZiAo
dmVyYm9zZSkKKyAgICBpZiAoQWlyU3RhY2tBbGxvY2F0aW9uSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgIGRhdGFMb2coIkF0dGVtcHRpbmcgdG8gYXNzaWduICIsIHBvaW50ZXJEdW1wKHNsb3Qp
LCAiIHdpdGggaW50ZXJmZXJlbmNlICIsIHBvaW50ZXJMaXN0RHVtcChvdGhlclNsb3RzKSwgIlxu
Iik7CiAgICAgCiAgICAgaWYgKGF0dGVtcHRBc3NpZ25tZW50KHNsb3QsIC1zdGF0aWNfY2FzdDxp
bnRwdHJfdD4oc2xvdC0+Ynl0ZVNpemUoKSksIG90aGVyU2xvdHMpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IDM1ZmZiZjFhYmFiODJlZDdm
NDQ2YjU2YjRlZGMxNTVhNDlmZWQ4ZDAuLjQxOTg2NTUwNDc0NDM4NzdlY2E2MTMwY2NmZmE3YTVh
YTIzZjg0YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2Fz
ZS5jcHAKQEAgLTUxLDcgKzUxLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK25hbWVzcGFjZSBB
Y2Nlc3NDYXNlSW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwor
fQogCiBBY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNz
VHlwZSB0eXBlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0KQogICAgIDogbV90
eXBlKHR5cGUpCkBAIC00MDgsNyArNDEwLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZShB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUlt
cGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKIHsKICAgICBTdXBlclNhbXBsZXJTY29w
ZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEFj
Y2Vzc0Nhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiXG5cbkdlbmVyYXRp
bmcgY29kZSBmb3I6ICIsICp0aGlzLCAiXG4iKTsKIAogICAgIEFTU0VSVChtX3N0YXRlID09IEdl
bmVyYXRlZCk7IC8vIFdlIHJlbHkgb24gdGhlIGNhbGxlcnMgc2V0dGluZyB0aGlzIGZvciB1cy4K
QEAgLTc5MCwxMSArNzkyLDExIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vz
c0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAKICAgICBjYXNlIFJlcGxhY2U6IHsKICAgICAgICAg
aWYgKEluZmVycmVkVHlwZSogdHlwZSA9IHN0cnVjdHVyZSgpLT5pbmZlcnJlZFR5cGVGb3IoaWRl
bnQuaW1wbCgpKSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAo
QWNjZXNzQ2FzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkhh
dmUgdHlwZTogIiwgdHlwZS0+ZGVzY3JpcHRvcigpLCAiXG4iKTsKICAgICAgICAgICAgIHN0YXRl
LmZhaWxBbmRSZXBhdGNoLmFwcGVuZCgKICAgICAgICAgICAgICAgICBqaXQuYnJhbmNoSWZOb3RU
eXBlKHZhbHVlUmVncywgc2NyYXRjaEdQUiwgdHlwZS0+ZGVzY3JpcHRvcigpKSk7Ci0gICAgICAg
IH0gZWxzZSBpZiAodmVyYm9zZSkKKyAgICAgICAgfSBlbHNlIGlmIChBY2Nlc3NDYXNlSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJEb24ndCBoYXZlIHR5cGUuXG4iKTsK
IAogICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQobV9vZmZzZXQpKSB7CkBAIC04MjAsMTEgKzgy
MiwxMSBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGUmIHN0YXRlKQogICAgICAgICBSRUxFQVNFX0FTU0VSVChHUFJJbmZvOjpudW1iZXJPZlJlZ2lz
dGVycyA+PSA2IHx8ICFzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCBzdHJ1Y3R1
cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PSBuZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSk7CiAKICAgICAgICAgaWYgKEluZmVycmVkVHlwZSogdHlwZSA9IG5ld1N0cnVjdHVy
ZSgpLT5pbmZlcnJlZFR5cGVGb3IoaWRlbnQuaW1wbCgpKSkgewotICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgICAgICBpZiAoQWNjZXNzQ2FzZUludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICAgICAgICAgIGRhdGFMb2coIkhhdmUgdHlwZTogIiwgdHlwZS0+ZGVzY3JpcHRvcigpLCAi
XG4iKTsKICAgICAgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZCgKICAgICAgICAg
ICAgICAgICBqaXQuYnJhbmNoSWZOb3RUeXBlKHZhbHVlUmVncywgc2NyYXRjaEdQUiwgdHlwZS0+
ZGVzY3JpcHRvcigpKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAodmVyYm9zZSkKKyAgICAgICAgfSBl
bHNlIGlmIChBY2Nlc3NDYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9n
KCJEb24ndCBoYXZlIHR5cGUuXG4iKTsKIAogICAgICAgICAvLyBOT1RFOiBUaGlzIGxvZ2ljIGlz
IGR1cGxpY2F0ZWQgaW4gQWNjZXNzQ2FzZTo6ZG9lc0NhbGxzKCkuIEl0J3MgaW1wb3J0YW50IHRo
YXQgZG9lc0NhbGxzKCkga25vd3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtTdGF0dXMuY3BwCmluZGV4IGYzNGMyNzQyMDUzY2IyOTNkYWE1YzE2Mzg2NmJm
YWM0YTAyMjU2OTguLjUzYjg0ZDljMDM3ZTE3ZjZhZTkzZGM4NTUxOTI3ODhiNjNlNjdhZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNw
cApAQCAtMzgsNyArMzgsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFtZXNwYWNlIENhbGxM
aW5rU3RhdHVzSW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwor
fQogCiBDYWxsTGlua1N0YXR1czo6Q2FsbExpbmtTdGF0dXMoSlNWYWx1ZSB2YWx1ZSkKICAgICA6
IG1fY291bGRUYWtlU2xvd1BhdGgoZmFsc2UpCkBAIC0yODksNyArMjkxLDcgQEAgdm9pZCBDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZURGR1N0YXR1c2VzKAogICAgIFVOVVNFRF9QQVJBTShkZmdDb2Rl
QmxvY2spOwogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQogICAgIAotICAgIGlmICh2ZXJib3Nl
KSB7CisgICAgaWYgKENhbGxMaW5rU3RhdHVzSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAg
ZGF0YUxvZygiQ29udGV4dCBtYXA6XG4iKTsKICAgICAgICAgQ29udGV4dE1hcDo6aXRlcmF0b3Ig
aXRlciA9IG1hcC5iZWdpbigpOwogICAgICAgICBDb250ZXh0TWFwOjppdGVyYXRvciBlbmQgPSBt
YXAuZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAKaW5kZXggYzRkYTgwZWNjMTljMjE0N2UyZmE3YjVk
OTk2ODRjZGZlYjJlNDc4MC4uNjA2NjkxYjNiMjAzYWVlMWFjYmEyNzRmNDU1YzRiNGVlYzc3Zjdl
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRl
ckFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0
ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcApAQCAtMzgsNyArMzgsOSBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAorbmFtZXNwYWNlIEdldHRlclNldHRlckFjY2Vzc0Nhc2VJbnRlcm5hbCB7CiBzdGF0aWMg
Y29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6
OkdldHRlclNldHRlckFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBl
IGFjY2Vzc1R5cGUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIGJvb2wgdmlh
UHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIEpTT2JqZWN0KiBjdXN0b21TbG90
QmFzZSkKICAgICA6IEJhc2Uodm0sIG93bmVyLCBhY2Nlc3NUeXBlLCBvZmZzZXQsIHN0cnVjdHVy
ZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCkKQEAgLTE4NSw3ICsxODcs
NyBAQCB2b2lkIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIoQWNjZXNz
R2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29ucwogICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
cjo6UHJlc2VydmVkU3RhdGUgcHJlc2VydmVkU3RhdGUgPQogICAgIGFsbG9jYXRvci5wcmVzZXJ2
ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhqaXQsIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6
RXh0cmFTdGFja1NwYWNlOjpTcGFjZUZvckNDYWxsKTsKIAotICAgIGlmICh2ZXJib3NlKSB7Cisg
ICAgaWYgKEdldHRlclNldHRlckFjY2Vzc0Nhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAg
ICBkYXRhTG9nKCJiYXNlR1BSID0gIiwgYmFzZUdQUiwgIlxuIik7CiAgICAgICAgIGRhdGFMb2co
InZhbHVlUmVncyA9ICIsIHZhbHVlUmVncywgIlxuIik7CiAgICAgICAgIGRhdGFMb2coInNjcmF0
Y2hHUFIgPSAiLCBzY3JhdGNoR1BSLCAiXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCmlu
ZGV4IDYxOWVhNWQ5Y2I0N2IxZjE5NWIwZThiNDdkNTk5NmNhODU5YzM0ZWYuLjk2Nzk1MjM3Nzg4
Y2MxOTY1MDc0MWJkY2Y2OWFlNDdjZDI4ZGE0YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNw
cApAQCAtMTgyLDEzICsxODIsMTUgQEAgYm9vbCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6
aXNWYWxpZEFuZFdhdGNoYWJsZSgpIGNvbnN0CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9z
ZSA9IGZhbHNlOworbmFtZXNwYWNlIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWwg
eworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvbiBnZW5lcmF0ZUNvbmRpdGlvbigKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IEpTT2JqZWN0KiBvYmplY3QsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIFByb3BlcnR5Q29uZGl0
aW9uOjpLaW5kIGNvbmRpdGlvbktpbmQpCiB7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBv
YmplY3QtPnN0cnVjdHVyZSgpOwotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJDcmVh
dGluZyBjb25kaXRpb24gIiwgY29uZGl0aW9uS2luZCwgIiBmb3IgIiwgcG9pbnRlckR1bXAoc3Ry
dWN0dXJlKSwgIlxuIik7CiAKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiByZXN1bHQ7CkBA
IC0yMjYsMTIgKzIyOCwxMiBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBnZW5lcmF0ZUNvbmRp
dGlvbigKICAgICB9CiAKICAgICBpZiAoIXJlc3VsdC5pc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVy
ZVByb3BlcnR5V2F0Y2hwb2ludCgpKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBp
ZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgIGRhdGFMb2coIkZhaWxlZCB0byBjcmVhdGUgY29uZGl0aW9uOiAiLCByZXN1bHQsICJcbiIp
OwogICAgICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRpb24oKTsKICAgICB9CiAKLSAg
ICBpZiAodmVyYm9zZSkKKyAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiTmV3IGNvbmRpdGlvbjogIiwgcmVzdWx0LCAi
XG4iKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjQ4LDExICsyNTAsMTEgQEAgT2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVDb25kaXRpb25zKAogICAgIFZlY3RvcjxPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbj4gY29uZGl0aW9uczsKICAgICAKICAgICBmb3IgKDs7KSB7Ci0g
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIHN0
cnVjdHVyZTogIiwgcG9pbnRlckR1bXAoc3RydWN0dXJlKSwgIlxuIik7CiAgICAgICAgIAogICAg
ICAgICBpZiAoc3RydWN0dXJlLT5pc1Byb3h5KCkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3Nl
KQorICAgICAgICAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiSXQncyBhIHByb3h5LCBzbyBpbnZhbGlk
LlxuIik7CiAgICAgICAgICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6Omlu
dmFsaWQoKTsKICAgICAgICAgfQpAQCAtMjYxLDExICsyNjMsMTEgQEAgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQgZ2VuZXJhdGVDb25kaXRpb25zKAogICAgICAgICAKICAgICAgICAgaWYgKHZh
bHVlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBpZiAoIXByb3RvdHlwZSkgewotICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KCJSZWFjaGVkIGVuZCBvZiBwcm90b3R5cGUgY2hhaW4gYXMgZXhwZWN0ZWQsIGRvbmUuXG4iKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiVW5leHBlY3RlZGx5IHJlYWNo
ZWQgZW5kIG9mIHByb3RvdHlwZSBjaGFpbiwgc28gaW52YWxpZC5cbiIpOwogICAgICAgICAgICAg
cmV0dXJuIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjppbnZhbGlkKCk7CiAgICAgICAgIH0K
QEAgLTI3NiwzNSArMjc4LDM1IEBAIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRl
Q29uZGl0aW9ucygKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKICAg
ICAgICAgICAgIGlmIChjb25jdXJyZW5jeSA9PSBNYWluVGhyZWFkKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKHN0cnVjdHVyZS0+aGFzQmVlbkZsYXR0ZW5lZEJlZm9yZSgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkRpY3Rpb25hcnkgaGFzIGJlZW4gZmxhdHRlbmVkIGJlZm9yZSwgc28gaW52
YWxpZC5cbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQ6OmludmFsaWQoKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiRmxh
dHRlbmluZyAiLCBwb2ludGVyRHVtcChzdHJ1Y3R1cmUpKTsKICAgICAgICAgICAgICAgICBzdHJ1
Y3R1cmUtPmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKHZtLCBvYmplY3QpOwogICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAg
ICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiQ2Fubm90IGZsYXR0ZW4gZGljdGlvbmFyeSB3aGVuIG5v
dCBvbiBtYWluIHRocmVhZCwgc28gaW52YWxpZC5cbiIpOwogICAgICAgICAgICAgICAgIHJldHVy
biBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aW52YWxpZCgpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKCFmdW5jdG9yKGNvbmRpdGlvbnMsIG9iamVjdCkpIHsK
LSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygi
RnVuY3RvciBmYWlsZWQsIGludmFsaWQuXG4iKTsKICAgICAgICAgICAgIHJldHVybiBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldDo6aW52YWxpZCgpOwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBpZiAob2JqZWN0ID09IHByb3RvdHlwZSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJSZWFjaGVkIGRlc2lyZWQgcHJvdG90eXBl
LCBkb25lLlxuIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIAotICAg
IGlmICh2ZXJib3NlKQorICAgIGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmcgY29uZGl0aW9uczogIiwgbGlz
dER1bXAoY29uZGl0aW9ucyksICJcbiIpOwogICAgIHJldHVybiBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldDo6Y3JlYXRlKGNvbmRpdGlvbnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggZmIwYjZhOWQ4YzJk
ZGM4ZmMzZjljOTE5MWRiZjIyYjliZDQwMjk4OC4uNDIyODBjNWFlNmY3NmRiNjcwM2E2MDE2ZDU4
M2MxYjBhMDFkYzM1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC00NCw3ICs0NCw5IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCituYW1lc3BhY2UgUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbCB7CiBzdGF0aWMgY29u
c3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIHZvaWQgQWNjZXNzR2VuZXJhdGlvblJlc3Vs
dDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewpAQCAtMjQ3LDcgKzI0OSw3IEBAIEFj
Y2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKAogICAgICAg
ICBjYXNlc1RvQWRkLmFwcGVuZChXVEZNb3ZlKG15Q2FzZSkpOwogICAgIH0KIAotICAgIGlmICh2
ZXJib3NlKQorICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICBkYXRhTG9nKCJjYXNlc1RvQWRkOiAiLCBsaXN0RHVtcChjYXNlc1RvQWRkKSwgIlxuIik7
CiAKICAgICAvLyBJZiB0aGVyZSBhcmVuJ3QgYW55IGNhc2VzIHRvIGFkZCwgdGhlbiBmYWlsIG9u
IHRoZSBncm91bmRzIHRoYXQgdGhlcmUncyBubyBwb2ludCB0byBnZW5lcmF0aW5nIGEKQEAgLTI2
Myw3ICsyNjUsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjph
ZGRDYXNlcygKICAgICAgICAgbV9saXN0LmFwcGVuZChXVEZNb3ZlKGNhc2VUb0FkZCkpOwogICAg
IH0KICAgICAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQWZ0ZXIgYWRkQ2FzZXM6IG1fbGlzdDog
IiwgbGlzdER1bXAobV9saXN0KSwgIlxuIik7CiAKICAgICByZXR1cm4gQWNjZXNzR2VuZXJhdGlv
blJlc3VsdDo6QnVmZmVyZWQ7CkBAIC0zMzQsNyArMzM2LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJl
c3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSgKIHsKICAgICBTdXBlclNhbXBsZXJT
Y29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisg
ICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFM
b2coIlJlZ2VuZXJhdGUgd2l0aCBtX2xpc3Q6ICIsIGxpc3REdW1wKG1fbGlzdCksICJcbiIpOwog
ICAgIAogICAgIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSBzdGF0ZSh2bSk7CkBAIC00MDIsNyArNDA0
LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0
ZSgKICAgICB9CiAgICAgbV9saXN0LnJlc2l6ZShkc3RJbmRleCk7CiAgICAgCi0gICAgaWYgKHZl
cmJvc2UpCisgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgIGRhdGFMb2coIk9wdGltaXplZCBjYXNlczogIiwgbGlzdER1bXAoY2FzZXMpLCAiXG4iKTsK
ICAgICAKICAgICAvLyBBdCB0aGlzIHBvaW50IHdlJ3JlIGNvbnZpbmNlZCB0aGF0ICdjYXNlcycg
Y29udGFpbnMgdGhlIGNhc2VzIHRoYXQgd2Ugd2FudCB0byBKSVQgbm93IGFuZCB3ZQpAQCAtNTE3
LDcgKzUxOSw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJl
Z2VuZXJhdGUoCiAKICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBjb2RlQmxvY2ssIEpJ
VENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgaWYgKGxpbmtCdWZmZXIuZGlkRmFpbFRvQWxsb2Nh
dGUoKSkgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKFBvbHltb3JwaGljQWNj
ZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJEaWQgZmFpbCB0byBh
bGxvY2F0ZS5cbiIpOwogICAgICAgICByZXR1cm4gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6R2F2
ZVVwOwogICAgIH0KQEAgLTUyOCw3ICs1MzAsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBv
bHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKAogCiAgICAgbGlua0J1ZmZlci5saW5rKGZhaWx1
cmUsIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbigpKTsKICAgICAKLSAgICBpZiAodmVy
Ym9zZSkKKyAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgZGF0YUxvZyhGdWxsQ29kZU9yaWdpbihjb2RlQmxvY2ssIHN0dWJJbmZvLmNvZGVPcmlnaW4p
LCAiOiBHZW5lcmF0aW5nIHBvbHltb3JwaGljIGFjY2VzcyBzdHViIGZvciAiLCBsaXN0RHVtcChj
YXNlcyksICJcbiIpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGUgPSBGSU5BTEla
RV9DT0RFX0ZPUigKQEAgLTU0NCw3ICs1NDYsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBv
bHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKAogICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZNb3Zl
KHN0YXRlLndhdGNocG9pbnRzKTsKICAgICBpZiAoIXN0YXRlLndlYWtSZWZlcmVuY2VzLmlzRW1w
dHkoKSkKICAgICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PFdyaXRlQmFycmllcjxKU0NlbGw+Pj4oV1RGTW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOwot
ICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6ICIsIGNvZGUuY29kZSgpLCAiXG4iKTsK
ICAgICAKICAgICBtX2xpc3QgPSBXVEZNb3ZlKGNhc2VzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uY3BwCmluZGV4IDQyM2JjMjEw
ZWQ0ODNjYTExOTdlMzk5YjU5NTU0NjY2Y2RmMzk1YzkuLjA3NjQ0YTMwN2Y5Y2Y0ZTljNWYzMmE3
MWMxODFjMmJmODM5OTU1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcApAQCAtMzIsNyArMzIsOSBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorbmFtZXNwYWNlIFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWwgewogc3RhdGlj
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiB2b2lkIFByb3BlcnR5Q29uZGl0aW9uOjpkdW1w
SW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAog
ewpAQCAtNjUsMjAgKzY3LDIwIEBAIHZvaWQgUHJvcGVydHlDb25kaXRpb246OmR1bXAoUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKIGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFz
c3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU09iamVjdCogYmFzZSkgY29uc3QKIHsKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChQ
cm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2coCiAg
ICAgICAgICAgICAiRGV0ZXJtaW5pbmcgdmFsaWRpdHkgb2YgIiwgKnRoaXMsICIgd2l0aCBzdHJ1
Y3R1cmUgIiwgcG9pbnRlckR1bXAoc3RydWN0dXJlKSwgIiBhbmQgYmFzZSAiLAogICAgICAgICAg
ICAgSlNWYWx1ZShiYXNlKSwgIiBhc3N1bWluZyBpbXB1cmUgcHJvcGVydHkgd2F0Y2hwb2ludHMg
YXJlIHNldC5cbiIpOwogICAgIH0KICAgICAKICAgICBpZiAoISp0aGlzKSB7Ci0gICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgIGRhdGFMb2coIkludmFsaWQgYmVjYXVzZSB1bnNldC5cbiIpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIGlmICghc3RydWN0dXJlLT5wcm9w
ZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ZGF0YUxvZygiSW52YWxpZCBiZWNhdXNlIGFjY2Vzc2VzIGFyZSBub3QgY2FjaGVhYmxlLlxuIik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC04OCw3ICs5MCw3IEBAIGJvb2wgUHJv
cGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBv
aW50KAogICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKICAgICAgICAgUHJvcGVy
dHlPZmZzZXQgY3VycmVudE9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCgp
LCBjdXJyZW50QXR0cmlidXRlcyk7CiAgICAgICAgIGlmIChjdXJyZW50T2Zmc2V0ICE9IG9mZnNl
dCgpIHx8IGN1cnJlbnRBdHRyaWJ1dGVzICE9IGF0dHJpYnV0ZXMoKSkgewotICAgICAgICAgICAg
aWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFs
Ojp2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAg
ICAgIkludmFsaWQgYmVjYXVzZSB3ZSBuZWVkIG9mZnNldCwgYXR0cmlidXRlcyB0byBiZSAiLCBv
ZmZzZXQoKSwgIiwgIiwgYXR0cmlidXRlcygpLAogICAgICAgICAgICAgICAgICAgICAiIGJ1dCB0
aGV5IGFyZSAiLCBjdXJyZW50T2Zmc2V0LCAiLCAiLCBjdXJyZW50QXR0cmlidXRlcywgIlxuIik7
CkBAIC0xMDAsMjAgKzEwMiwyMCBAQCBib29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFs
aWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgKICAgICAgICAgCiAgICAgY2FzZSBB
YnNlbmNlOiB7CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7Ci0gICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbklu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkludmFsaWQgYmVjYXVz
ZSBpdCdzIGEgZGljdGlvbmFyeS5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAKICAgICAgICAgUHJvcGVydHlPZmZzZXQgY3VycmVudE9mZnNldCA9IHN0cnVjdHVy
ZS0+Z2V0Q29uY3VycmVudGx5KHVpZCgpKTsKICAgICAgICAgaWYgKGN1cnJlbnRPZmZzZXQgIT0g
aW52YWxpZE9mZnNldCkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBp
ZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBk
YXRhTG9nKCJJbnZhbGlkIGJlY2F1c2UgdGhlIHByb3BlcnR5IGV4aXN0cyBhdCBvZmZzZXQ6ICIs
IGN1cnJlbnRPZmZzZXQsICJcbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICBpZiAoc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGVPYmpl
Y3QoKSAhPSBwcm90b3R5cGUoKSkgewotICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAg
ICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAg
ICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgYmVjYXVzZSB0
aGUgcHJvdG90eXBlIGlzICIsIHN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCksICIgZXZlbiB0
aG91Z2ggIgogICAgICAgICAgICAgICAgICAgICAiaXQgc2hvdWxkIGhhdmUgYmVlbiAiLCBKU1Zh
bHVlKHByb3RvdHlwZSgpKSwgIlxuIik7CkBAIC0xMjYsNyArMTI4LDcgQEAgYm9vbCBQcm9wZXJ0
eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQo
CiAgICAgCiAgICAgY2FzZSBBYnNlbmNlT2ZTZXRFZmZlY3Q6IHsKICAgICAgICAgaWYgKHN0cnVj
dHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgaWYgKFByb3BlcnR5Q29uZGl0aW9uSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiSW52YWxpZCBiZWNhdXNlIGl0J3MgYSBkaWN0aW9uYXJ5LlxuIik7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTEzNSw3ICsxMzcsNyBAQCBi
b29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5
V2F0Y2hwb2ludCgKICAgICAgICAgUHJvcGVydHlPZmZzZXQgY3VycmVudE9mZnNldCA9IHN0cnVj
dHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCgpLCBjdXJyZW50QXR0cmlidXRlcyk7CiAgICAgICAg
IGlmIChjdXJyZW50T2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChj
dXJyZW50QXR0cmlidXRlcyAmIChSZWFkT25seSB8IEFjY2Vzc29yIHwgQ3VzdG9tQWNjZXNzb3Ip
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICBpZiAo
UHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgYmVjYXVzZSB3ZSBl
eHBlY3RlZCBub3QgdG8gaGF2ZSBhIHNldHRlciwgYnV0IHdlIGhhdmUgb25lIGF0IG9mZnNldCAi
LAogICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE9mZnNldCwgIiB3aXRoIGF0dHJpYnV0
ZXMgIiwgY3VycmVudEF0dHJpYnV0ZXMsICJcbiIpOwpAQCAtMTQ1LDcgKzE0Nyw3IEBAIGJvb2wg
UHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRj
aHBvaW50KAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoc3RydWN0dXJlLT5zdG9y
ZWRQcm90b3R5cGVPYmplY3QoKSAhPSBwcm90b3R5cGUoKSkgewotICAgICAgICAgICAgaWYgKHZl
cmJvc2UpIHsKKyAgICAgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2ZXJi
b3NlKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgIklu
dmFsaWQgYmVjYXVzZSB0aGUgcHJvdG90eXBlIGlzICIsIHN0cnVjdHVyZS0+c3RvcmVkUHJvdG90
eXBlKCksICIgZXZlbiB0aG91Z2ggIgogICAgICAgICAgICAgICAgICAgICAiaXQgc2hvdWxkIGhh
dmUgYmVlbiAiLCBKU1ZhbHVlKHByb3RvdHlwZSgpKSwgIlxuIik7CkBAIC0xNjAsNyArMTYyLDcg
QEAgYm9vbCBQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9w
ZXJ0eVdhdGNocG9pbnQoCiAgICAgICAgIGlmICghYmFzZSB8fCBiYXNlLT5zdHJ1Y3R1cmUoKSAh
PSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIC8vIENvbnNlcnZhdGl2ZWx5IHJldHVybiBmYWxz
ZSwgc2luY2Ugd2UgY2Fubm90IHZlcmlmeSB0aGlzIG9uZSB3aXRob3V0IGhhdmluZyB0aGUKICAg
ICAgICAgICAgIC8vIG9iamVjdC4KLSAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAg
ICAgICBpZiAoUHJvcGVydHlDb25kaXRpb25JbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAg
ICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGJlY2F1c2Ugd2Ug
ZG9uJ3QgaGF2ZSBhIGJhc2Ugb3IgdGhlIGJhc2UgaGFzIHRoZSB3cm9uZyBzdHJ1Y3R1cmU6ICIs
CiAgICAgICAgICAgICAgICAgICAgIFJhd1BvaW50ZXIoYmFzZSksICJcbiIpOwpAQCAtMTczLDcg
KzE3NSw3IEBAIGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1w
dXJlUHJvcGVydHlXYXRjaHBvaW50KAogICAgICAgICAKICAgICAgICAgUHJvcGVydHlPZmZzZXQg
Y3VycmVudE9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCgpKTsKICAgICAg
ICAgaWYgKGN1cnJlbnRPZmZzZXQgPT0gaW52YWxpZE9mZnNldCkgewotICAgICAgICAgICAgaWYg
KHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGlmIChQcm9wZXJ0eUNvbmRpdGlvbkludGVybmFsOjp2
ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAg
IkludmFsaWQgYmVjYXVzZSB0aGUgYmFzZSBubyBsb25nIGFwcGVhcnMgdG8gaGF2ZSAiLCB1aWQo
KSwgIiBvbiBpdHMgc3RydWN0dXJlOiAiLAogICAgICAgICAgICAgICAgICAgICAgICAgUmF3UG9p
bnRlcihiYXNlKSwgIlxuIik7CkBAIC0xODMsNyArMTg1LDcgQEAgYm9vbCBQcm9wZXJ0eUNvbmRp
dGlvbjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoCiAKICAg
ICAgICAgSlNWYWx1ZSBjdXJyZW50VmFsdWUgPSBiYXNlLT5nZXREaXJlY3QoY3VycmVudE9mZnNl
dCk7CiAgICAgICAgIGlmIChjdXJyZW50VmFsdWUgIT0gcmVxdWlyZWRWYWx1ZSgpKSB7Ci0gICAg
ICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgaWYgKFByb3BlcnR5Q29uZGl0aW9u
SW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAg
ICAgICAgICAgICAiSW52YWxpZCBiZWNhdXNlIHRoZSB2YWx1ZSBpcyAiLCBjdXJyZW50VmFsdWUs
ICIgYnV0IHdlIHJlcXVpcmUgIiwgcmVxdWlyZWRWYWx1ZSgpLAogICAgICAgICAgICAgICAgICAg
ICAiXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uY3BwCmluZGV4IDIxODc3NTE3NmYyNzdlMzY2OGRjMTJkZWI2NjY1ZGExNGU0
N2QxYjcuLjNlM2JmMjQzYWE5NWEyOTNlYjI2YWRjMjg1YWE5OTYwNjBlODlkNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNw
cApAQCAtMzUsNyArMzUsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCiAK
K25hbWVzcGFjZSBTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29s
IHZlcmJvc2UgPSBmYWxzZTsKK30KIAogU3RydWN0dXJlU3R1YkluZm86OlN0cnVjdHVyZVN0dWJJ
bmZvKEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKICAgICA6IGNhbGxTaXRlSW5kZXgoVUlOVF9NQVgp
CkBAIC0xMTUsNyArMTE3LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6YWRkQWNjZXNzQ2FzZSgKIHsKICAgICBWTSYgdm0gPSAqY29kZUJsb2NrLT52bSgpOwog
ICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJBZGRpbmcgYWNjZXNzIGNhc2U6ICIsIGFjY2Vz
c0Nhc2UsICJcbiIpOwogICAgIAogICAgIGlmICghYWNjZXNzQ2FzZSkKQEAgLTEyNiw3ICsxMjgs
NyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3ND
YXNlKAogICAgIGlmIChjYWNoZVR5cGUgPT0gQ2FjaGVUeXBlOjpTdHViKSB7CiAgICAgICAgIHJl
c3VsdCA9IHUuc3R1Yi0+YWRkQ2FzZShsb2NrZXIsIHZtLCBjb2RlQmxvY2ssICp0aGlzLCBpZGVu
dCwgV1RGTW92ZShhY2Nlc3NDYXNlKSk7CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICBkYXRhTG9nKCJIYWQgc3R1YiwgcmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOwogCiAgICAg
ICAgIGlmICghcmVzdWx0LmJ1ZmZlcmVkKCkpIHsKQEAgLTE0Nyw3ICsxNDksNyBAQCBBY2Nlc3NH
ZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAogICAgICAg
ICAKICAgICAgICAgcmVzdWx0ID0gYWNjZXNzLT5hZGRDYXNlcyhsb2NrZXIsIHZtLCBjb2RlQmxv
Y2ssICp0aGlzLCBpZGVudCwgV1RGTW92ZShhY2Nlc3NDYXNlcykpOwogICAgICAgICAKLSAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQ3JlYXRlZCBzdHViLCByZXN1bHQ6ICIsIHJl
c3VsdCwgIlxuIik7CiAKICAgICAgICAgaWYgKCFyZXN1bHQuYnVmZmVyZWQoKSkgewpAQCAtMTY0
LDcgKzE2Niw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFk
ZEFjY2Vzc0Nhc2UoCiAgICAgLy8gSWYgd2UgZGlkbid0IGJ1ZmZlciBhbnkgY2FzZXMgdGhlbiBi
YWlsLiBJZiB0aGlzIG1hZGUgbm8gY2hhbmdlcyB0aGVuIHdlJ2xsIGp1c3QgdHJ5IGFnYWluCiAg
ICAgLy8gc3ViamVjdCB0byBjb29sLWRvd24uCiAgICAgaWYgKCFyZXN1bHQuYnVmZmVyZWQoKSkg
ewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJEaWRuJ3QgYnVmZmVyIGFueXRo
aW5nLCBiYWlsaW5nLlxuIik7CiAgICAgICAgIGJ1ZmZlcmVkU3RydWN0dXJlcy5jbGVhcigpOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTcyLDcgKzE3NCw3IEBAIEFjY2Vzc0dlbmVyYXRp
b25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAgICAgCiAgICAgLy8g
VGhlIGJ1ZmZlcmluZyBjb3VudGRvd24gdGVsbHMgdXMgaWYgd2Ugc2hvdWxkIGJlIHJlcGF0Y2hp
bmcgbm93LgogICAgIGlmIChidWZmZXJpbmdDb3VudGRvd24pIHsKLSAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICAgICAgZGF0YUxvZygiQ291bnRkb3duIGlzIHRvbyBoaWdoOiAiLCBidWZmZXJpbmdDb3Vu
dGRvd24sICIuXG4iKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0xODMsNyAr
MTg1LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNj
ZXNzQ2FzZSgKICAgICAKICAgICByZXN1bHQgPSB1LnN0dWItPnJlZ2VuZXJhdGUobG9ja2VyLCB2
bSwgY29kZUJsb2NrLCAqdGhpcywgaWRlbnQpOwogICAgIAotICAgIGlmICh2ZXJib3NlKQorICAg
IGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9n
KCJSZWdlbmVyYXRpb24gcmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOwogICAgIAogICAgIFJFTEVB
U0VfQVNTRVJUKCFyZXN1bHQuYnVmZmVyZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SGVhcC5jcHAKaW5kZXggY2Q2OTRiYmViYWM4MDdkNTE4ZjY2YzQ3Y2Fh
YWI2ZTc4ZTkxZDIzYy4uYjgzZmVlMGQzYzA5ZDE0OTdhYTdlYTFkZTNlMDQ5MDYyZjIyNmMxNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmNwcApAQCAt
NjIsNyArNjIsNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQWJzdHJh
Y3RIZWFwS2luZCBraW5kKQogewogICAgIHN3aXRjaCAoa2luZCkgewogI2RlZmluZSBBQlNUUkFD
VF9IRUFQX0RVTVAobmFtZSkgICAgICAgICAgICBcCi0gICAgY2FzZSBuYW1lOiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBjYXNlIEFic3RyYWN0SGVhcEtpbmQ6Om5hbWU6ICAg
ICAgICAgICAgXAogICAgICAgICBvdXQucHJpbnQoI25hbWUpOyAgICAgICAgICAgICAgICAgICBc
CiAgICAgICAgIHJldHVybjsKICAgICBGT1JfRUFDSF9BQlNUUkFDVF9IRUFQX0tJTkQoQUJTVFJB
Q1RfSEVBUF9EVU1QKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
cmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKaW5kZXggNTE2NTBmNTg1ZDRlOGVhNmEz
MzllN2Y2MzAyOGVhMDhlZDU4ZWE0Zi4uYTQ1N2Y4ZjU3ZDQ5Y2MzZTI3MzM5NzZiODBiMmZkOTg2
M2E0NjBhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVu
dHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC01MCw3ICs1MCw5IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAotYm9vbCB2ZXJib3NlID0g
ZmFsc2U7CituYW1lc3BhY2UgREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZUludGVybmFsIHsK
K3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogY2xhc3MgQXJndW1lbnRz
RWxpbWluYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJsaWM6CkBAIC02NSw3ICs2Nyw3
IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdmVyc2lvbiBvdmVyIExvYWRTdG9yZS4KICAgICAgICAg
REZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwogICAg
ICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR0FyZ3VtZW50c0Vs
aW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygi
R3JhcGggYmVmb3JlIGFyZ3VtZW50cyBlbGltaW5hdGlvbjpcbiIpOwogICAgICAgICAgICAgbV9n
cmFwaC5kdW1wKCk7CiAgICAgICAgIH0KQEAgLTE1Nyw3ICsxNTksNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgICAgIGRhdGFMb2coIkNhbmRpZGF0ZXM6ICIsIGxpc3REdW1wKG1fY2FuZGlkYXRl
cyksICJcbiIpOwogICAgIH0KIApAQCAtMjEwLDcgKzIxMiw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB0cmFuc2l0aXZlbHlSZW1vdmVDYW5kaWRhdGUoTm9kZSogbm9kZSwgTm9kZSogc291cmNlID0g
bnVsbHB0cikKICAgICB7CiAgICAgICAgIGJvb2wgcmVtb3ZlZCA9IG1fY2FuZGlkYXRlcy5yZW1v
dmUobm9kZSk7Ci0gICAgICAgIGlmIChyZW1vdmVkICYmIHZlcmJvc2UgJiYgc291cmNlKQorICAg
ICAgICBpZiAocmVtb3ZlZCAmJiBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlSW50ZXJuYWw6
OnZlcmJvc2UgJiYgc291cmNlKQogICAgICAgICAgICAgZGF0YUxvZygiZWxpbWluYXRpbmcgY2Fu
ZGlkYXRlOiAiLCBub2RlLCAiIGJlY2F1c2UgaXQgZXNjYXBlcyBmcm9tOiAiLCBzb3VyY2UsICJc
biIpOwogCiAgICAgICAgIGlmIChyZW1vdmVkKQpAQCAtNDE4LDcgKzQyMCw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgIGRhdGFMb2coIkFmdGVyIGVzY2FwZSBhbmFseXNpczogIiwgbGlzdER1bXAobV9j
YW5kaWRhdGVzKSwgIlxuIik7CiAgICAgfQogCkBAIC01MTksNyArNTIxLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHRoaXMgYXJndW1lbnRzIGFsbG9jYXRpb24sIGFu
ZCB3ZSdkIGhhdmUgdG8gZXhhbWluZSBldmVyeSBub2RlIGluIHRoZSBibG9jaywKICAgICAgICAg
ICAgICAgICAgICAgLy8gdGhlbiB3ZSBjYW4ganVzdCBlbGltaW5hdGUgdGhlIGNhbmRpZGF0ZS4K
ICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGVJbmRleCA9PSBibG9jay0+c2l6ZSgpICYmIGNh
bmRpZGF0ZS0+b3duZXIgIT0gYmxvY2spIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0
aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nKCJlbGltaW5hdGluZyBjYW5kaWRhdGU6ICIsIGNhbmRpZGF0ZSwgIiBiZWNhdXNlIGl0
IGlzIGNsb2JiZXJlZCBieTogIiwgYmxvY2stPmF0KG5vZGVJbmRleCksICJcbiIpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgdHJhbnNpdGl2ZWx5UmVtb3ZlQ2FuZGlkYXRlKGNhbmRpZGF0ZSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01NDYsNyArNTQ4LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb09wQ2xvYmJlcml6ZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5k
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiZWxp
bWluYXRpbmcgY2FuZGlkYXRlOiAiLCBjYW5kaWRhdGUsICIgYmVjYXVzZSBpdCBpcyBjbG9iYmVy
ZWQgYnkgIiwgYmxvY2stPmF0KG5vZGVJbmRleCksICJcbiIpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRyYW5zaXRpdmVseVJlbW92ZUNhbmRpZGF0ZShjYW5kaWRhdGUpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTU2OCw3ICs1NzAsNyBAQCBwcml2YXRl
OgogICAgICAgICAvLyBzaW5jZSB0aG9zZSBhdmFpbGFiaWxpdGllcyBzcGVhayBvZiB0aGUgc3Rh
Y2sgYmVmb3JlIHRoZSBvcHRpbWl6aW5nIGNvbXBpbGVyIHN0YWNrIGZyYW1lIGlzCiAgICAgICAg
IC8vIHRvcm4gZG93bi4KIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0Fy
Z3VtZW50c0VsaW1pbmF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRh
dGFMb2coIkFmdGVyIGludGVyZmVyZW5jZSBhbmFseXNpczogIiwgbGlzdER1bXAobV9jYW5kaWRh
dGVzKSwgIlxuIik7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBiNDlmMmU5Y2NhY2NjZjhkYjUyNmUyNWMzNDY4
ZjQyM2IwNmE1NzA2Li5jOGUwOTZlZDRlNjAzOGI1MTQzNTIzZWJlMGNkZGM3ZDhkZGRkYmUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApA
QCAtNzAsMjIgKzcwLDE4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogbmFt
ZXNwYWNlIHsKIAotTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBORVZFUl9JTkxJTkUgdm9pZCBjcmFz
aCgpCi17Ci0gICAgQ1JBU0goKTsKLX0KLQotI3VuZGVmIFJFTEVBU0VfQVNTRVJUCi0jZGVmaW5l
IFJFTEVBU0VfQVNTRVJUKGFzc2VydGlvbikgZG8geyBcCisjZGVmaW5lIFBBUlNFUl9BU1NFUlQo
YXNzZXJ0aW9uLCAuLi4pIGRvIHsgICAgICAgICAgXAogICAgIGlmIChVTkxJS0VMWSghKGFzc2Vy
dGlvbikpKSB7IFwKICAgICAgICAgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShfX0ZJTEVfXywg
X19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJT04sICNhc3NlcnRpb24pOyBcCi0gICAgICAgIGNy
YXNoKCk7IFwKKyAgICAgICAgQ1JBU0hfV0lUSF9JTkZPKF9fVkFfQVJHU19fKTsgXAogICAgIH0g
XAogfSB3aGlsZSAoMCkKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKK25hbWVzcGFjZSBE
RkdCeXRlQ29kZVBhcnNlckludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBm
YWxzZTsKK30KIAogY2xhc3MgQ29uc3RhbnRCdWZmZXJLZXkgewogcHVibGljOgpAQCAtMTIwNyw3
ICsxMjAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICAg
ICAgICAgICwgbV9zZXRNb2RlKHNldE1vZGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG9wZXJhbmQuaXNWYWxpZCgpKTsKKyAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQo
b3BlcmFuZC5pc1ZhbGlkKCkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBOb2RlKiBl
eGVjdXRlKEJ5dGVDb2RlUGFyc2VyKiBwYXJzZXIpCkBAIC0xNDMwLDE4ICsxNDI2LDE4IEBAIHVu
c2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBp
bnQsIElubGluZUNhbGxGcmFtZTo6CiB7CiAgICAgQ2FsbE1vZGUgY2FsbE1vZGUgPSBJbmxpbmVD
YWxsRnJhbWU6OmNhbGxNb2RlRm9yKGtpbmQpOwogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
c3BlY2lhbGl6YXRpb25LaW5kID0gc3BlY2lhbGl6YXRpb25LaW5kRm9yKGNhbGxNb2RlKTsKLSAg
ICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgZGF0YUxvZygiQ29uc2lkZXJpbmcgaW5saW5pbmcgIiwgY2FsbGVlLCAiIGlu
dG8gIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgCiAgICAgaWYgKG1faGFzRGVi
dWdnZXJFbmFibGVkKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHQnl0
ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBG
YWlsaW5nIGJlY2F1c2UgdGhlIGRlYnVnZ2VyIGlzIGluIHVzZS5cbiIpOwogICAgICAgICByZXR1
cm4gVUlOVF9NQVg7CiAgICAgfQogCiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxl
ID0gY2FsbGVlLmZ1bmN0aW9uRXhlY3V0YWJsZSgpOwogICAgIGlmICghZXhlY3V0YWJsZSkgewot
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIHRo
ZXJlIGlzIG5vIGZ1bmN0aW9uIGV4ZWN1dGFibGUuXG4iKTsKICAgICAgICAgcmV0dXJuIFVJTlRf
TUFYOwogICAgIH0KQEAgLTE0NTUsMTQgKzE0NTEsMTQgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJz
ZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCwgSW5saW5lQ2FsbEZyYW1l
OjoKICAgICAvLyBpdCdzIGEgcmFyZSBjYXNlIGJlY2F1c2Ugd2UgZXhwZWN0IHRoYXQgYW55IGhv
dCBjYWxsZWVzIHdvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNvbXBpbGVkLgogICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6
YXRpb25LaW5kKTsKICAgICBpZiAoIWNvZGVCbG9jaykgewotICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIG5vIGNvZGUgYmxvY2sgYXZhaWxhYmxl
LlxuIik7CiAgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICB9CiAKICAgICBDYXBhYmlsaXR5
TGV2ZWwgY2FwYWJpbGl0eUxldmVsID0gaW5saW5lRnVuY3Rpb25Gb3JDYXBhYmlsaXR5TGV2ZWwo
CiAgICAgICAgIGNvZGVCbG9jaywgc3BlY2lhbGl6YXRpb25LaW5kLCBjYWxsZWUuaXNDbG9zdXJl
Q2FsbCgpKTsKLSAgICBpZiAodmVyYm9zZSkgeworICAgIGlmIChERkdCeXRlQ29kZVBhcnNlcklu
dGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2coIiAgICBDYWxsIG1vZGU6ICIsIGNh
bGxNb2RlLCAiXG4iKTsKICAgICAgICAgZGF0YUxvZygiICAgIElzIGNsb3N1cmUgY2FsbDogIiwg
Y2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSwgIlxuIik7CiAgICAgICAgIGRhdGFMb2coIiAgICBDYXBh
YmlsaXR5IGxldmVsOiAiLCBjYXBhYmlsaXR5TGV2ZWwsICJcbiIpOwpAQCAtMTQ3Miw3ICsxNDY4
LDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBj
YWxsZWUsIGludCwgSW5saW5lQ2FsbEZyYW1lOjoKICAgICAgICAgZGF0YUxvZygiICAgIElzIGlu
bGluaW5nIGNhbmRpZGF0ZTogIiwgY29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+
aXNJbmxpbmluZ0NhbmRpZGF0ZSgpLCAiXG4iKTsKICAgICB9CiAgICAgaWYgKCFjYW5JbmxpbmUo
Y2FwYWJpbGl0eUxldmVsKSkgewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERG
R0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgRmFpbGluZyBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyBub3QgaW5saW5lYWJsZS5cbiIpOwog
ICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQpAQCAtMTQ4Miw3ICsxNDc4LDcgQEAgdW5z
aWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGlu
dCwgSW5saW5lQ2FsbEZyYW1lOjoKICAgICAvLyBwdXJwb3NlIG9mIHVuc2V0dGluZyBTQUJJLgog
ICAgIGlmICghaXNTbWFsbEVub3VnaFRvSW5saW5lQ29kZUludG8obV9jb2RlQmxvY2spKSB7CiAg
ICAgICAgIGNvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKLSAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGUgY2Fs
bGVyIGlzIHRvbyBsYXJnZS5cbiIpOwogICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQpA
QCAtMTUwNiw3ICsxNTAyLDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29z
dChDYWxsVmFyaWFudCBjYWxsZWUsIGludCwgSW5saW5lQ2FsbEZyYW1lOjoKICAgICBmb3IgKElu
bGluZVN0YWNrRW50cnkqIGVudHJ5ID0gbV9pbmxpbmVTdGFja1RvcDsgZW50cnk7IGVudHJ5ID0g
ZW50cnktPm1fY2FsbGVyKSB7CiAgICAgICAgICsrZGVwdGg7CiAgICAgICAgIGlmIChkZXB0aCA+
PSBPcHRpb25zOjptYXhpbXVtSW5saW5pbmdEZXB0aCgpKSB7Ci0gICAgICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgZGVwdGggZXhj
ZWVkZWQuXG4iKTsKICAgICAgICAgICAgIHJldHVybiBVSU5UX01BWDsKICAgICAgICAgfQpAQCAt
MTUxNCwxNCArMTUxMCwxNCBAQCB1bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0
KENhbGxWYXJpYW50IGNhbGxlZSwgaW50LCBJbmxpbmVDYWxsRnJhbWU6OgogICAgICAgICBpZiAo
ZW50cnktPmV4ZWN1dGFibGUoKSA9PSBleGVjdXRhYmxlKSB7CiAgICAgICAgICAgICArK3JlY3Vy
c2lvbjsKICAgICAgICAgICAgIGlmIChyZWN1cnNpb24gPj0gT3B0aW9uczo6bWF4aW11bUlubGlu
aW5nUmVjdXJzaW9uKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSByZWN1cnNpb24gZGV0ZWN0
ZWQuXG4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0J5
dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgICBJbmxp
bmluZyBzaG91bGQgYmUgcG9zc2libGUuXG4iKTsKICAgICAKICAgICAvLyBJdCBtaWdodCBiZSBw
b3NzaWJsZSB0byBpbmxpbmUuCkBAIC0xNjE4LDExICsxNjE0LDExIEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5k
LCBDYWxsVmFyCiAgICAgaW5saW5lVmFyaWFibGVEYXRhLmFyZ3VtZW50UG9zaXRpb25TdGFydCA9
IGFyZ3VtZW50UG9zaXRpb25TdGFydDsKICAgICBpbmxpbmVWYXJpYWJsZURhdGEuY2FsbGVlVmFy
aWFibGUgPSAwOwogICAgIAotICAgIFJFTEVBU0VfQVNTRVJUKAorICAgIFBBUlNFUl9BU1NFUlQo
CiAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVD
YWxsCiAgICAgICAgID09IGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpOwogICAgIGlmIChjYWxsZWUu
aXNDbG9zdXJlQ2FsbCgpKSB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxlZVZhcmlhYmxl
KTsKKyAgICAgICAgUEFSU0VSX0FTU0VSVChjYWxsZWVWYXJpYWJsZSk7CiAgICAgICAgIGlubGlu
ZVZhcmlhYmxlRGF0YS5jYWxsZWVWYXJpYWJsZSA9IGNhbGxlZVZhcmlhYmxlOwogICAgIH0KICAg
ICAKQEAgLTE2NjksNyArMTY2NSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwo
Tm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyCiAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiICAgICAgICBSZXB1cnBvc2luZyBsYXN0IGJsb2NrIGZyb20gIiwg
bGFzdEJsb2NrLT5ieXRlY29kZUJlZ2luLCAiIHRvICIsIG1fY3VycmVudEluZGV4LCAiXG4iKTsK
ICAgICAgICAgICAgIGxhc3RCbG9jay0+Ynl0ZWNvZGVCZWdpbiA9IG1fY3VycmVudEluZGV4Owog
ICAgICAgICAgICAgaWYgKGNhbGxlckxpbmthYmlsaXR5ID09IENhbGxlckRvZXNOb3JtYWxMaW5r
aW5nKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYg
KERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2coIkFkZGluZyB1bmxpbmtlZCBibG9jayAiLCBSYXdQb2ludGVyKG1fZ3JhcGgubGFz
dEJsb2NrKCkpLCAiIChvbmUgcmV0dXJuKVxuIik7CiAgICAgICAgICAgICAgICAgbV9pbmxpbmVT
dGFja1RvcC0+bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2so
bV9ncmFwaC5sYXN0QmxvY2soKSkpOwogICAgICAgICAgICAgfQpAQCAtMTY5OSwxNCArMTY5NSwx
NCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2Rl
LCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcgogICAgICAgICBBU1NFUlQoIW5vZGUtPnRhcmdl
dEJsb2NrKCkpOwogICAgICAgICBub2RlLT50YXJnZXRCbG9jaygpID0gYmxvY2sucHRyKCk7CiAg
ICAgICAgIGlubGluZVN0YWNrRW50cnkubV91bmxpbmtlZEJsb2Nrc1tpXS5tX25lZWRzRWFybHlS
ZXR1cm5MaW5raW5nID0gZmFsc2U7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAo
REZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2co
Ik1hcmtpbmcgIiwgUmF3UG9pbnRlcihibG9ja1RvTGluayksICIgYXMgbGlua2VkIChqdW1wcyB0
byByZXR1cm4pXG4iKTsKICAgICAgICAgYmxvY2tUb0xpbmstPmRpZExpbmsoKTsKICAgICB9CiAg
ICAgCiAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jay5wdHIoKTsKICAgICBBU1NFUlQobV9pbmxp
bmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5pc0VtcHR5KCkgfHwg
bV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5sYXN0KCkt
PmJ5dGVjb2RlQmVnaW4gPCBuZXh0T2Zmc2V0KTsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAo
REZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQWRk
aW5nIHVubGlua2VkIGJsb2NrICIsIFJhd1BvaW50ZXIoYmxvY2sucHRyKCkpLCAiIChtYW55IHJl
dHVybnMpXG4iKTsKICAgICBpZiAoY2FsbGVyTGlua2FiaWxpdHkgPT0gQ2FsbGVyRG9lc05vcm1h
bExpbmtpbmcpIHsKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fdW5saW5r
ZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2sucHRyKCkpKTsKQEAgLTE3NDIsNyAr
MTczOCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lubGluZUNhbGwoTm9kZSog
Y2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kCiAgICAgaWYgKCFpbmxpbmluZ0JhbGFu
Y2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBp
ZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygi
ICAgIENvbnNpZGVyaW5nIGNhbGxlZSAiLCBjYWxsZWUsICJcbiIpOwogICAgIAogICAgIC8vIElu
dHJpbnNpY3MgYW5kIGludGVybmFsIGZ1bmN0aW9ucyBjYW4gb25seSBiZSBpbmxpbmVkIGlmIHdl
J3JlIG5vdCBkb2luZyB2YXJhcmdzLiBUaGlzIGlzIGJlY2F1c2UKQEAgLTE3NjIsNDAgKzE3NTgs
NDAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5lQ2FsbChOb2RlKiBjYWxs
VGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQKICAgICAKICAgICAgICAgaWYgKEludGVybmFs
RnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLmludGVybmFsRnVuY3Rpb24oKSkgewogICAgICAg
ICAgICAgaWYgKGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihjYWxsVGFyZ2V0Tm9kZSwg
cmVzdWx0T3BlcmFuZCwgZnVuY3Rpb24sIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kLCBwcmVkaWN0aW9uLCBpbnNlcnRDaGVja3NX
aXRoQWNjb3VudGluZykpIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChkaWRJbnNl
cnRDaGVja3MpOworICAgICAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tz
KTsKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXROb2RlKTsK
ICAgICAgICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgICAgICAgICAgICAgIGlubGluaW5nQmFsYW5j
ZS0tOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CisgICAgICAgICAgICBQQVJT
RVJfQVNTRVJUKCFkaWRJbnNlcnRDaGVja3MpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgCiAgICAgICAgIEludHJpbnNpYyBpbnRyaW5zaWMgPSBjYWxsZWUuaW50
cmluc2ljRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAgICAgIGlmIChpbnRyaW5zaWMgIT0g
Tm9JbnRyaW5zaWMpIHsKICAgICAgICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWNDYWxsKGNhbGxU
YXJnZXROb2RlLCByZXN1bHRPcGVyYW5kLCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFjY291
bnRpbmcpKSB7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tz
KTsKKyAgICAgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKGRpZEluc2VydENoZWNrcyk7CiAgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7CiAgICAgICAg
ICAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKTsKICAgICAgICAgICAgICAgICBpbmxpbmluZ0JhbGFuY2UtLTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CisgICAgICAgICAgICBQQVJTRVJfQVNT
RVJUKCFkaWRJbnNlcnRDaGVja3MpOwogICAgICAgICAgICAgLy8gV2UgbWlnaHQgc3RpbGwgdHJ5
IHRvIGlubGluZSB0aGUgSW50cmluc2ljIGJlY2F1c2UgaXQgbWlnaHQgYmUgYSBidWlsdGluIEpT
IGZ1bmN0aW9uLgogICAgICAgICB9CiAKICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZURPTUpJVCgp
KSB7CiAgICAgICAgICAgICBpZiAoY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9
IGNhbGxlZS5zaWduYXR1cmVGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKSkgewogICAgICAgICAgICAg
ICAgIGlmIChoYW5kbGVET01KSVRDYWxsKGNhbGxUYXJnZXROb2RlLCByZXN1bHRPcGVyYW5kLCBz
aWduYXR1cmUsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJl
ZGljdGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGRpZEluc2VydENoZWNrcyk7CisgICAgICAgICAgICAgICAgICAg
IFBBUlNFUl9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKICAgICAgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGVt
aXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyk7CiAgICAgICAgICAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZS0tOwogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoIWRpZEluc2VydENoZWNrcyk7CisgICAgICAgICAgICAgICAgUEFS
U0VSX0FTU0VSVCghZGlkSW5zZXJ0Q2hlY2tzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KQEAgLTE4MTcsMjEgKzE4MTMsMjEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW5saW5pbmcoCiAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50c0FyZ3VtZW50LCB1bnNpZ25l
ZCBhcmd1bWVudHNPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywKICAgICB1
bnNpZ25lZCBuZXh0T2Zmc2V0LCBOb2RlVHlwZSBjYWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2lu
ZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogewotICAgIGlmICh2ZXJib3NlKSB7
CisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAg
ZGF0YUxvZygiSGFuZGxpbmcgaW5saW5pbmcuLi5cbiIpOwogICAgICAgICBkYXRhTG9nKCJTdGFj
azogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgfQogICAgIENvZGVTcGVjaWFs
aXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5kID0gSW5saW5lQ2FsbEZyYW1lOjpzcGVjaWFs
aXphdGlvbktpbmRGb3Ioa2luZCk7CiAgICAgCiAgICAgaWYgKCFjYWxsTGlua1N0YXR1cy5zaXpl
KCkpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNl
ckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQmFpbGluZyBpbmxpbmlu
Zy5cbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIGlmIChJbmxp
bmVDYWxsRnJhbWU6OmlzVmFyYXJncyhraW5kKQogICAgICAgICAmJiBjYWxsTGlua1N0YXR1cy5t
YXhOdW1Bcmd1bWVudHMoKSA+IE9wdGlvbnM6Om1heGltdW1WYXJhcmdzRm9ySW5saW5pbmcoKSkg
ewotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJCYWlsaW5nIGlubGluaW5nIGJl
Y2F1c2Ugb2YgdmFyYXJncy5cbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAt
MTk1MCw3ICsxOTQ2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9KTsK
LSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50
ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkRvbmUgaW5saW5pbmcgKHNp
bXBsZSkuXG4iKTsKICAgICAgICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9y
aWdpbigpLCAiXG4iKTsKICAgICAgICAgICAgIGRhdGFMb2coIlJlc3VsdDogIiwgcmVzdWx0LCAi
XG4iKTsKQEAgLTE5NjYsNyArMTk2Miw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKAogICAgIC8vIGFsc28uCiAgICAgaWYgKCFpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2Rl
KSB8fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWNDYWxsSW5saW5pbmcoKQogICAgICAgICB8fCBJ
bmxpbmVDYWxsRnJhbWU6OmlzVmFyYXJncyhraW5kKSkgewotICAgICAgICBpZiAodmVyYm9zZSkg
eworICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkgewogICAg
ICAgICAgICAgZGF0YUxvZygiQmFpbGluZyBpbmxpbmluZyAoaGFyZCkuXG4iKTsKICAgICAgICAg
ICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICAg
ICAgfQpAQCAtMTk3OCw3ICsxOTc0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5s
aW5pbmcoCiAgICAgLy8gaXQgaGFzIG5vIGlkZWEuCiAgICAgaWYgKCFPcHRpb25zOjp1c2VQb2x5
bW9ycGhpY0NhbGxJbmxpbmluZ0Zvck5vblN0dWJTdGF0dXMoKQogICAgICAgICAmJiAhY2FsbExp
bmtTdGF0dXMuaXNCYXNlZE9uU3R1YigpKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAg
ICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAg
ICBkYXRhTG9nKCJCYWlsaW5nIGlubGluaW5nIChub24tc3R1YiBwb2x5bW9ycGhpc20pLlxuIik7
CiAgICAgICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxu
Iik7CiAgICAgICAgIH0KQEAgLTIwMDYsMTQgKzIwMDIsMTQgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW5saW5pbmcoCiAgICAgICAgIC8vIHdoZXJlIGl0IHdvdWxkIGJlIGJlbmVmaWNp
YWwuIEl0IG1pZ2h0IGJlIGJlc3QgdG8gaGFuZGxlIHRoZXNlIGNhc2VzIGFzIGlmIGFsbCBjYWxs
cyB3ZXJlCiAgICAgICAgIC8vIGNsb3N1cmUgY2FsbHMuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYwMjAKLSAgICAgICAgaWYgKHZlcmJvc2Up
IHsKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpIHsKICAg
ICAgICAgICAgIGRhdGFMb2coIkJhaWxpbmcgaW5saW5pbmcgKG1peCkuXG4iKTsKICAgICAgICAg
ICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICAg
ICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAotICAgIGlmICh2ZXJib3Nl
KSB7CisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpIHsKICAgICAg
ICAgZGF0YUxvZygiRG9pbmcgaGFyZCBpbmxpbmluZy4uLlxuIik7CiAgICAgICAgIGRhdGFMb2co
IlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKICAgICB9CkBAIC0yMDI0LDEx
ICsyMDIwLDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgIC8v
IHN0b3JlIHRoZSBjYWxsZWUgc28gdGhhdCBpdCB3aWxsIGJlIGFjY2Vzc2libGUgdG8gYWxsIG9m
IHRoZSBibG9ja3Mgd2UncmUgYWJvdXQgdG8gY3JlYXRlLiBXZQogICAgIC8vIGdldCBhd2F5IHdp
dGggZG9pbmcgYW4gaW1tZWRpYXRlLXNldCBoZXJlIGJlY2F1c2Ugd2Ugd291bGRuJ3QgaGF2ZSBw
ZXJmb3JtZWQgYW55IHNpZGUgZWZmZWN0cwogICAgIC8vIHlldC4KLSAgICBpZiAodmVyYm9zZSkK
KyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0
YUxvZygiUmVnaXN0ZXIgb2Zmc2V0OiAiLCByZWdpc3Rlck9mZnNldCk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIGNhbGxlZVJlZyhyZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7
CiAgICAgY2FsbGVlUmVnID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKGNhbGxlZVJl
Zyk7Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkNhbGxlZSBpcyBnb2luZyB0byBiZSAiLCBjYWxs
ZWVSZWcsICJcbiIpOwogICAgIHNldERpcmVjdChjYWxsZWVSZWcsIGNhbGxUYXJnZXROb2RlLCBJ
bW1lZGlhdGVTZXRXaXRoRmx1c2gpOwogCkBAIC0yMDQyLDcgKzIwMzgsNyBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICBhZGRUb0dyYXBoKFN3aXRjaCwgT3BJbmZv
KCZkYXRhKSwgdGhpbmdUb1N3aXRjaE9uKTsKICAgICAKICAgICBCYXNpY0Jsb2NrKiBvcmlnaW5C
bG9jayA9IG1fY3VycmVudEJsb2NrOwotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChERkdCeXRl
Q29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJNYXJraW5nICIs
IFJhd1BvaW50ZXIob3JpZ2luQmxvY2spLCAiIGFzIGxpbmtlZCAob3JpZ2luIG9mIHBvbHkgaW5s
aW5lKVxuIik7CiAgICAgb3JpZ2luQmxvY2stPmRpZExpbmsoKTsKICAgICBjYW5jZWxMaW5raW5n
Rm9yQmxvY2sobV9pbmxpbmVTdGFja1RvcCwgb3JpZ2luQmxvY2spOwpAQCAtMjA1NCw3ICsyMDUw
LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgLy8gV2UgbWF5
IGZvcmNlIHRoaXMgdHJ1ZSBpZiB3ZSBnaXZlIHVwIG9uIGlubGluaW5nIGFueSBvZiB0aGUgZWRn
ZXMuCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCA9IGNhbGxMaW5rU3RhdHVzLmNvdWxkVGFr
ZVNsb3dQYXRoKCk7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0J5dGVDb2Rl
UGFyc2VySW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkFib3V0IHRvIGxvb3Ag
b3ZlciBmdW5jdGlvbnMgYXQgIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIi5cbiIpOwogICAgIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsTGlua1N0YXR1cy5zaXplKCk7ICsraSkg
ewpAQCAtMjEwMSwxMSArMjA5NywxMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxp
bmluZygKICAgICAgICAgICAgIGFkZFRvR3JhcGgoSnVtcCk7CiAgICAgICAgICAgICBsYW5kaW5n
QmxvY2tzLmFwcGVuZChtX2N1cnJlbnRCbG9jayk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHZl
cmJvc2UpCisgICAgICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgZGF0YUxvZygiTWFya2luZyAiLCBSYXdQb2ludGVyKG1fY3VycmVudEJsb2Nr
KSwgIiBhcyBsaW5rZWQgKHRhaWwgb2YgcG9seSBpbmxpbmVlKVxuIik7CiAgICAgICAgIG1fY3Vy
cmVudEJsb2NrLT5kaWRMaW5rKCk7CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlm
IChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxv
ZygiRmluaXNoZWQgaW5saW5pbmcgIiwgY2FsbExpbmtTdGF0dXNbaV0sICIgYXQgIiwgY3VycmVu
dENvZGVPcmlnaW4oKSwgIi5cbiIpOwogICAgIH0KICAgICAKQEAgLTIxMTUsNyArMjExMSw3IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgIG1fZXhpdE9LID0gdHJ1
ZTsKICAgICBkYXRhLmZhbGxUaHJvdWdoID0gQnJhbmNoVGFyZ2V0KHNsb3dQYXRoQmxvY2sucHRy
KCkpOwogICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soc2xvd1BhdGhCbG9jay5jb3B5UmVmKCkpOwot
ICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIoc2xvd1BhdGhCbG9j
ay5wdHIoKSksICIgYXMgbGlua2VkIChzbG93IHBhdGggYmxvY2spXG4iKTsKICAgICBzbG93UGF0
aEJsb2NrLT5kaWRMaW5rKCk7CiAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOwpAQCAtMjE0Niw3
ICsyMTQyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgUmVm
PEJhc2ljQmxvY2s+IGNvbnRpbnVhdGlvbkJsb2NrID0gYWRvcHRSZWYoCiAgICAgICAgICpuZXcg
QmFzaWNCbG9jayhVSU5UX01BWCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCAxKSk7CiAg
ICAgbV9ncmFwaC5hcHBlbmRCbG9jayhjb250aW51YXRpb25CbG9jay5jb3B5UmVmKCkpOwotICAg
IGlmICh2ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICBkYXRhTG9nKCJBZGRpbmcgdW5saW5rZWQgYmxvY2sgIiwgUmF3UG9pbnRlcihj
b250aW51YXRpb25CbG9jay5wdHIoKSksICIgKGNvbnRpbnVhdGlvbilcbiIpOwogICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soY29udGlu
dWF0aW9uQmxvY2sucHRyKCkpKTsKICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CkBAIC0yMTU4
LDcgKzIxNTQsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAgICBt
X2N1cnJlbnRJbmRleCA9IG9sZE9mZnNldDsKICAgICBtX2V4aXRPSyA9IHRydWU7CiAgICAgCi0g
ICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVy
Ym9zZSkgewogICAgICAgICBkYXRhTG9nKCJEb25lIGlubGluaW5nIChoYXJkKS5cbiIpOwogICAg
ICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAg
fQpAQCAtMzQ4MywxNCArMzQ3OSwxNCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpuZWVkc0R5bmFt
aWNMb29rdXAoUmVzb2x2ZVR5cGUgdHlwZSwgT3Bjb2RlSUQgb3Bjb2RlKQogCiBHZXRCeU9mZnNl
dE1ldGhvZCBCeXRlQ29kZVBhcnNlcjo6cGxhbkxvYWQoY29uc3QgT2JqZWN0UHJvcGVydHlDb25k
aXRpb24mIGNvbmRpdGlvbikKIHsKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoREZHQnl0ZUNv
ZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiUGxhbm5pbmcgYSBs
b2FkOiAiLCBjb25kaXRpb24sICJcbiIpOwogICAgIAogICAgIC8vIFdlIG1pZ2h0IHByb21vdGUg
dGhpcyB0byBFcXVpdmFsZW5jZSwgYW5kIGEgbGF0ZXIgREZHIHBhc3MgbWlnaHQgYWxzbyBkbyBz
dWNoIHByb21vdGlvbgogICAgIC8vIGV2ZW4gaWYgd2UgZmFpbCwgYnV0IGZvciBzaW1wbGljaXR5
IHRoaXMgY2Fubm90IGJlIGFza2VkIHRvIGxvYWQgYW4gZXF1aXZhbGVuY2UgY29uZGl0aW9uLgog
ICAgIC8vIE5vbmUgb2YgdGhlIGNsaWVudHMgb2YgdGhpcyBtZXRob2Qgd2lsbCByZXF1ZXN0IGEg
bG9hZCBvZiBhbiBFcXVpdmFsZW5jZSBjb25kaXRpb24gYW55d2F5LAogICAgIC8vIGFuZCBzdXBw
b3J0aW5nIGl0IHdvdWxkIGNvbXBsaWNhdGUgdGhlIGhldXJpc3RpY3MgYmVsb3cuCi0gICAgUkVM
RUFTRV9BU1NFUlQoY29uZGl0aW9uLmtpbmQoKSA9PSBQcm9wZXJ0eUNvbmRpdGlvbjo6UHJlc2Vu
Y2UpOworICAgIFBBUlNFUl9BU1NFUlQoY29uZGl0aW9uLmtpbmQoKSA9PSBQcm9wZXJ0eUNvbmRp
dGlvbjo6UHJlc2VuY2UpOwogICAgIAogICAgIC8vIEhlcmUncyB0aGUgcmFua2luZyBvZiBob3cg
dG8gaGFuZGxlIHRoaXMsIGZyb20gbW9zdCBwcmVmZXJyZWQgdG8gbGVhc3QgcHJlZmVycmVkOgog
ICAgIC8vCkBAIC0zNTkzLDE0ICszNTg5LDE0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmNoZWNr
KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQpCiAKIEdldEJ5
T2Zmc2V0TWV0aG9kIEJ5dGVDb2RlUGFyc2VyOjpwbGFuTG9hZChjb25zdCBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0KQogewotICAgIGlmICh2ZXJib3NlKQorICAgIGlm
IChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJj
b25kaXRpb25TZXQgPSAiLCBjb25kaXRpb25TZXQsICJcbiIpOwogICAgIAogICAgIEdldEJ5T2Zm
c2V0TWV0aG9kIHJlc3VsdDsKICAgICBmb3IgKGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
JiBjb25kaXRpb24gOiBjb25kaXRpb25TZXQpIHsKICAgICAgICAgc3dpdGNoIChjb25kaXRpb24u
a2luZCgpKSB7CiAgICAgICAgIGNhc2UgUHJvcGVydHlDb25kaXRpb246OlByZXNlbmNlOgotICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlc3VsdCk7IC8vIFNob3VsZCBvbmx5IHNlZSBleGFj
dGx5IG9uZSBvZiB0aGVzZS4KKyAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoIXJlc3VsdCk7IC8v
IFNob3VsZCBvbmx5IHNlZSBleGFjdGx5IG9uZSBvZiB0aGVzZS4KICAgICAgICAgICAgIHJlc3Vs
dCA9IHBsYW5Mb2FkKGNvbmRpdGlvbik7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAg
ICAgICAgICAgICByZXR1cm4gR2V0QnlPZmZzZXRNZXRob2QoKTsKQEAgLTM3NzAsNyArMzc2Niw3
IEBAIE5vZGUqIEJ5dGVDb2RlUGFyc2VyOjpsb2FkKAogCiBOb2RlKiBCeXRlQ29kZVBhcnNlcjo6
c3RvcmUoTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllciwgY29uc3QgUHV0QnlJZFZhcmlh
bnQmIHZhcmlhbnQsIE5vZGUqIHZhbHVlKQogewotICAgIFJFTEVBU0VfQVNTRVJUKHZhcmlhbnQu
a2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlKTsKKyAgICBQQVJTRVJfQVNTRVJUKHZh
cmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlKTsKIAogICAgIGNoZWNrUHJl
c2VuY2VMaWtlKGJhc2UsIG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyXSwgdmFyaWFu
dC5vZmZzZXQoKSwgdmFyaWFudC5zdHJ1Y3R1cmUoKSk7CiAgICAgcmV0dXJuIGhhbmRsZVB1dEJ5
T2Zmc2V0KGJhc2UsIGlkZW50aWZpZXIsIHZhcmlhbnQub2Zmc2V0KCksIHZhcmlhbnQucmVxdWly
ZWRUeXBlKCksIHZhbHVlKTsKQEAgLTQxNjksNyArNDE2NSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgLy8gb3Bwb3NlZCB0byB1c2luZyBh
IHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlmIChtX2N1cnJlbnRCbG9jayA9PSBtX2dy
YXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUoKSkgewogICAgICAgICBhdXRvIGFkZFJl
c3VsdCA9IG1fZ3JhcGgubV9yb290VG9Bcmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBBcmd1
bWVudHNWZWN0b3IoKSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKKyAgICAgICAgUEFSU0VSX0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAg
ICAgIEFyZ3VtZW50c1ZlY3RvciYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWU7CiAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHMucmVzaXplKG1fbnVtQXJn
dW1lbnRzKTsKIApAQCAtNTI2Niw3ICs1MjYyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9j
YXRjaCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2N1
cnJlbnRCbG9jay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoIW1fY3VycmVu
dEJsb2NrLT5zaXplKCkpOwogCiAgICAgICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVm
ZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4o
Y3VycmVudEluc3RydWN0aW9uWzNdLnUucG9pbnRlcik7CiAKQEAgLTUyOTEsOCArNTI4Nyw4IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAg
ICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIGxvY2FsUHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOwogICAgICAgICAgICAgICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wZXJh
bmQuaXNBcmd1bWVudCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KHN0YXRpY19jYXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJndW1lbnQoKSkgPCBhcmd1bWVudFBy
ZWRpY3Rpb25zLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBQQVJTRVJfQVNTRVJU
KG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFBBUlNFUl9B
U1NFUlQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG9wZXJhbmQudG9Bcmd1bWVudCgpKSA8IGFyZ3Vt
ZW50UHJlZGljdGlvbnMuc2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWxp
ZGF0aW9uRW5hYmxlZCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZW5Bcmd1bWVu
dHMuYWRkKG9wZXJhbmQudG9Bcmd1bWVudCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGFy
Z3VtZW50UHJlZGljdGlvbnNbb3BlcmFuZC50b0FyZ3VtZW50KCldID0gcHJlZGljdGlvbjsKQEAg
LTUzMDEsNyArNTI5Nyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQgbGltaXQpCiAKICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgewog
ICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQg
PCBtX251bUFyZ3VtZW50czsgKythcmd1bWVudCkKLSAgICAgICAgICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHNlZW5Bcmd1bWVudHMuY29udGFpbnMoYXJndW1lbnQpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFBBUlNFUl9BU1NFUlQoc2VlbkFyZ3VtZW50cy5jb250YWlucyhhcmd1
bWVudCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApAQCAtNTM0Miw3ICs1
MzM4LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkK
IAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFw
aC5tX3Jvb3RUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIEFyZ3VtZW50c1ZlY3Rvcigp
KTsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7
CisgICAgICAgICAgICAgICAgUEFSU0VSX0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAg
ICAgICAgICAgICAgICAgQXJndW1lbnRzVmVjdG9yJiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1l
bnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CiAKQEAgLTU0ODcsOCArNTQ4Myw4IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBj
YXNlIEdsb2JhbExleGljYWxWYXI6CiAgICAgICAgICAgICBjYXNlIEdsb2JhbExleGljYWxWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAgICAgICAgICAgICAgICAgSlNTY29wZSogY29uc3Rh
bnRTY29wZSA9IEpTU2NvcGU6OmNvbnN0YW50U2NvcGVGb3JDb2RlQmxvY2socmVzb2x2ZVR5cGUs
IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrKTsKLSAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChjb25zdGFudFNjb3BlKTsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChz
dGF0aWNfY2FzdDxKU1Njb3BlKj4oY3VycmVudEluc3RydWN0aW9uWzZdLnUucG9pbnRlcikgPT0g
Y29uc3RhbnRTY29wZSk7CisgICAgICAgICAgICAgICAgUEFSU0VSX0FTU0VSVChjb25zdGFudFNj
b3BlKTsKKyAgICAgICAgICAgICAgICBQQVJTRVJfQVNTRVJUKHN0YXRpY19jYXN0PEpTU2NvcGUq
PihjdXJyZW50SW5zdHJ1Y3Rpb25bNl0udS5wb2ludGVyKSA9PSBjb25zdGFudFNjb3BlKTsKICAg
ICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRzdCksIHdlYWtKU0NvbnN0YW50KGNv
bnN0YW50U2NvcGUpKTsKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdldChW
aXJ0dWFsUmVnaXN0ZXIoc2NvcGUpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01ODI5
LDcgKzU4MjUsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxp
bWl0KQogICAgICAgICAgICAgLy8gQmFzZWxpbmUtPkRGRyBPU1IganVtcHMgYmV0d2VlbiBsb29w
IGhpbnRzLiBUaGUgREZHIGFzc3VtZXMgdGhhdCBCYXNlbGluZS0+REZHCiAgICAgICAgICAgICAv
LyBPU1IgY2FuIG9ubHkgaGFwcGVuIGF0IGJhc2ljIGJsb2NrIGJvdW5kYXJpZXMuIEFzc2VydCB0
aGF0IHRoZXNlIHR3byBzdGF0ZW1lbnRzCiAgICAgICAgICAgICAvLyBhcmUgY29tcGF0aWJsZS4K
LSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fY3VycmVudEluZGV4ID09IGJsb2NrQmVnaW4p
OworICAgICAgICAgICAgUEFSU0VSX0FTU0VSVChtX2N1cnJlbnRJbmRleCA9PSBibG9ja0JlZ2lu
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gV2UgbmV2ZXIgZG8gT1NSIGludG8gYW4g
aW5saW5lZCBjb2RlIGJsb2NrLiBUaGF0IGNvdWxkIG5vdCBoYXBwZW4sIHNpbmNlIE9TUgogICAg
ICAgICAgICAgLy8gbG9va3MgdXAgdGhlIGNvZGUgYmxvY2sgdGhhdCBpcyB0aGUgcmVwbGFjZW1l
bnQgZm9yIHRoZSBiYXNlbGluZSBKSVQgY29kZQpAQCAtNjE3OSw3ICs2MTc1LDcgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrKEJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8QmFzaWNC
bG9jayo+JiBwb3NzaWJsZVQKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIGlmICh2
ZXJib3NlKQorICAgIGlmIChERkdCeXRlQ29kZVBhcnNlckludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICBkYXRhTG9nKCJNYXJraW5nICIsIFJhd1BvaW50ZXIoYmxvY2spLCAiIGFzIGxpbmtlZCAo
YWN0dWFsbHkgZGlkIGxpbmtpbmcpXG4iKTsKICAgICBibG9jay0+ZGlkTGluaygpOwogfQpAQCAt
NjE4NywxMCArNjE4MywxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2soQmFzaWNC
bG9jayogYmxvY2ssIFZlY3RvcjxCYXNpY0Jsb2NrKj4mIHBvc3NpYmxlVAogdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6bGlua0Jsb2NrcyhWZWN0b3I8VW5saW5rZWRCbG9jaz4mIHVubGlua2VkQmxvY2tz
LCBWZWN0b3I8QmFzaWNCbG9jayo+JiBwb3NzaWJsZVRhcmdldHMpCiB7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCB1bmxpbmtlZEJsb2Nrcy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0J5dGVDb2RlUGFyc2VySW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICBkYXRhTG9nKCJBdHRlbXB0aW5nIHRvIGxpbmsgIiwgUmF3UG9pbnRlcih1
bmxpbmtlZEJsb2Nrc1tpXS5tX2Jsb2NrKSwgIlxuIik7CiAgICAgICAgIGlmICh1bmxpbmtlZEJs
b2Nrc1tpXS5tX25lZWRzTm9ybWFsTGlua2luZykgewotICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRG9lcyBuZWVkIG5vcm1hbCBsaW5raW5nLlxuIik7
CiAgICAgICAgICAgICBsaW5rQmxvY2sodW5saW5rZWRCbG9ja3NbaV0ubV9ibG9jaywgcG9zc2li
bGVUYXJnZXRzKTsKICAgICAgICAgICAgIHVubGlua2VkQmxvY2tzW2ldLm1fbmVlZHNOb3JtYWxM
aW5raW5nID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NTRVBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3Bw
CmluZGV4IDU3ZWM0YTgwZTRiMjlkMmNiZDQ5NmVlYWMzOGQxYjI5MzliODYxNzMuLmViZDFiOGVm
ZWY3YzI1MzBlMjhmOTI3MTdjZjcwZGFjMjcwZWQzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ1NFUGhhc2UuY3BwCkBAIC00OCw3ICs0OCw5IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAotY29uc3QgYm9vbCB2ZXJib3NlID0gZmFs
c2U7CituYW1lc3BhY2UgREZHQ1NFUGhhc2VJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2
ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIEltcHVyZURhdGFTbG90IHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShJbXB1cmVEYXRhU2xvdCk7CkBAIC02MjcsNyArNjI5LDcgQEAgcHVibGlj
OgogICAgIAogICAgIGJvb2wgaXRlcmF0ZSgpCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkK
KyAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBk
YXRhTG9nKCJQZXJmb3JtaW5nIGl0ZXJhdGlvbi5cbiIpOwogICAgICAgICAKICAgICAgICAgbV9j
aGFuZ2VkID0gZmFsc2U7CkBAIC02MzgsMTMgKzY0MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBtX2ltcHVyZURhdGEgPSAmbV9pbXB1cmVEYXRhTWFwW21fYmxvY2tdOwogICAgICAgICAgICAg
bV93cml0ZXNTb0Zhci5jbGVhcigpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgICAgIGlmIChERkdDU0VQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICAgICAgICAgIGRhdGFMb2coIlByb2Nlc3NpbmcgYmxvY2sgIiwgKm1fYmxvY2ssICI6XG4i
KTsKIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXggPSAwOyBub2RlSW5kZXgg
PCBtX2Jsb2NrLT5zaXplKCk7ICsrbm9kZUluZGV4KSB7CiAgICAgICAgICAgICAgICAgbV9ub2Rl
SW5kZXggPSBub2RlSW5kZXg7CiAgICAgICAgICAgICAgICAgbV9ub2RlID0gbV9ibG9jay0+YXQo
bm9kZUluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAg
ICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiICBMb29raW5nIGF0IG5vZGUgIiwgbV9ub2RlLCAiOlxuIik7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgbV9ncmFwaC5wZXJmb3JtU3Vic3RpdHV0aW9uKG1fbm9k
ZSk7CkBAIC03MDcsNyArNzA5LDcgQEAgcHVibGljOgogICAgICAgICAvLyBhIGdsb2JhbCBzZWFy
Y2guCiAgICAgICAgIExhenlOb2RlIG1hdGNoID0gbV9pbXB1cmVEYXRhLT5hdmFpbGFibGVBdFRh
aWwuZ2V0KGxvY2F0aW9uKTsKICAgICAgICAgaWYgKCEhbWF0Y2gpIHsKLSAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2Up
CiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgRm91bmQgbG9jYWwgbWF0Y2g6ICIsIG1h
dGNoLCAiXG4iKTsKICAgICAgICAgICAgIHJldHVybiBtYXRjaDsKICAgICAgICAgfQpAQCAtNzE1
LDcgKzcxNyw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gSWYgaXQncyBub3QgYXZhaWxhYmxlIGF0
IHRoaXMgcG9pbnQgaW4gdGhlIGJsb2NrLCBhbmQgYXQgc29tZSBwcmlvciBwb2ludCBpbiB0aGUg
YmxvY2sKICAgICAgICAgLy8gd2UgaGF2ZSBjbG9iYmVyZWQgdGhpcyBoZWFwIGxvY2F0aW9uLCB0
aGVuIHRoZXJlIGlzIG5vIHBvaW50IGluIGRvaW5nIGEgZ2xvYmFsIHNlYXJjaC4KICAgICAgICAg
aWYgKG1fd3JpdGVzU29GYXIub3ZlcmxhcHMobG9jYXRpb24uaGVhcCgpKSkgewotICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBOb3QgbG9va2luZyBnbG9iYWxs
eSBiZWNhdXNlIG9mIGxvY2FsIGNsb2JiZXI6ICIsIG1fd3JpdGVzU29GYXIsICJcbiIpOwogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KQEAgLTc3Miw3ICs3NzQsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0
KCk7CiAgICAgICAgICAgICBzZWVuTGlzdC5hcHBlbmQoYmxvY2spOwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdDU0VQaGFzZUludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFNlYXJjaGluZyBp
biBibG9jayAiLCAqYmxvY2ssICJcbiIpOwogICAgICAgICAgICAgSW1wdXJlQmxvY2tEYXRhJiBk
YXRhID0gbV9pbXB1cmVEYXRhTWFwW2Jsb2NrXTsKICAgICAgICAgICAgIApAQCAtNzgwLDEyICs3
ODIsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgLy8gdGhleSBjYW1lICphZnRlciogb3VyIHBv
c2l0aW9uIGluIHRoZSBibG9jay4gQ2xlYXJseSwgd2hpbGUgb3VyIGJsb2NrIGRvbWluYXRlcwog
ICAgICAgICAgICAgLy8gaXRzZWxmLCB0aGUgdGhpbmdzIGluIHRoZSBibG9jayBhZnRlciB1cyBk
b24ndCBkb21pbmF0ZSB1cy4KICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9y
cy0+c3RyaWN0bHlEb21pbmF0ZXMoYmxvY2ssIG1fYmxvY2spKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgSXQgc3RyaWN0bHkg
ZG9taW5hdGVzLlxuIik7CiAgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25v
ZGUsIGRhdGEuZGlkVmlzaXQpOwogICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwg
bV9ub2RlLCAhbWF0Y2gpOwogICAgICAgICAgICAgICAgIG1hdGNoID0gZGF0YS5hdmFpbGFibGVB
dFRhaWwuZ2V0KGxvY2F0aW9uKTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiICAgICAgICBBdmFpbGFiaWxpdHk6ICIsIG1hdGNoLCAiXG4iKTsK
ICAgICAgICAgICAgICAgICBpZiAoISFtYXRjaCkgewogICAgICAgICAgICAgICAgICAgICAvLyBE
b24ndCBleGFtaW5lIHRoZSBwcmVkZWNlc3NvcnMgb2YgYSBtYXRjaC4gQXQgdGhpcyBwb2ludCB3
ZSBqdXN0IHdhbnQgdG8KQEAgLTc5NSwxMCArNzk3LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBEZWFsaW5nIHdpdGggd3JpdGUgc2V0ICIsIGRh
dGEud3JpdGVzLCAiXG4iKTsKICAgICAgICAgICAgIGlmIChkYXRhLndyaXRlcy5vdmVybGFwcyhs
b2NhdGlvbi5oZWFwKCkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICAgICAgaWYgKERGR0NTRVBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIiAgICAgICAgQ2xvYmJlcmVkLlxuIik7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICB9CkBAIC04MzAsMTYgKzgzMiwxNiBAQCBwdWJs
aWM6CiAgICAgCiAgICAgdm9pZCBkZWYoSGVhcExvY2F0aW9uIGxvY2F0aW9uLCBMYXp5Tm9kZSB2
YWx1ZSkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHQ1NFUGhh
c2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBHb3QgaGVhcCBs
b2NhdGlvbiBkZWY6ICIsIGxvY2F0aW9uLCAiIC0+ICIsIHZhbHVlLCAiXG4iKTsKICAgICAgICAg
CiAgICAgICAgIExhenlOb2RlIG1hdGNoID0gZmluZFJlcGxhY2VtZW50KGxvY2F0aW9uKTsKICAg
ICAgICAgCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIEdvdCBtYXRjaDogIiwg
bWF0Y2gsICJcbiIpOwogICAgICAgICAKICAgICAgICAgaWYgKCFtYXRjaCkgewotICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHQ1NFUGhhc2VJbnRlcm5hbDo6dmVy
Ym9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBBZGRpbmcgYXQtdGFpbCBtYXBw
aW5nOiAiLCBsb2NhdGlvbiwgIiAtPiAiLCB2YWx1ZSwgIlxuIik7CiAgICAgICAgICAgICBhdXRv
IHJlc3VsdCA9IG1faW1wdXJlRGF0YS0+YXZhaWxhYmxlQXRUYWlsLmFkZChsb2NhdGlvbiwgdmFs
dWUpOwogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsICFyZXN1bHQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNw
cAppbmRleCBiMGM1NWJlOTlhMjA1MzE4ODFlMTQ2MmJlODcxZGU4YTBkYjcxZjIwLi5iNDljYjRj
ZDk2MjM0YTkyNzFjY2FiODJjNGU2NzhiYTkzZDc4MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcApAQCAtMzcsNyAr
MzcsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKK25hbWVzcGFjZSBE
RkdJblBsYWNlQWJzdHJhY3RTdGF0ZUludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJv
c2UgPSBmYWxzZTsKK30KIAogSW5QbGFjZUFic3RyYWN0U3RhdGU6OkluUGxhY2VBYnN0cmFjdFN0
YXRlKEdyYXBoJiBncmFwaCkKICAgICA6IG1fZ3JhcGgoZ3JhcGgpCkBAIC0yNzYsNyArMjc4LDcg
QEAgdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VTdGF0ZUF0VGFpbChBYnN0cmFjdFZh
bHVlJiBkZXN0aW5hdGlvbiwgQWJzdHJhY3QKIAogYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6
bWVyZ2UoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pCiB7Ci0gICAgaWYgKHZlcmJv
c2UpCisgICAgaWYgKERGR0luUGxhY2VBYnN0cmFjdFN0YXRlSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgIGRhdGFMb2coIiAgIE1lcmdpbmcgZnJvbSAiLCBwb2ludGVyRHVtcChmcm9tKSwgIiB0
byAiLCBwb2ludGVyRHVtcCh0byksICJcbiIpOwogICAgIEFTU0VSVChmcm9tLT52YXJpYWJsZXNB
dFRhaWwubnVtYmVyT2ZBcmd1bWVudHMoKSA9PSB0by0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9m
QXJndW1lbnRzKCkpOwogICAgIEFTU0VSVChmcm9tLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZM
b2NhbHMoKSA9PSB0by0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCkpOwpAQCAtMzA3
LDcgKzMwOSw3IEBAIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlKEJhc2ljQmxvY2sq
IGZyb20sIEJhc2ljQmxvY2sqIHRvKQogCiAgICAgICAgIGZvciAoTm9kZUFic3RyYWN0VmFsdWVQ
YWlyJiBlbnRyeSA6IHRvLT5zc2EtPnZhbHVlc0F0SGVhZCkgewogICAgICAgICAgICAgTm9kZUZs
b3dQcm9qZWN0aW9uIG5vZGUgPSBlbnRyeS5ub2RlOwotICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgICAgICBpZiAoREZHSW5QbGFjZUFic3RyYWN0U3RhdGVJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBNZXJnaW5nIGZvciAiLCBub2RlLCAi
OiBmcm9tICIsIGZvck5vZGUobm9kZSksICIgdG8gIiwgZW50cnkudmFsdWUsICJcbiIpOwogI2lm
bmRlZiBOREVCVUcKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlQ291bnRJbkZyb21CbG9jayA9
IDA7CkBAIC0zMjIsNyArMzI0LDcgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2Uo
QmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pCiAKICAgICAgICAgICAgIGNoYW5nZWQg
fD0gZW50cnkudmFsdWUubWVyZ2UoZm9yTm9kZShub2RlKSk7CiAKLSAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR0luUGxhY2VBYnN0cmFjdFN0YXRlSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICAgUmVzdWx0OiAiLCBl
bnRyeS52YWx1ZSwgIlxuIik7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC0zMzYsNyAr
MzM4LDcgQEAgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbG9jayogZnJv
bSwgQmFzaWNCbG9jayogdG8pCiAgICAgaWYgKCF0by0+Y2ZhSGFzVmlzaXRlZCkKICAgICAgICAg
Y2hhbmdlZCA9IHRydWU7CiAgICAgCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKERGR0luUGxh
Y2VBYnN0cmFjdFN0YXRlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgICAg
IFdpbGwgcmV2aXNpdDogIiwgY2hhbmdlZCwgIlxuIik7CiAgICAgdG8tPmNmYVNob3VsZFJldmlz
aXQgfD0gY2hhbmdlZDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAKaW5kZXggNWQxY2JjNzZj
NGVlMjUyYTMzNzI5ZmJlMTg1ZDk5MmIyYWZlZWNkYi4uOThlMGY2ZmRmMjg4MTQ3YTgxZTljYjdm
OWYxYjg5OTY1NmZkOTFlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAKQEAgLTQxLDcgKzQxLDkg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3BhY2UgewogCituYW1l
c3BhY2UgREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2VJbnRlcm5hbCB7CiBzdGF0aWMgY29u
c3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGVudW0gUmFuZ2VLaW5kIHsKICAgICBJbnZh
bGlkUmFuZ2VLaW5kLApAQCAtMjAzLDEzICsyMDUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgCiAg
ICAgICAgIGZvciAoYXV0byogbm9kZSA6ICpibG9jaykgewogICAgICAgICAgICAgUmFuZ2VLZXlB
bmRBZGRlbmQgZGF0YSA9IHJhbmdlS2V5QW5kQWRkZW5kKG5vZGUpOwotICAgICAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2VJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJGb3IgIiwgbm9kZSwg
IjogIiwgZGF0YSwgIlxuIik7CiAgICAgICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJhbmdlJiByYW5nZSA9IG1f
bWFwW2RhdGEubV9rZXldOwotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBp
ZiAoREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgUmFuZ2U6ICIsIHJhbmdlLCAiXG4iKTsKICAgICAgICAg
ICAgIGlmIChyYW5nZS5tX2NvdW50KSB7CiAgICAgICAgICAgICAgICAgaWYgKGRhdGEubV9hZGRl
bmQgPiByYW5nZS5tX21heEJvdW5kKSB7CkBAIC0yMjYsNyArMjI4LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICByYW5nZS5tX21heE9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJhbmdlLm1fY291bnQrKzsKLSAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKERGR0ludGVnZXJDaGVja0NvbWJpbmluZ1Bo
YXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIE5ldyBy
YW5nZTogIiwgcmFuZ2UsICJcbiIpOwogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXph
dGlvblBoYXNlLmNwcAppbmRleCAwN2I2YWMzNDgyZmQwZTdmMzJlZjg0ZWY4MmIzMTE1MTI3N2Jk
MjEyLi40YTM4MzFlYjE2MGRjNDk3NjRlODczOTBlODhhZjVhYTk1ZTg2ZTg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9w
dGltaXphdGlvblBoYXNlLmNwcApAQCAtNDIsNyArNDIsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNl
OworbmFtZXNwYWNlIERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWwgewor
c3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogY29uc3QgdW5zaWduZWQgZ2l2
ZVVwVGhyZXNob2xkID0gNTA7CiAKIGludDY0X3QgY2xhbXBlZFN1bUltcGwoKSB7IHJldHVybiAw
OyB9CkBAIC0xMDE5LDcgKzEwMjEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2luc2VydGlv
blNldC5leGVjdXRlKG1fZ3JhcGguYmxvY2soMCkpOwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0
aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGgg
YmVmb3JlIGludGVnZXIgcmFuZ2Ugb3B0aW1pemF0aW9uOlxuIik7CiAgICAgICAgICAgICBtX2dy
YXBoLmR1bXAoKTsKICAgICAgICAgfQpAQCAtMTExMCw3ICsxMTEyLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgIG1fcmVsYXRpb25zaGlwcyA9IG1fcmVsYXRpb25zaGlwc0F0SGVhZFtibG9j
a107CiAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIG5vZGUgOiAqYmxv
Y2spIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAg
ICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZUludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQW5hbHlzaXM6IGF0ICIsIG5vZGUs
ICI6ICIsIGxpc3REdW1wKHNvcnRlZFJlbGF0aW9uc2hpcHMoKSksICJcbiIpOwogICAgICAgICAg
ICAgICAgICAgICBleGVjdXRlTm9kZShub2RlKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xMTk1
LDExICsxMTk3LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aW9u
c2hpcE1hcCBmb3JUcnVlID0gbV9yZWxhdGlvbnNoaXBzOwogICAgICAgICAgICAgICAgICAgICAg
ICAgUmVsYXRpb25zaGlwTWFwIGZvckZhbHNlID0gbV9yZWxhdGlvbnNoaXBzOwogICAgICAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFz
ZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
IkRlYWxpbmcgd2l0aCB0cnVlOlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZWxh
dGlvbnNoaXAoZm9yVHJ1ZSwgcmVsYXRpb25zaGlwRm9yVHJ1ZSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoUmVsYXRpb25zaGlwIHJlbGF0aW9uc2hpcEZvckZhbHNlID0gcmVsYXRpb25z
aGlwRm9yVHJ1ZS5pbnZlcnNlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdl
T3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiRGVhbGluZyB3aXRoIGZhbHNlOlxuIik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0UmVsYXRpb25zaGlwKGZvckZhbHNlLCByZWxhdGlvbnNoaXBG
b3JGYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0xMjIzLDcgKzEyMjUsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBtX3JlbGF0aW9uc2hpcHMgPSBtX3JlbGF0aW9uc2hpcHNB
dEhlYWRbYmxvY2tdOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXggPSAwOyBu
b2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyArK25vZGVJbmRleCkgewogICAgICAgICAgICAgICAg
IE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9u
UGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiVHJh
bnNmb3JtYXRpb246IGF0ICIsIG5vZGUsICI6ICIsIGxpc3REdW1wKHNvcnRlZFJlbGF0aW9uc2hp
cHMoKSksICJcbiIpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIC8vIFRoaXMg
ZW5kcyB1cCBiZWluZyBwcmV0dHkgYXdrd2FyZCB0byB3cml0ZSBiZWNhdXNlIHdlIG5lZWQgdG8g
ZGVjaWRlIGlmIHdlCkBAIC0xMjg3LDE0ICsxMjg5LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICAgICAgICAgIG1heFZhbHVlID0gc3RkOjptaW4obWF4VmFsdWUsIHJlbGF0aW9uc2hpcC5t
YXhWYWx1ZU9mTGVmdCgpKTsKICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJh
bmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIiAgICBtaW5WYWx1ZSA9ICIsIG1pblZhbHVlLCAiLCBtYXhWYWx1ZSA9
ICIsIG1heFZhbHVlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgIGlmIChzdW1PdmVyZmxvd3M8aW50PihtaW5WYWx1ZSwgbm9kZS0+Y2hpbGQyKCktPmFz
SW50MzIoKSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgIHN1bU92ZXJmbG93czxpbnQ+KG1h
eFZhbHVlLCBub2RlLT5jaGlsZDIoKS0+YXNJbnQzMigpKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAg
ICAgICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2VJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBJdCdzIGluIGJv
dW5kcy5cbiIpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgZXhl
Y3V0ZU5vZGUoYmxvY2stPmF0KG5vZGVJbmRleCkpOwpAQCAtMTU0OCw3ICsxNTUwLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgaWYgKCFyZWxhdGlvbnNoaXApCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR0ludGVnZXJSYW5n
ZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgU2V0dGluZzogIiwgcmVsYXRpb25zaGlwLCAiICh0dGwgPSAiLCB0aW1lVG9MaXZlLCAi
KVxuIik7CiAKICAgICAgICAgYXV0byByZXN1bHQgPSByZWxhdGlvbnNoaXBNYXAuYWRkKApAQCAt
MTYwMiw3ICsxNjA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgaWYgKG90aGVy
UmVsYXRpb25zaGlwLnZhZ3VlbmVzcygpIDwgcmVsYXRpb25zaGlwLnZhZ3VlbmVzcygpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAmJiBvdGhlclJlbGF0aW9uc2hpcC5yaWdodCgpLT5pc0ludDMy
Q29uc3RhbnQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpb25zaGlwIG5ld1Jl
bGF0aW9uc2hpcCA9IHJlbGF0aW9uc2hpcC5maWx0ZXJDb25zdGFudChvdGhlclJlbGF0aW9uc2hp
cCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSAmJiBuZXdSZWxhdGlvbnNo
aXAgIT0gcmVsYXRpb25zaGlwKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR0ludGVn
ZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UgJiYgbmV3UmVsYXRpb25z
aGlwICE9IHJlbGF0aW9uc2hpcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgICBSZWZpbmVkIHRvOiAiLCBuZXdSZWxhdGlvbnNoaXAsICIgYmFzZWQgb24gIiwgb3Ro
ZXJSZWxhdGlvbnNoaXAsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25z
aGlwID0gbmV3UmVsYXRpb25zaGlwOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNjE2LDcg
KzE2MTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXJSZWxhdGlv
bnNoaXAudmFndWVuZXNzKCkgPiByZWxhdGlvbnNoaXAudmFndWVuZXNzKCkKICAgICAgICAgICAg
ICAgICAgICAgICAgICYmIG90aGVyUmVsYXRpb25zaGlwLnJpZ2h0KCktPmlzSW50MzJDb25zdGFu
dCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGlvbnNoaXAgbmV3UmVsYXRpb25z
aGlwID0gb3RoZXJSZWxhdGlvbnNoaXAuZmlsdGVyQ29uc3RhbnQocmVsYXRpb25zaGlwKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlICYmIG5ld1JlbGF0aW9uc2hpcCAhPSBv
dGhlclJlbGF0aW9uc2hpcCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdJbnRlZ2Vy
UmFuZ2VPcHRpbWl6YXRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlICYmIG5ld1JlbGF0aW9uc2hp
cCAhPSBvdGhlclJlbGF0aW9uc2hpcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgICBSZWZpbmVkICIsIG90aGVyUmVsYXRpb25zaGlwLCAiIHRvOiAiLCBuZXdSZWxh
dGlvbnNoaXAsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJSZWxhdGlvbnNo
aXAgPSBuZXdSZWxhdGlvbnNoaXA7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTE2MzksNyAr
MTY0MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBAeCA9PSBAYyBhbmQgQHggIT0gQGQs
IHdoZXJlIEBkID4gQGMsIHRoZW4gd2Ugd2FudCB0byB0dXJuIEB4ICE9IEBkIGludG8gQHggPCBA
ZC4KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKHRpbWVUb0xpdmUgJiYgb3RoZXJSZWxh
dGlvbnNoaXAua2luZCgpID09IFJlbGF0aW9uc2hpcDo6RXF1YWwpIHsKLSAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZHSW50ZWdlclJhbmdlT3B0aW1p
emF0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiICAgICAgQ29uc2lkZXJpbmc6ICIsIG90aGVyUmVsYXRpb25zaGlwLCAiXG4iKTsKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlOgpAQCAtMTY3NSw3ICsxNjc3
LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBib29sIG1lcmdlVG8oUmVsYXRpb25zaGlwTWFwJiBy
ZWxhdGlvbnNoaXBNYXAsIEJhc2ljQmxvY2sqIHRhcmdldCkKICAgICB7Ci0gICAgICAgIGlmICh2
ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZUlu
dGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJNZXJnaW5nIHRvICIsIHBv
aW50ZXJEdW1wKHRhcmdldCksICI6XG4iKTsKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBJbmNv
bWluZzogIiwgbGlzdER1bXAoc29ydGVkUmVsYXRpb25zaGlwcyhyZWxhdGlvbnNoaXBNYXApKSwg
IlxuIik7CiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQXQgaGVhZDogIiwgbGlzdER1bXAoc29y
dGVkUmVsYXRpb25zaGlwcyhtX3JlbGF0aW9uc2hpcHNBdEhlYWRbdGFyZ2V0XSkpLCAiXG4iKTsK
QEAgLTE2OTcsNyArMTY5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZm9yIChSZWxh
dGlvbnNoaXAgcmVsYXRpb25zaGlwIDogZW50cnkudmFsdWUpIHsKICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKHJlbGF0aW9uc2hpcC5sZWZ0KCkgPT0gZW50cnkua2V5KTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGlzTGl2ZShyZWxhdGlvbnNoaXAucmlnaHQoKSkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERG
R0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICBQcm9wYWdhdGluZyAiLCByZWxhdGlvbnNo
aXAsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChyZWxhdGlv
bnNoaXApOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNzM0LDEyICsxNzM2LDEyIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBWZWN0b3I8UmVsYXRpb25zaGlwPiBtZXJnZWRSZWxhdGlvbnNo
aXBzOwogICAgICAgICAgICAgZm9yIChSZWxhdGlvbnNoaXAgdGFyZ2V0UmVsYXRpb25zaGlwIDog
ZW50cnkudmFsdWUpIHsKICAgICAgICAgICAgICAgICBmb3IgKFJlbGF0aW9uc2hpcCBzb3VyY2VS
ZWxhdGlvbnNoaXAgOiBpdGVyLT52YWx1ZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlv
blBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KCIgIE1lcmdpbmcgIiwgdGFyZ2V0UmVsYXRpb25zaGlwLCAiIGFuZCAiLCBzb3VyY2VSZWxhdGlv
bnNoaXAsICI6XG4iKTsKICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UmVsYXRpb25zaGlwLm1l
cmdlKAogICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlUmVsYXRpb25zaGlwLAogICAgICAg
ICAgICAgICAgICAgICAgICAgWyZdIChSZWxhdGlvbnNoaXAgbmV3UmVsYXRpb25zaGlwKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlSW50ZXJuYWw6
OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBH
b3QgIiwgbmV3UmVsYXRpb25zaGlwLCAiXG4iKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChuZXdSZWxhdGlvbnNoaXAucmlnaHQoKS0+aXNJbnQzMkNvbnN0YW50KCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTW92SGludFJlbW92YWxQaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01vdkhpbnRSZW1vdmFsUGhhc2Uu
Y3BwCmluZGV4IDlmMzQ0YjM3ZGNkODdmYzE0YzBhMTJkZTRmMTA3MDhiNmQ3NDhmODYuLjFhZWQy
YzE4NTZlMmJmNjJjZWY3YTNjNDZkYTI0MjE5MzJmNWY3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTW92SGludFJlbW92YWxQaGFzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNb3ZIaW50UmVtb3ZhbFBoYXNlLmNwcApAQCAtNDIsNyAr
NDIsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAK
LWJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIERGR01vdkhpbnRSZW1vdmFsUGhhc2VJ
bnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNz
IE1vdkhpbnRSZW1vdmFsUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogcHVibGljOgpAQCAtNTUsNyAr
NTcsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBydW4oKQogICAgIHsKLSAgICAgICAgaWYg
KHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR01vdkhpbnRSZW1vdmFsUGhhc2VJbnRlcm5hbDo6
dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIE1vdkhpbnQgcmVt
b3ZhbDpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KQEAgLTY5
LDcgKzcxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZUJsb2NrKEJhc2lj
QmxvY2sqIGJsb2NrKQogICAgIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChE
RkdNb3ZIaW50UmVtb3ZhbFBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRh
TG9nKCJIYW5kaW5nIGJsb2NrICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIlxuIik7CiAgICAgICAg
IAogICAgICAgICAvLyBBIE1vdkhpbnQgaXMgdW5uZWNlc3NhcnkgaWYgdGhlIGxvY2FsIGRpZXMg
YmVmb3JlIGl0IGlzIHVzZWQuIFdlIGFuc3dlciB0aGlzIHF1ZXN0aW9uIGJ5CkBAIC04Nyw3ICs4
OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9zdGF0ZS5vcGVyYW5kKHJlZykgPSBj
dXJyZW50RXBvY2g7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgCi0gICAgICAgIGlmICh2ZXJi
b3NlKQorICAgICAgICBpZiAoREZHTW92SGludFJlbW92YWxQaGFzZUludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICAgICAgZGF0YUxvZygiICAgIExvY2FsczogIiwgbV9zdGF0ZSwgIlxuIik7CiAg
ICAgICAgIAogICAgICAgICAvLyBBc3N1bWUgdGhhdCBibG9ja3MgYWZ0ZXIgdXMgZXhpdC4KQEAg
LTk4LDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChu
b2RlLT5vcCgpID09IE1vdkhpbnQpIHsKICAgICAgICAgICAgICAgICBFcG9jaCBsb2NhbEVwb2No
ID0gbV9zdGF0ZS5vcGVyYW5kKG5vZGUtPnVubGlua2VkTG9jYWwoKSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgaWYgKERGR01vdkhpbnRSZW1vdmFsUGhh
c2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEF0
ICIsIG5vZGUsICI6IGN1cnJlbnQgPSAiLCBjdXJyZW50RXBvY2gsICIsIGxvY2FsID0gIiwgbG9j
YWxFcG9jaCwgIlxuIik7CiAgICAgICAgICAgICAgICAgaWYgKCFsb2NhbEVwb2NoIHx8IGxvY2Fs
RXBvY2ggPT0gY3VycmVudEVwb2NoKSB7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldE9w
QW5kRGVmYXVsdEZsYWdzKFpvbWJpZUhpbnQpOwpAQCAtMTIwLDcgKzEyMiw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFtX3N0YXRlLm9wZXJhbmQocmVnKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKERGR01vdkhpbnRSZW1vdmFsUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgS2lsbGVkIG9wZXJhbmQgYXQg
Iiwgbm9kZSwgIjogIiwgcmVnLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3Rh
dGUub3BlcmFuZChyZWcpID0gY3VycmVudEVwb2NoOwogICAgICAgICAgICAgICAgICAgICB9KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlv
blNpbmtpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFs
bG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCmluZGV4IDdhOWM1MTU2N2IzNDdmZGQzYzhjM2NkOTFi
ZjA0Yjg5ZGY4MjI1MjguLjNmZGE3ZDQwYjA4NmJkMTljM2MyOGIwYTYwZGFkMTU3NWVmNjBjMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlv
blNpbmtpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmpl
Y3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcApAQCAtNDgsNyArNDgsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZh
bHNlOworbmFtZXNwYWNlIERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2VJbnRlcm5hbCB7
CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIC8vIEluIG9yZGVyIHRv
IHNpbmsgb2JqZWN0IGN5Y2xlcywgd2UgdXNlIGEgcG9pbnRzLXRvIGFuYWx5c2lzIGNvdXBsZWQK
IC8vIHdpdGggYW4gZXNjYXBlIGFuYWx5c2lzLiBUaGlzIGFuYWx5c2lzIGlzIGFjdHVhbGx5IHNp
bWlsYXIgdG8gYW4KQEAgLTcxNyw3ICs3MTksNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghcGVy
Zm9ybVNpbmtpbmcoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAo
dmVyYm9zZSkgeworICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUlu
dGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJHcmFwaCBhZnRlciBlbGlt
aW5hdGlvbjpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KQEAg
LTc0Miw3ICs3NDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgZ3JhcGhCZWZvcmVTaW5raW5n
ID0gb3V0LnRvQ1N0cmluZygpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsK
KyAgICAgICAgaWYgKERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVy
Ym9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIGVsaW1pbmF0aW9uOlxu
Iik7CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQpAQCAtNzUyLDcgKzc1
NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghZGV0ZXJtaW5lU2lua0NhbmRpZGF0ZXMoKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAodmVyYm9zZSkgeworICAg
ICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3Nl
KSB7CiAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJ
bk5hdHVyYWxPcmRlcigpKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygiSGVhcCBhdCBoZWFk
IG9mICIsICpibG9jaywgIjogXG4iLCBtX2hlYXBBdEhlYWRbYmxvY2tdKTsKICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJIZWFwIGF0IHRhaWwgb2YgIiwgKmJsb2NrLCAiOiBcbiIsIG1faGVhcEF0
VGFpbFtibG9ja10pOwpAQCAtNzczLDcgKzc3NSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgYm9v
bCBjaGFuZ2VkOwogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiRG9pbmcgaXRlcmF0aW9uIG9mIGVzY2FwZSBh
bmFseXNpcy5cbiIpOwogICAgICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwogCkBAIC0xMTk4LDcg
KzEyMDAsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRlcy5pc0VtcHR5
KCkpCiAgICAgICAgICAgICByZXR1cm4gaGFzVW5lc2NhcGVkUmVhZHM7CiAKLSAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJDYW5kaWRhdGVzOiAiLCBsaXN0
RHVtcChtX3NpbmtDYW5kaWRhdGVzKSwgIlxuIik7CiAKICAgICAgICAgLy8gQ3JlYXRlIHRoZSBt
YXRlcmlhbGl6YXRpb24gbm9kZXMKQEAgLTE3NjUsNyArMTc2Nyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAodmVyYm9zZSkg
eworICAgICAgICAgICAgaWYgKERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2VJbnRlcm5h
bDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvY2FsIG1hcHBpbmcgYXQg
IiwgcG9pbnRlckR1bXAoYmxvY2spLCAiOiAiLCBtYXBEdW1wKG1fbG9jYWxNYXBwaW5nKSwgIlxu
Iik7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygiTG9jYWwgbWF0ZXJpYWxpemF0aW9ucyBhdCAi
LCBwb2ludGVyRHVtcChibG9jayksICI6ICIsIG1hcER1bXAobV9lc2NhcGVlVG9NYXRlcmlhbGl6
YXRpb24pLCAiXG4iKTsKICAgICAgICAgICAgIH0KQEAgLTE3ODEsNyArMTc4Myw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgIG1fbG9jYWxNYXBwaW5nLnNldChsb2NhdGlvbiwgbV9i
b3R0b20pOwogCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3NpbmtDYW5kaWRhdGVzLmNvbnRh
aW5zKG5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiRm9y
IHNpbmsgY2FuZGlkYXRlICIsIG5vZGUsICIgZm91bmQgbG9jYXRpb24gIiwgbG9jYXRpb24sICJc
biIpOwogICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsCkBAIC0xNzk2LDcgKzE3OTgs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBwb3B1bGF0ZU1hdGVyaWFsaXphdGlv
bihibG9jaywgbWF0ZXJpYWxpemF0aW9uLCBlc2NhcGVlKTsKICAgICAgICAgICAgICAgICAgICAg
bV9lc2NhcGVlVG9NYXRlcmlhbGl6YXRpb24uc2V0KGVzY2FwZWUsIG1hdGVyaWFsaXphdGlvbik7
CiAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydChub2RlSW5kZXgsIG1h
dGVyaWFsaXphdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiTWF0ZXJpYWxpemlu
ZyAiLCBlc2NhcGVlLCAiID0+ICIsIG1hdGVyaWFsaXphdGlvbiwgIiBhdCAiLCBub2RlLCAiXG4i
KTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTE4NTEsNyArMTg1Myw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgICAgICAgICAgICAgICAgIGRvTG93ZXIgPSB0cnVlOwogCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERkdP
YmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ3JlYXRpbmcgaGludCB3aXRoIHZhbHVlICIsIG5v
ZGVWYWx1ZSwgIiBiZWZvcmUgIiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2luc2VydGlvblNldC5pbnNlcnQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9k
ZUluZGV4ICsgMSwKQEAgLTE5OTQsNyArMTk5Niw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGlu
c2VydE9TUkhpbnRzRm9yVXBkYXRlKHVuc2lnbmVkIG5vZGVJbmRleCwgTm9kZU9yaWdpbiBvcmln
aW4sIGJvb2wmIGNhbkV4aXQsIEF2YWlsYWJpbGl0eU1hcCYgYXZhaWxhYmlsaXR5LCBOb2RlKiBl
c2NhcGVlLCBOb2RlKiBtYXRlcmlhbGl6YXRpb24pCiAgICAgewotICAgICAgICBpZiAodmVyYm9z
ZSkgeworICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFs
Ojp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJJbnNlcnRpbmcgT1NSIGhpbnRzIGF0
ICIsIG9yaWdpbiwgIjpcbiIpOwogICAgICAgICAgICAgZGF0YUxvZygiICAgIEVzY2FwZWU6ICIs
IGVzY2FwZWUsICJcbiIpOwogICAgICAgICAgICAgZGF0YUxvZygiICAgIE1hdGVyaWFsaXphdGlv
bjogIiwgbWF0ZXJpYWxpemF0aW9uLCAiXG4iKTsKQEAgLTIxNjcsNyArMjE2OSw3IEBAIHByaXZh
dGU6CiAKICAgICBOb2RlKiBjcmVhdGVSZWNvdmVyeShCYXNpY0Jsb2NrKiBibG9jaywgUHJvbW90
ZWRIZWFwTG9jYXRpb24gbG9jYXRpb24sIE5vZGUqIHdoZXJlLCBib29sJiBjYW5FeGl0KQogICAg
IHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdPYmplY3RBbGxvY2F0aW9u
U2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJSZWNv
dmVyaW5nICIsIGxvY2F0aW9uLCAiIGF0ICIsIHdoZXJlLCAiXG4iKTsKICAgICAgICAgQVNTRVJU
KGxvY2F0aW9uLmJhc2UoKS0+aXNQaGFudG9tQWxsb2NhdGlvbigpKTsKICAgICAgICAgTm9kZSog
YmFzZSA9IGdldE1hdGVyaWFsaXphdGlvbihibG9jaywgbG9jYXRpb24uYmFzZSgpKTsKQEAgLTIx
NzUsNyArMjE3Nyw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSB3
aGVyZS0+b3JpZ2luLndpdGhTZW1hbnRpYyhiYXNlLT5vcmlnaW4uc2VtYW50aWMpOwogCi0gICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQ
aGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiQmFzZSBpcyAiLCBi
YXNlLCAiIGFuZCB2YWx1ZSBpcyAiLCB2YWx1ZSwgIlxuIik7CiAKICAgICAgICAgaWYgKGJhc2Ut
PmlzUGhhbnRvbUFsbG9jYXRpb24oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwCmluZGV4IGRjYzFjOTc2OTg2ZmVk
NmUzZTlkY2VkY2FmNWU5NDA1YjlkM2I4ZGEuLjNjMDg4YTZhNGE1ZWU2NTA5MDYyMmQ2NjAzMmQ0
ZjE3MTAyOTM3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhh
bnRvbUluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1BoYW50b21JbnNlcnRpb25QaGFzZS5jcHAKQEAgLTQzLDcgKzQzLDkgQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxz
ZTsKK25hbWVzcGFjZSBERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2VJbnRlcm5hbCB7CitzdGF0aWMg
Y29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIFBoYW50b21JbnNlcnRpb25Q
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJsaWM6CkBAIC02MCw3ICs2Miw3IEBAIHB1YmxpYzoK
ICAgICAgICAgLy8gU2V0TG9jYWxzIGV4ZWN1dGUsIHdoaWNoIGlzIGluYWNjdXJhdGUuIFRoYXQg
Y2F1c2VzIHVzIHRvIGluc2VydCB0b28gZmV3IFBoYW50b21zLgogICAgICAgICBERkdfQVNTRVJU
KG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9yZWZDb3VudFN0YXRlID09IEV4YWN0UmVmQ291
bnQpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKERGR1Bo
YW50b21JbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRh
TG9nKCJHcmFwaCBiZWZvcmUgUGhhbnRvbSBpbnNlcnRpb246XG4iKTsKICAgICAgICAgICAgIG1f
Z3JhcGguZHVtcCgpOwogICAgICAgICB9CkBAIC03MCw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICAg
ICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIo
KSkKICAgICAgICAgICAgIGhhbmRsZUJsb2NrKGJsb2NrKTsKICAgICAgICAgCi0gICAgICAgIGlm
ICh2ZXJib3NlKSB7CisgICAgICAgIGlmIChERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2VJbnRlcm5h
bDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYWZ0ZXIgUGhhbnRvbSBp
bnNlcnRpb246XG4iKTsKICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwogICAgICAgICB9CkBA
IC0xMDEsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgbGFzdEV4aXRpbmdJ
bmRleCA9IDA7CiAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4
IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAgICAgICAgICAgIE5vZGUqIG5vZGUg
PSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgaWYgKERGR1BoYW50b21JbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICAgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nICIsIG5vZGUsICJcbiIpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKQEAgLTEzOSw3ICsxNDEs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFscmVhZHlLaWxsZWQ7
CiAKICAgICAgICAgICAgIGF1dG8gcHJvY2Vzc0tpbGxlZE9wZXJhbmQgPSBbJl0gKFZpcnR1YWxS
ZWdpc3RlciByZWcpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAg
ICAgICBpZiAoREZHUGhhbnRvbUluc2VydGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBLaWxsZWQgb3BlcmFuZDogIiwgcmVnLCAiXG4i
KTsKIAogICAgICAgICAgICAgICAgIC8vIEFscmVhZHkgaGFuZGxlZCBmcm9tIFNldExvY2FsLgpA
QCAtMTU1LDcgKzE1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKGtpbGxlZE5v
ZGUtPmVwb2NoKCkgPT0gY3VycmVudEVwb2NoKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoREZHUGhhbnRvbUluc2VydGlvblBoYXNlSW50ZXJuYWw6OnZlcmJvc2Up
IHsKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgICAg
ICIgICAgSW5zZXJ0aW5nIFBoYW50b20gb24gIiwga2lsbGVkTm9kZSwgIiBhZnRlciAiLAogICAg
ICAgICAgICAgICAgICAgICAgICAgYmxvY2stPmF0KGxhc3RFeGl0aW5nSW5kZXgpLCAiXG4iKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5n
UGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQ
aGFzZS5jcHAKaW5kZXggZDNkYTU1MjdkNjNiYzA3Njk4MGVkNDA0ZDU3MzA2NWQ0YTg1MTZiYS4u
MTRjZWQyYWE4ZDgyYzZlYmNiMzVlOTRjYTZmYTJlMmEzZTMzODRmYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKQEAg
LTQyLDcgKzQyLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3Bh
Y2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBERkdQdXRTdGFja1Npbmtp
bmdQaGFzZUludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30K
IAogY2xhc3MgUHV0U3RhY2tTaW5raW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogcHVibGljOgpA
QCAtNzEsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIHRoZSBzdGFjay4gSXQncyBub3Qg
Y2xlYXIgdG8gbWUgaWYgdGhpcyBpcyBpbXBvcnRhbnQgb3Igbm90LgogICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1Mjk2CiAgICAgICAgIAotICAg
ICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJ
bnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIFB1
dFN0YWNrIHNpbmtpbmc6XG4iKTsKICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwogICAgICAg
ICB9CkBAIC0xMDUsNyArMTA3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIE9wZXJhbmRz
PGJvb2w+IGxpdmUgPSBsaXZlQXRUYWlsW2Jsb2NrXTsKICAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIG5vZGVJbmRleCA9IGJsb2NrLT5zaXplKCk7IG5vZGVJbmRleC0tOykgewogICAgICAg
ICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHUHV0
U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkxpdmUgYXQgIiwgbm9kZSwgIjogIiwgbGl2ZSwgIlxuIik7CiAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBWZWN0b3I8VmlydHVhbFJlZ2lzdGVy
LCA0PiByZWFkczsKQEAgLTExMyw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgIGF1dG8gZXNjYXBlSGFuZGxlciA9IFsmXSAoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzSGVhZGVyKCkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5n
UGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgIiwgb3BlcmFuZCwgIiBpcyBsaXZlIGF0ICIsIG5vZGUsICJcbiIpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgcmVhZHMuYXBwZW5kKG9wZXJhbmQpOwogICAgICAgICAgICAgICAg
ICAgICB9OwpAQCAtMjMwLDcgKzIzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBPcGVy
YW5kczxGbHVzaEZvcm1hdD4gZGVmZXJyZWQgPSBkZWZlcnJlZEF0SGVhZFtibG9ja107CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZm9yIChOb2RlKiBub2RlIDogKmJsb2NrKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBp
ZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2coIkRlZmVycmVkIGF0ICIsIG5vZGUsICI6IiwgZGVmZXJyZWQs
ICJcbiIpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPm9wKCkgPT0gR2V0U3RhY2spIHsKQEAgLTI3Nyw3ICsyNzksNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAgIGF1dG8gZXNjYXBlSGFuZGxlciA9IFsmXSAoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2luZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiRm9yICIsIG5vZGUsICIgZXNjYXBpbmcg
Iiwgb3BlcmFuZCwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5p
c0hlYWRlcigpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMwMywx
MyArMzA1LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBm
b3IgKEJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IGRlZmVycmVkLnNpemUoKTsgaS0tOykgewot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyAiLCBWaXJ0dWFsUmVn
aXN0ZXIoZGVmZXJyZWQub3BlcmFuZEZvckluZGV4KGkpKSwgIiBhdCAiLCBwb2ludGVyRHVtcChi
bG9jayksICItPiIsIHBvaW50ZXJEdW1wKHN1Y2Nlc3NvciksICI6ICIsIGRlZmVycmVkW2ldLCAi
IGFuZCAiLCBkZWZlcnJlZEF0SGVhZFtzdWNjZXNzb3JdW2ldLCAiIG1lcmdlcyB0byAiKTsKIAog
ICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWRBdEhlYWRbc3VjY2Vzc29yXVtpXSA9CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2UoZGVmZXJyZWRBdEhlYWRbc3VjY2Vzc29y
XVtpXSwgZGVmZXJyZWRbaV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChE
RkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2coZGVmZXJyZWRBdEhlYWRbc3VjY2Vzc29yXVtpXSwgIlxuIik7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0zODcsNyArMzg5
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGlmICghaXNDb25jcmV0ZShmb3JtYXQpKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUlu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJBZGRpbmcgUGhp
IGZvciAiLCBvcGVyYW5kLCAiIGF0ICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIlxuIik7CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTm9kZSogcGhpTm9kZSA9IG1fZ3JhcGguYWRk
Tm9kZShTcGVjSGVhcFRvcCwgUGhpLCBibG9jay0+YXQoMCktPm9yaWdpbi53aXRoSW52YWxpZEV4
aXQoKSk7CkBAIC00MTEsNyArNDEzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIG1hcHBp
bmcub3BlcmFuZChvcGVyYW5kKSA9IGRlZi0+dmFsdWUoKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIAotICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBpZiAoREZHUHV0
U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRh
TG9nKCJNYXBwaW5nIGF0IHRvcCBvZiAiLCBwb2ludGVyRHVtcChibG9jayksICI6ICIsIG1hcHBp
bmcsICJcbiIpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKFNTQUNhbGN1bGF0b3I6
OkRlZiogcGhpRGVmIDogc3NhQ2FsY3VsYXRvci5waGlzRm9yQmxvY2soYmxvY2spKSB7CkBAIC00
MTksNyArNDIxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IGluc2VydGlvblNldC5pbnNlcnQoMCwgcGhpRGVmLT52YWx1ZSgpKTsKICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAoREZH
UHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiICAgTWFwcGluZyAiLCBvcGVyYW5kLCAiIHRvICIsIHBoaURlZi0+dmFsdWUo
KSwgIlxuIik7CiAgICAgICAgICAgICAgICAgbWFwcGluZy5vcGVyYW5kKG9wZXJhbmQpID0gcGhp
RGVmLT52YWx1ZSgpOwogICAgICAgICAgICAgfQpAQCAtNDI3LDcgKzQyOSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIGRlZmVycmVkID0gZGVmZXJyZWRBdEhlYWRbYmxvY2tdOwogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXggPSAwOyBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgp
OyArK25vZGVJbmRleCkgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQo
bm9kZUluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAg
ICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiRGVmZXJyZWQgYXQgIiwgbm9kZSwgIjoiLCBkZWZlcnJlZCwg
IlxuIik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5v
cCgpKSB7CkBAIC00MzUsNyArNDM3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBT
dGFja0FjY2Vzc0RhdGEqIGRhdGEgPSBub2RlLT5zdGFja0FjY2Vzc0RhdGEoKTsKICAgICAgICAg
ICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBkYXRhLT5sb2NhbDsKICAgICAg
ICAgICAgICAgICAgICAgZGVmZXJyZWQub3BlcmFuZChvcGVyYW5kKSA9IGRhdGEtPmZvcm1hdDsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlm
IChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiICAgTWFwcGluZyAiLCBvcGVyYW5kLCAiIHRvICIsIG5vZGUt
PmNoaWxkMSgpLm5vZGUoKSwgIiBhdCAiLCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgbWFwcGluZy5vcGVyYW5kKG9wZXJhbmQpID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTQ3MCw3ICs0NzIsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZGVmYXVsdDogewogICAgICAgICAgICAgICAg
ICAgICBhdXRvIGVzY2FwZUhhbmRsZXIgPSBbJl0gKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkZvciAiLCBub2RlLCAiIGVzY2FwaW5n
ICIsIG9wZXJhbmQsICJcbiIpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmFu
ZC5pc0hlYWRlcigpKQpAQCAtNDg0LDcgKzQ4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBHb3R0YSBpbnNlcnQgYSBQdXRTdGFjay4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERGR1B1dFN0YWNrU2lua2lu
Z1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZygiSW5zZXJ0aW5nIGEgUHV0U3RhY2sgZm9yICIsIG9wZXJhbmQsICIgYXQgIiwgbm9kZSwg
IlxuIik7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGluY29taW5nID0gbWFwcGlu
Zy5vcGVyYW5kKG9wZXJhbmQpOwpAQCAtNTIzLDcgKzUyNSw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgTm9kZSogcGhpTm9kZSA9IHBoaURlZi0+dmFsdWUoKTsKICAgICAgICAgICAg
ICAgICAgICAgU1NBQ2FsY3VsYXRvcjo6VmFyaWFibGUqIHZhcmlhYmxlID0gcGhpRGVmLT52YXJp
YWJsZSgpOwogICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IGlu
ZGV4VG9PcGVyYW5kW3ZhcmlhYmxlLT5pbmRleCgpXTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdQdXRTdGFja1NpbmtpbmdQaGFz
ZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ3Jl
YXRpbmcgVXBzaWxvbiBmb3IgIiwgb3BlcmFuZCwgIiBhdCAiLCBwb2ludGVyRHVtcChibG9jayks
ICItPiIsIHBvaW50ZXJEdW1wKHN1Y2Nlc3NvckJsb2NrKSwgIlxuIik7CiAgICAgICAgICAgICAg
ICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdCA9IGRlZmVycmVkQXRIZWFkW3N1Y2Nlc3NvckJsb2Nr
XS5vcGVyYW5kKG9wZXJhbmQpOwogICAgICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3Jh
cGgsIG51bGxwdHIsIGlzQ29uY3JldGUoZm9ybWF0KSk7CkBAIC01NjgsNyArNTcwLDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAodmVy
Ym9zZSkgeworICAgICAgICBpZiAoREZHUHV0U3RhY2tTaW5raW5nUGhhc2VJbnRlcm5hbDo6dmVy
Ym9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYWZ0ZXIgUHV0U3RhY2sgc2lua2lu
ZzpcbiIpOwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKaW5kZXggM2EyYTcxNzJhZDczZDZhM2UwMTA3MjkyZTViOTcwNTQ5NDdmOGYx
YS4uYjVlMmMzNTBiMTgxZjliMDYzOTMyMTVhNDJhYWFkNzZiNjVlZDg0NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKQEAgLTQzLDcgKzQzLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogCiBuYW1lc3BhY2UgewogCi1ib29sIHZlcmJvc2UgPSBmYWxzZTsKK25hbWVzcGFjZSBE
RkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsIHsKK3N0YXRpYyBjb25zdCBib29s
IHZlcmJvc2UgPSBmYWxzZTsKK30KIAogZW51bSBjbGFzcyBQaGFzZU1vZGUgewogICAgIC8vIERv
ZXMgb25seSBhIGxvY2FsIGFuYWx5c2lzIGZvciBzdG9yZSBiYXJyaWVyIGluc2VydGlvbiBhbmQg
YXNzdW1lcyB0aGF0IHBvaW50ZXJzIGxpdmUKQEAgLTc1LDcgKzc3LDcgQEAgcHVibGljOgogICAg
IAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAg
IGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAg
ICAgICAgICAgICBkYXRhTG9nKCJTdGFydGluZyBzdG9yZSBiYXJyaWVyIGluc2VydGlvbjpcbiIp
OwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KQEAgLTE2Nyw3ICsxNjks
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGJvb2wgaGFuZGxlQmxvY2soQmFzaWNCbG9jayog
YmxvY2spCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHU3Rv
cmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAg
ZGF0YUxvZygiRGVhbGluZyB3aXRoIGJsb2NrICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIlxuIik7
CiAgICAgICAgICAgICBpZiAocmVhbGx5SW5zZXJ0QmFycmllcnMoKSkKICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCIgICAgUmVhbGx5IGluc2VydGluZyBiYXJyaWVycy5cbiIpOwpAQCAtMjA2LDcg
KzIwOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGZvciAobV9ub2RlSW5kZXggPSAwOyBtX25vZGVJ
bmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbV9ub2RlSW5kZXgpIHsKICAgICAgICAgICAgIG1fbm9k
ZSA9IGJsb2NrLT5hdChtX25vZGVJbmRleCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlm
ICh2ZXJib3NlKSB7CisgICAgICAgICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2VJbnRlcm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAg
ICAgICAgICAgICAgICIgICAgIiwgbV9jdXJyZW50RXBvY2gsICI6IExvb2tpbmcgYXQgbm9kZSAi
LCBtX25vZGUsICIgd2l0aCBjaGlsZHJlbjogIik7CiAgICAgICAgICAgICAgICAgQ29tbWFQcmlu
dGVyIGNvbW1hOwpAQCAtMzQ4LDcgKzM1MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh2ZXJi
b3NlKSB7CisgICAgICAgICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJbnRl
cm5hbDo6dmVyYm9zZSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAg
ICAgICAgICIgICAgIiwgbV9jdXJyZW50RXBvY2gsICI6IERvbmUgd2l0aCBub2RlICIsIG1fbm9k
ZSwgIiAoIiwgbV9ub2RlLT5lcG9jaCgpLAogICAgICAgICAgICAgICAgICAgICAiKSB3aXRoIGNo
aWxkcmVuOiAiKTsKQEAgLTM4MCw3ICszODIsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQg
Y29uc2lkZXJCYXJyaWVyKEVkZ2UgYmFzZSwgRWRnZSBjaGlsZCkKICAgICB7Ci0gICAgICAgIGlm
ICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2VJbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgQ29uc2lkZXJpbmcg
YWRkaW5nIGJhcnJpZXIgIiwgYmFzZSwgIiA9PiAiLCBjaGlsZCwgIlxuIik7CiAgICAgICAgIAog
ICAgICAgICAvLyBXZSBkb24ndCBuZWVkIGEgc3RvcmUgYmFycmllciBpZiB0aGUgY2hpbGQgaXMg
Z3VhcmFudGVlZCB0byBub3QgYmUgYSBjZWxsLgpAQCAtMzg5LDcgKzM5MSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAvLyBEb24ndCB0cnkgdG9vIGhhcmQgYmVjYXVzZSBpdCdzIHRvbyBleHBl
bnNpdmUgdG8gcnVuIEFJLgogICAgICAgICAgICAgaWYgKGNoaWxkLT5oYXNDb25zdGFudCgpKSB7
CiAgICAgICAgICAgICAgICAgaWYgKCFjaGlsZC0+YXNKU1ZhbHVlKCkuaXNDZWxsKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChE
RkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICAgICAgUmVqZWN0aW5nIGJlY2F1c2Ugb2Yg
Y29uc3RhbnQgdHlwZS5cbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgfQpAQCAtNDAwLDcgKzQwMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
Y2FzZSBOb2RlUmVzdWx0SW50MzI6CiAgICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50
NTI6CiAgICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0Qm9vbGVhbjoKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdTdG9yZUJh
cnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiICAgICAgICAgICAgUmVqZWN0aW5nIGJlY2F1c2Ugb2YgcmVzdWx0IHR5
cGUuXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CkBAIC00MTQsNyArNDE2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIEdvIGlu
dG8gcmFnZSBtb2RlIHRvIGVsaW1pbmF0ZSBhbnkgY2hhbmNlIG9mIGEgYmFycmllciB3aXRoIGEg
bm9uLWNlbGwgY2hpbGQuIFdlCiAgICAgICAgICAgICAvLyBjYW4gYWZmb3JkIHRvIGtlZXAgYXJv
dW5kIEFJIGluIEdsb2JhbCBtb2RlLgogICAgICAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLT5u
ZWVkc1R5cGVDaGVjayhjaGlsZCwgflNwZWNDZWxsKSkgewotICAgICAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFz
ZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICAg
ICAgICBSZWplY3RpbmcgYmVjYXVzZSBvZiBBSSB0eXBlLlxuIik7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtNDI2LDcgKzQyOCw3IEBAIHByaXZhdGU6CiAgICAg
CiAgICAgdm9pZCBjb25zaWRlckJhcnJpZXIoRWRnZSBiYXNlKQogICAgIHsKLSAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBDb25zaWRlcmluZyBh
ZGRpbmcgYmFycmllciBvbiAiLCBiYXNlLCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIC8vIFdl
IGRvbid0IG5lZWQgYSBzdG9yZSBiYXJyaWVyIGlmIHRoZSBlcG9jaCBvZiB0aGUgYmFzZSBpcyBp
ZGVudGljYWwgdG8gdGhlIGN1cnJlbnQKQEAgLTQzNCwxMiArNDM2LDEyIEBAIHByaXZhdGU6CiAg
ICAgICAgIC8vIGJlIGluIG5ld2dlbiwgb3Igd2UganVzdCByYW4gYSBiYXJyaWVyIG9uIGl0IHNv
IGl0J3MgZ3VhcmFudGVlZCB0byBiZSByZW1lbWJlcmVkCiAgICAgICAgIC8vIGFscmVhZHkuCiAg
ICAgICAgIGlmIChiYXNlLT5lcG9jaCgpID09IG1fY3VycmVudEVwb2NoKSB7Ci0gICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAg
ICAgIFJlamVjdGluZyBiZWNhdXNlIGl0J3MgaW4gdGhlIGN1cnJlbnQgZXBvY2guXG4iKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgIGlmIChERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZUludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICAgICAgSW5zZXJ0aW5nIGJhcnJp
ZXIuXG4iKTsKICAgICAgICAgaW5zZXJ0QmFycmllcihtX25vZGVJbmRleCArIDEsIGJhc2UpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0Zv
cndhcmRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NG
b3J3YXJkaW5nUGhhc2UuY3BwCmluZGV4IGUzYzUyYWNhOWRhMTNmY2Q4M2MxOGUwMWI4NTZmOGE0
ODA5ODllOTcuLmU5NzM5NTc3N2ZhOWUwZDgyNjUzZGM4Nzc4ZDJhMDIwMGIwOTU5NDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGlu
Z1BoYXNlLmNwcApAQCAtNDAsNyArNDAsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAKIG5hbWVzcGFjZSB7CiAKLWJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIERG
R1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgYm9vbCB2ZXJi
b3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIFZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UgOiBwdWJsaWMg
UGhhc2UgewogcHVibGljOgpAQCAtNTMsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9mb3JtICE9IFNTQSk7CiAg
ICAgICAgIAotICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoREZHVmFyYXJnc0Zv
cndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJH
cmFwaCBiZWZvcmUgdmFyYXJncyBmb3J3YXJkaW5nOlxuIik7CiAgICAgICAgICAgICBtX2dyYXBo
LmR1bXAoKTsKICAgICAgICAgfQpAQCAtODUsNyArODcsNyBAQCBwcml2YXRlOgogICAgICAgICAv
LyBXZSBleHBlY3QgY2FsbHMgaW50byB0aGlzIGZ1bmN0aW9uIHRvIGJlIHJhcmUuIFNvLCB0aGlz
IGlzIHdyaXR0ZW4gaW4gYSBzaW1wbGUgTyhuKSBtYW5uZXIuCiAgICAgICAgIAogICAgICAgICBO
b2RlKiBjYW5kaWRhdGUgPSBibG9jay0+YXQoY2FuZGlkYXRlTm9kZUluZGV4KTsKLSAgICAgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJIYW5kbGluZyBjYW5kaWRhdGUgIiwg
Y2FuZGlkYXRlLCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZpbmQgdGhlIGluZGV4IG9m
IHRoZSBsYXN0IG5vZGUgaW4gdGhpcyBibG9jayB0byB1c2UgdGhlIGNhbmRpZGF0ZSwgYW5kIGxv
b2sgZm9yIGVzY2FwaW5nCkBAIC0xMjEsNyArMTIzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgICAgIHNhd0VzY2FwZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICAgICAgIGlmIChzYXdFc2NhcGUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1Bo
YXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgRXNjYXBlIGF0ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICAgICAgfQpAQCAtMTM4LDcgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKICAgICAgICAgICAgIGNhc2UgVGFpbENhbGxWYXJh
cmdzSW5saW5lZENhbGxlcjoKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkgPT0g
Y2FuZGlkYXRlIHx8IG5vZGUtPmNoaWxkMigpID09IGNhbmRpZGF0ZSkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR1ZhcmFyZ3NG
b3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBFc2NhcGUgYXQgIiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBAIC0xNDgsNyArMTUwLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgU2V0TG9jYWw6CiAgICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpID09IGNhbmRpZGF0ZSAmJiBub2RlLT52YXJpYWJs
ZUFjY2Vzc0RhdGEoKS0+aXNMb2FkZWRGcm9tKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1Bo
YXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgRXNjYXBlIGF0ICIsIG5vZGUsICJcbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICAgICAgfQpAQCAtMTU2LDcgKzE1OCw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGlmIChtX2dy
YXBoLnVzZXMobm9kZSwgY2FuZGlkYXRlKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAodmVy
Ym9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2VJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBF
c2NhcGUgYXQgIiwgbm9kZSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgICAgICB9CkBAIC0xNjUsNyArMTY3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGZvckFsbEtpbGxlZE9wZXJhbmRzKAogICAgICAgICAgICAgICAgIG1fZ3JhcGgsIG5vZGUsIGJs
b2NrLT50cnlBdChub2RlSW5kZXggKyAxKSwKICAgICAgICAgICAgICAgICBbJl0gKFZpcnR1YWxS
ZWdpc3RlciByZWcpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAg
ICAgICAgICAgICAgIGlmIChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgS2lsbGluZyAiLCByZWcs
ICIgd2hpbGUgd2UgYXJlIGludGVyZXN0ZWQgaW4gIiwgbGlzdER1bXAocmVsZXZhbnRMb2NhbHMp
LCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJl
bGV2YW50TG9jYWxzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
cmVsZXZhbnRMb2NhbHNbaV0gPT0gcmVnKSB7CkBAIC0xNzYsNyArMTc4LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICB9Ci0g
ICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFz
ZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiU2VsZWN0ZWQgbGFzdFVz
ZXJJbmRleCA9ICIsIGxhc3RVc2VySW5kZXgsICIsICIsIGJsb2NrLT5hdChsYXN0VXNlckluZGV4
KSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICAvLyBXZSdyZSBzdGlsbCBpbiBidXNpbmVzcy4g
RGV0ZXJtaW5lIGlmIGJldHdlZW4gdGhlIGNhbmRpZGF0ZSBhbmQgdGhlIGxhc3QgdXNlciB0aGVy
ZSBpcyBhbnkKQEAgLTE5Myw3ICsxOTUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBa
b21iaWVIaW50OgogICAgICAgICAgICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgICAgICAgICAgICAg
aWYgKGFyZ3VtZW50c0ludm9sdmVTdGFja1Nsb3QoY2FuZGlkYXRlLCBub2RlLT51bmxpbmtlZExv
Y2FsKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAg
ICAgICAgICBpZiAoREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEludGVyZmVyZW5jZSBhdCAiLCBu
b2RlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAg
IH0KQEAgLTIwMSw3ICsyMDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgY2FzZSBQdXRTdGFjazoKICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzSW52b2x2
ZVN0YWNrU2xvdChjYW5kaWRhdGUsIG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5sb2NhbCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIGlm
IChERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgSW50ZXJmZXJlbmNlIGF0ICIsIG5vZGUsICJcbiIp
OwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtMjEw
LDcgKzIxMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIFNldExvY2FsOgogICAgICAg
ICAgICAgY2FzZSBGbHVzaDoKICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzSW52b2x2ZVN0
YWNrU2xvdChjYW5kaWRhdGUsIG5vZGUtPmxvY2FsKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBpZiAoREZHVmFyYXJnc0ZvcndhcmRp
bmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiICAgIEludGVyZmVyZW5jZSBhdCAiLCBub2RlLCAiXG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAgLTIzMiw3ICsyMzQsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICBOb09wQ2xvYmJl
cml6ZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoZG9lc0ludGVyZmVyZSkgewotICAgICAgICAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKERGR1ZhcmFy
Z3NGb3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coIiAgICBJbnRlcmZlcmVuY2UgYXQgIiwgbm9kZSwgIlxuIik7CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBAIC0yNDAsNyArMjQyLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gV2UgY2FuIG1ha2Ug
dGhpcyB3b3JrLgotICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgaWYgKERGR1ZhcmFyZ3NG
b3J3YXJkaW5nUGhhc2VJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICBXaWxsIGRvIGZvcndhcmRpbmchXG4iKTsKICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAg
ICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0
SGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAK
aW5kZXggOTAyMTFmZDk0YWM2MTVjNjVjNTFkMzRjN2Q1ODhmNGQ5M2IxMjljNy4uOWI5OTE0YWU4
Yjg1NGQwMzUyOGE2Yjg4N2JhMjg4OGU3OWVkZGRhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwLmNwcApAQCAtMzgsOCArMzgsNiBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKLXVzaW5nIG5hbWVzcGFjZSBCMzsKLQogQWJzdHJh
Y3RIZWFwOjpBYnN0cmFjdEhlYXAoQWJzdHJhY3RIZWFwKiBwYXJlbnQsIGNvbnN0IGNoYXIqIGhl
YXBOYW1lLCBwdHJkaWZmX3Qgb2Zmc2V0KQogICAgIDogbV9vZmZzZXQob2Zmc2V0KQogICAgICwg
bV9oZWFwTmFtZShoZWFwTmFtZSkKQEAgLTc3LDcgKzc1LDcgQEAgdm9pZCBBYnN0cmFjdEhlYXA6
OmNvbXB1dGUodW5zaWduZWQgYmVnaW4pCiAKICAgICBpZiAobV9jaGlsZHJlbi5pc0VtcHR5KCkp
IHsKICAgICAgICAgLy8gTXVzdCBzcGVjaWFsLWNhc2UgbGVhdmVzIHNvIHRoYXQgdGhleSB1c2Ug
anVzdCBvbmUgc2xvdCBvbiB0aGUgbnVtYmVyIGxpbmUuCi0gICAgICAgIG1fcmFuZ2UgPSBIZWFw
UmFuZ2UoYmVnaW4pOworICAgICAgICBtX3JhbmdlID0gQjM6OkhlYXBSYW5nZShiZWdpbik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg3LDcgKzg1LDcgQEAgdm9pZCBBYnN0cmFjdEhl
YXA6OmNvbXB1dGUodW5zaWduZWQgYmVnaW4pCiAgICAgICAgIGN1cnJlbnQgPSBjaGlsZC0+cmFu
Z2UoKS5lbmQoKTsKICAgICB9CiAKLSAgICBtX3JhbmdlID0gSGVhcFJhbmdlKGJlZ2luLCBjdXJy
ZW50KTsKKyAgICBtX3JhbmdlID0gQjM6OkhlYXBSYW5nZShiZWdpbiwgY3VycmVudCk7CiB9CiAK
IHZvaWQgQWJzdHJhY3RIZWFwOjpzaGFsbG93RHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5jcHAKaW5kZXggNTkwM2E4ZTUzZWQzZDU3NTBlMWM1Y2RmMDExOGQyOTIyYzVjY2Y5
Mi4uNDBjYzhiODE0YzMwZTQxYzUyY2JjNWM5N2JiMTg4ZTQ2MjBjM2E0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
Y3BwCkBAIC00Nyw4ICs0Nyw2IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsK
IAotdXNpbmcgbmFtZXNwYWNlIEIzOwotCiBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5KCkKICAgICA6IHJvb3QobnVsbHB0ciwgImpzY1Jvb3QiKQogCkBAIC05
Miw0OCArOTAsNDkgQEAgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6fkFic3RyYWN0SGVhcFJlcG9z
aXRvcnkoKQogewogfQogCi12b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlTWVt
b3J5KGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwgVmFsdWUqIHZhbHVlKQordm9pZCBBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZU1lbW9yeShjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAs
IEIzOjpWYWx1ZSogdmFsdWUpCiB7CiAgICAgbV9oZWFwRm9yTWVtb3J5LmFwcGVuZChIZWFwRm9y
VmFsdWUoaGVhcCwgdmFsdWUpKTsKIH0KIAotdm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Ojpk
ZWNvcmF0ZUNDYWxsUmVhZChjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIFZhbHVlKiB2YWx1ZSkK
K3ZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVDQ2FsbFJlYWQoY29uc3QgQWJz
dHJhY3RIZWFwKiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQogewogICAgIG1faGVhcEZvckNDYWxs
UmVhZC5hcHBlbmQoSGVhcEZvclZhbHVlKGhlYXAsIHZhbHVlKSk7CiB9CiAKLXZvaWQgQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVDQ2FsbFdyaXRlKGNvbnN0IEFic3RyYWN0SGVhcCog
aGVhcCwgVmFsdWUqIHZhbHVlKQordm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0
ZUNDYWxsV3JpdGUoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQog
ewogICAgIG1faGVhcEZvckNDYWxsV3JpdGUuYXBwZW5kKEhlYXBGb3JWYWx1ZShoZWFwLCB2YWx1
ZSkpOwogfQogCi12b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlUGF0Y2hwb2lu
dFJlYWQoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBWYWx1ZSogdmFsdWUpCit2b2lkIEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlUGF0Y2hwb2ludFJlYWQoY29uc3QgQWJzdHJhY3RI
ZWFwKiBoZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQogewogICAgIG1faGVhcEZvclBhdGNocG9pbnRS
ZWFkLmFwcGVuZChIZWFwRm9yVmFsdWUoaGVhcCwgdmFsdWUpKTsKIH0KIAotdm9pZCBBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZVBhdGNocG9pbnRXcml0ZShjb25zdCBBYnN0cmFjdEhl
YXAqIGhlYXAsIFZhbHVlKiB2YWx1ZSkKK3ZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVj
b3JhdGVQYXRjaHBvaW50V3JpdGUoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBCMzo6VmFsdWUq
IHZhbHVlKQogewogICAgIG1faGVhcEZvclBhdGNocG9pbnRXcml0ZS5hcHBlbmQoSGVhcEZvclZh
bHVlKGhlYXAsIHZhbHVlKSk7CiB9CiAKLXZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVj
b3JhdGVGZW5jZVJlYWQoY29uc3QgQWJzdHJhY3RIZWFwKiBoZWFwLCBWYWx1ZSogdmFsdWUpCit2
b2lkIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlRmVuY2VSZWFkKGNvbnN0IEFic3Ry
YWN0SGVhcCogaGVhcCwgQjM6OlZhbHVlKiB2YWx1ZSkKIHsKICAgICBtX2hlYXBGb3JGZW5jZVJl
YWQuYXBwZW5kKEhlYXBGb3JWYWx1ZShoZWFwLCB2YWx1ZSkpOwogfQogCi12b2lkIEFic3RyYWN0
SGVhcFJlcG9zaXRvcnk6OmRlY29yYXRlRmVuY2VXcml0ZShjb25zdCBBYnN0cmFjdEhlYXAqIGhl
YXAsIFZhbHVlKiB2YWx1ZSkKK3ZvaWQgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVG
ZW5jZVdyaXRlKGNvbnN0IEFic3RyYWN0SGVhcCogaGVhcCwgQjM6OlZhbHVlKiB2YWx1ZSkKIHsK
ICAgICBtX2hlYXBGb3JGZW5jZVdyaXRlLmFwcGVuZChIZWFwRm9yVmFsdWUoaGVhcCwgdmFsdWUp
KTsKIH0KIAotdm9pZCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpkZWNvcmF0ZUZlbmNlZEFjY2Vz
cyhjb25zdCBBYnN0cmFjdEhlYXAqIGhlYXAsIFZhbHVlKiB2YWx1ZSkKK3ZvaWQgQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeTo6ZGVjb3JhdGVGZW5jZWRBY2Nlc3MoY29uc3QgQWJzdHJhY3RIZWFwKiBo
ZWFwLCBCMzo6VmFsdWUqIHZhbHVlKQogewogICAgIG1faGVhcEZvckZlbmNlZEFjY2Vzcy5hcHBl
bmQoSGVhcEZvclZhbHVlKGhlYXAsIHZhbHVlKSk7CiB9CiAKIHZvaWQgQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeTo6Y29tcHV0ZVJhbmdlc0FuZERlY29yYXRlSW5zdHJ1Y3Rpb25zKCkKIHsKKyAgICB1
c2luZyBuYW1lc3BhY2UgQjM7CiAgICAgcm9vdC5jb21wdXRlKCk7CiAKICAgICBpZiAodmVyYm9z
ZUNvbXBpbGF0aW9uRW5hYmxlZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEpJVEZpbmFsaXplci5jcHAKaW5kZXggMzZkYzQ5Y2VjMTBjNjU5NzljZjYwYTMzMmU5ZTAwNGI0
ZWM2MTBlZC4uYjI4ZGQ5YTVjMzgyMzlkN2Y4N2FkMjM2NGU3NGI5NDUxMjQxZWYzMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNwcApAQCAtMzcsOSAr
MzcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKLXVzaW5nIG5hbWVz
cGFjZSBERkc7Ci0KLUpJVEZpbmFsaXplcjo6SklURmluYWxpemVyKFBsYW4mIHBsYW4pCitKSVRG
aW5hbGl6ZXI6OkpJVEZpbmFsaXplcihERkc6OlBsYW4mIHBsYW4pCiAgICAgOiBGaW5hbGl6ZXIo
cGxhbikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGlu
ay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCmluZGV4IDY3NmIz
OTA5Yzg3ZDBkYTkwYzVkOGRiNjYwOGFkMjE0YzU5ODk2NjkuLjdjMDE4MWQ4ZDFlNGI5MzhkZWU3
MGFiOTFkNjYyZTA4NGMwMjkyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTGluay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNw
cApAQCAtNDEsMTAgKzQxLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewog
Ci11c2luZyBuYW1lc3BhY2UgREZHOwotCiB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogeworICAg
IHVzaW5nIG5hbWVzcGFjZSBERkc7CiAgICAgR3JhcGgmIGdyYXBoID0gc3RhdGUuZ3JhcGg7CiAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBncmFwaC5tX2NvZGVCbG9jazsKICAgICBWTSYgdm0g
PSBncmFwaC5tX3ZtOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
cGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5j
cHAKaW5kZXggNDE3MTc4ZDY1ZWZkMGU4NDgzNzlkNzRlNmU2MjYzMDY1MDYxYzIwMi4uOGJjYTU2
YzA2NTk3ZTc4NDY1YzI5MjY4NGYzNmI3MmM5YjE2NzhmZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCkBAIC00MiwxMiArNDIsMTEgQEAKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCi11c2luZyBuYW1lc3BhY2UgSlNDOjpERkc7Ci0K
IGV4dGVybiAiQyIgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5P
U1IoCiAgICAgRXhlY1N0YXRlKiBleGVjLCBFeGl0VGltZU9iamVjdE1hdGVyaWFsaXphdGlvbiog
bWF0ZXJpYWxpemF0aW9uLAogICAgIEVuY29kZWRKU1ZhbHVlKiBlbmNvZGVkVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlKiB2YWx1ZXMpCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIERGRzsKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJs
b2NrKCk7CiAKQEAgLTEyMCw2ICsxMTksNyBAQCBleHRlcm4gIkMiIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKAogZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUigKICAgICBFeGVjU3RhdGUq
IGV4ZWMsIEV4aXRUaW1lT2JqZWN0TWF0ZXJpYWxpemF0aW9uKiBtYXRlcmlhbGl6YXRpb24sIEVu
Y29kZWRKU1ZhbHVlKiB2YWx1ZXMpCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIERGRzsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogCiAgICAgLy8gV2UgY2Fubm90IEdDLiBXZSd2ZSBnb3QgcG9p
bnRlcnMgaW4gZXZpbCBwbGFjZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJraW5nQ29uc3RyYWludFNldC5jcHAKaW5kZXggMDFjMDZlNzVjNWIwMGVkMTA2OGU3YjRj
ZjFhNzI4YzU5NGNmOTFlMi4uYzVhNmM2Njk3NTkyZjc5NDBlZmZhNTU2MTllZjMzYTBkNTAxZDZl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFp
bnRTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJh
aW50U2V0LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIk1hcmtpbmdDb25zdHJhaW50
U2V0LmgiCiAKICNpbmNsdWRlICJPcHRpb25zLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+
CiAjaW5jbHVkZSA8d3RmL1RpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKQEAgLTEwNiwxNSArMTA3LDE1IEBAIHZvaWQgTWFya2luZ0NvbnN0cmFpbnRTZXQ6OmRp
ZFN0YXJ0TWFya2luZygpCiAgICAgbV9pdGVyYXRpb24gPSAxOwogfQogCi12b2lkIE1hcmtpbmdD
b25zdHJhaW50U2V0OjphZGQoQ1N0cmluZyBhYmJyZXZpYXRlZE5hbWUsIENTdHJpbmcgbmFtZSwg
RnVuY3Rpb248dm9pZChTbG90VmlzaXRvciYsIGNvbnN0IFZpc2l0aW5nVGltZW91dCYpPiBmdW5j
dGlvbiwgQ29uc3RyYWludFZvbGF0aWxpdHkgdm9sYXRpbGl0eSkKK3ZvaWQgTWFya2luZ0NvbnN0
cmFpbnRTZXQ6OmFkZChDU3RyaW5nIGFiYnJldmlhdGVkTmFtZSwgQ1N0cmluZyBuYW1lLCA6OkZ1
bmN0aW9uPHZvaWQoU2xvdFZpc2l0b3ImLCBjb25zdCBWaXNpdGluZ1RpbWVvdXQmKT4gZnVuY3Rp
b24sIENvbnN0cmFpbnRWb2xhdGlsaXR5IHZvbGF0aWxpdHkpCiB7CiAgICAgYWRkKHN0ZDo6bWFr
ZV91bmlxdWU8TWFya2luZ0NvbnN0cmFpbnQ+KFdURk1vdmUoYWJicmV2aWF0ZWROYW1lKSwgV1RG
TW92ZShuYW1lKSwgV1RGTW92ZShmdW5jdGlvbiksIHZvbGF0aWxpdHkpKTsKIH0KIAogdm9pZCBN
YXJraW5nQ29uc3RyYWludFNldDo6YWRkKAogICAgIENTdHJpbmcgYWJicmV2aWF0ZWROYW1lLCBD
U3RyaW5nIG5hbWUsCi0gICAgRnVuY3Rpb248dm9pZChTbG90VmlzaXRvciYsIGNvbnN0IFZpc2l0
aW5nVGltZW91dCYpPiBleGVjdXRlRnVuY3Rpb24sCi0gICAgRnVuY3Rpb248ZG91YmxlKFNsb3RW
aXNpdG9yJik+IHF1aWNrV29ya0VzdGltYXRlRnVuY3Rpb24sCisgICAgOjpGdW5jdGlvbjx2b2lk
KFNsb3RWaXNpdG9yJiwgY29uc3QgVmlzaXRpbmdUaW1lb3V0Jik+IGV4ZWN1dGVGdW5jdGlvbiwK
KyAgICA6OkZ1bmN0aW9uPGRvdWJsZShTbG90VmlzaXRvciYpPiBxdWlja1dvcmtFc3RpbWF0ZUZ1
bmN0aW9uLAogICAgIENvbnN0cmFpbnRWb2xhdGlsaXR5IHZvbGF0aWxpdHkpCiB7CiAgICAgYWRk
KHN0ZDo6bWFrZV91bmlxdWU8TWFya2luZ0NvbnN0cmFpbnQ+KFdURk1vdmUoYWJicmV2aWF0ZWRO
YW1lKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShleGVjdXRlRnVuY3Rpb24pLCBXVEZNb3ZlKHF1
aWNrV29ya0VzdGltYXRlRnVuY3Rpb24pLCB2b2xhdGlsaXR5KSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAKaW5kZXggYWU2ZTE4
MzVlMmUyZTdhNDMwMGY3ZGZhMGExMWIyODZkM2YxZmMzMS4uZjcwNjY2ZDg5NzBmNmM3MzMxNTkw
NzgxNzdkM2VhM2M1NTgwYWI3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9TaGFkb3dDaGlja2VuLmNwcApAQCAtMzMsNyArMzMsOSBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorbmFtZXNwYWNlIFNoYWRvd0NoaWNrZW5JbnRlcm5hbCB7CiBzdGF0aWMgY29u
c3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIHZvaWQgU2hhZG93Q2hpY2tlbjo6UGFja2V0
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CkBAIC04Niw3ICs4OCw3IEBAIHZvaWQg
U2hhZG93Q2hpY2tlbjo6bG9nKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBQYWNrZXQm
IHBhY2tldCkKIAogdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUq
IGV4ZWMpCiB7Ci0gICAgaWYgKHZlcmJvc2UpIHsKKyAgICBpZiAoU2hhZG93Q2hpY2tlbkludGVy
bmFsOjp2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2coIlJ1bm5pbmcgdXBkYXRlIG9uOiAiLCAq
dGhpcywgIlxuIik7CiAgICAgICAgIFdURlJlcG9ydEJhY2t0cmFjZSgpOwogICAgIH0KQEAgLTEx
MiwxMyArMTE0LDEzIEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGlmICh2ZXJib3NlKQorICAg
IGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkhp
Z2hlc3QgcG9pbnQgc2luY2UgbGFzdCB0aW1lOiAiLCBSYXdQb2ludGVyKGhpZ2hlc3RQb2ludFNp
bmNlTGFzdFRpbWUpLCAiXG4iKTsKICAgICAKICAgICB3aGlsZSAoIW1fc3RhY2suaXNFbXB0eSgp
ICYmIChtX3N0YWNrLmxhc3QoKS5mcmFtZSA8IGhpZ2hlc3RQb2ludFNpbmNlTGFzdFRpbWUgfHwg
bV9zdGFjay5sYXN0KCkuaXNUYWlsRGVsZXRlZCkpCiAgICAgICAgIG1fc3RhY2sucmVtb3ZlTGFz
dCgpOwogICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgICBSZXZpc2VkIHN0YWNrOiAiLCBsaXN0
RHVtcChtX3N0YWNrKSwgIlxuIik7CiAgICAgCiAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRo
ZSB0b3Agb2Ygc3RhY2sgaXMgbm93IHRhaWwtZGVsZXRlZC4gVGhlIHN0YWNrIG5vIGxvbmdlciBj
b250YWlucyBhbnkKQEAgLTE0MSw3ICsxNDMsNyBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0
ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKICAgICB9CiAKICAgICAKLSAgICBpZiAodmVyYm9z
ZSkKKyAgICBpZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRh
TG9nKCIgICAgUmV2aXNlZCBzdGFjazogIiwgbGlzdER1bXAobV9zdGFjayksICJcbiIpOwogICAg
IAogICAgIC8vIFRoZSBsb2ctYmFzZWQgYW5kIGV4ZWMtYmFzZWQgcnVsZXMgcmVxdWlyZSB0aGF0
IFNoYWRvd0NoaWNrZW4gd2FzIGVuYWJsZWQuIFRoZSBwb2ludCBvZgpAQCAtMTY5LDcgKzE3MSw3
IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICAgICAgfSk7CiAgICAgICAgIHN0YWNrUmlnaHROb3cucmV2ZXJzZSgpOwogICAgICAg
ICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgU3RhY2sgcmlnaHQgbm93OiAi
LCBsaXN0RHVtcChzdGFja1JpZ2h0Tm93KSwgIlxuIik7CiAgICAgICAgIAogICAgICAgICB1bnNp
Z25lZCBzaGFkb3dJbmRleCA9IDA7CkBAIC0xOTQsNyArMTk2LDcgQEAgdm9pZCBTaGFkb3dDaGlj
a2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIH0KICAgICAgICAg
bV9zdGFjay5yZXNpemUoc2hhZG93SW5kZXgpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJv
c2UpCisgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgUmV2aXNlZCBzdGFjazogIiwgbGlzdER1bXAobV9zdGFjayksICJc
biIpOwogICAgIH0KICAgICAKQEAgLTIwOCwxNyArMjEwLDE3IEBAIHZvaWQgU2hhZG93Q2hpY2tl
bjo6dXBkYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB9CiAgICAgfQogICAg
IAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgIGRhdGFMb2coIiAgICBIaWdoZXN0IHBvaW50IHNpbmNlIGxhc3QgdGltZTog
IiwgUmF3UG9pbnRlcihoaWdoZXN0UG9pbnRTaW5jZUxhc3RUaW1lKSwgIlxuIik7CiAgICAgCiAg
ICAgLy8gU2V0IGV2ZXJ5dGhpbmcgdXAgc28gdGhhdCB3ZSBrbm93IHdoZXJlIHRoZSB0b3AgZnJh
bWUgaXMgaW4gdGhlIGxvZy4KICAgICB1bnNpZ25lZCBpbmRleEluTG9nID0gbG9nQ3Vyc29ySW5k
ZXg7CiAgICAgCiAgICAgYXV0byBhZHZhbmNlSW5kZXhJbkxvZ1RvID0gWyZdIChDYWxsRnJhbWUq
IGZyYW1lLCBKU09iamVjdCogY2FsbGVlLCBDYWxsRnJhbWUqIGNhbGxlckZyYW1lKSAtPiBib29s
IHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQWR2YW5jaW5nIHRvIGZyYW1l
ID0gIiwgUmF3UG9pbnRlcihmcmFtZSksICIgZnJvbSBpbmRleEluTG9nID0gIiwgaW5kZXhJbkxv
ZywgIlxuIik7CiAgICAgICAgIGlmIChpbmRleEluTG9nID4gbG9nQ3Vyc29ySW5kZXgpIHsKLSAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGluZy5cbiIp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0yNDQsNyArMjQ2LDcg
QEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgICAgICBpZiAocGFja2V0LmlzUHJvbG9ndWUoKSAmJiBwYWNrZXQuZnJhbWUgPT0gZnJh
bWUKICAgICAgICAgICAgICAgICAmJiAoIWNhbGxlZSB8fCBwYWNrZXQuY2FsbGVlID09IGNhbGxl
ZSkKICAgICAgICAgICAgICAgICAmJiAoIWNhbGxlckZyYW1lIHx8IHBhY2tldC5jYWxsZXJGcmFt
ZSA9PSBjYWxsZXJGcmFtZSkpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAg
ICAgICAgICAgICBpZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgRm91bmQgYXQgaW5kZXhJbkxvZyA9ICIsIGluZGV4SW5M
b2csICJcbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpA
QCAtMjY2LDcgKzI2OCw3IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgRXhl
Y1N0YXRlKiBleGVjKQogICAgICAgICAvLyBJdCBzZWVtcyBsaWtlIHRoZSBsYXR0ZXIgb3B0aW9u
IGlzIGxlc3MgaGFybWZ1bCwgc28gdGhhdCdzIHdoYXQgd2UgZG8uCiAgICAgICAgIGluZGV4SW5M
b2cgPSBvbGRJbmRleEluTG9nOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRh
TG9nKCIgICAgRGlkbid0IGZpbmQgaXQuXG4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH07CkBAIC0yODYsMTAgKzI4OCwxMCBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYg
dm0sIEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSB2aXNpdG9yLT5jYWxsRnJhbWUoKTsKLSAgICAgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkK
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRXhhbWluaW5nICIsIFJhd1BvaW50ZXIoY2Fs
bEZyYW1lKSwgIlxuIik7CiAgICAgICAgICAgICBpZiAoY2FsbEZyYW1lID09IGhpZ2hlc3RQb2lu
dFNpbmNlTGFzdFRpbWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgICAgICBpZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgQmFpbGluZyBhdCAiLCBSYXdQb2ludGVyKGNhbGxGcmFtZSks
ICIgYmVjYXVzZSBpdCdzIHRoZSBoaWdoZXN0IHBvaW50IHNpbmNlIGxhc3QgdGltZS5cbiIpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CiAgICAgICAgICAgICB9
CkBAIC0zMTIsNyArMzE0LDcgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBjb25kaXRpb24gcHJvdGVj
dHMgdXMgZnJvbSB0aGUgY2FzZSB3aGVyZSBhZHZhbmNlSW5kZXhJbkxvZ1RvIGRpZG4ndCBmaW5k
CiAgICAgICAgICAgICAgICAgLy8gYW55dGhpbmcuCiAgICAgICAgICAgICAgICAgJiYgbV9sb2db
aW5kZXhJbkxvZ10uZnJhbWUgPT0gdG9QdXNoLmxhc3QoKS5mcmFtZSkgewotICAgICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgIGlmIChTaGFkb3dDaGlja2VuSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBHb2luZyB0byBs
b29wIHRocm91Z2ggdG8gZmluZCB0YWlsIGRlbGV0ZWQgZnJhbWVzIHdpdGggaW5kZXhJbkxvZyA9
ICIsIGluZGV4SW5Mb2csICIgYW5kIHB1c2gtc3RhY2sgdG9wID0gIiwgdG9QdXNoLmxhc3QoKSwg
IlxuIik7CiAgICAgICAgICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgICAgICAgICBB
U1NFUlQobV9sb2dbaW5kZXhJbkxvZ10uZnJhbWUgPT0gdG9QdXNoLmxhc3QoKS5mcmFtZSk7CkBA
IC0zMzcsNyArMzM5LDcgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5Mb2ctLTsgLy8gU2tpcCBv
dmVyIHRoZSB0YWlsIHBhY2tldC4KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgIGlmICghYWR2YW5jZUluZGV4SW5Mb2dUbyh0YWlsUGFja2V0LmZyYW1lLCBudWxscHRy
LCBudWxscHRyKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoU2hhZG93Q2hpY2tlbkludGVybmFsOjp2ZXJib3NlKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkNhbid0IGZpbmQgcHJvbG9ndWUg
cGFja2V0IGZvciB0YWlsOiAiLCBSYXdQb2ludGVyKHRhaWxQYWNrZXQuZnJhbWUpLCAiXG4iKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIHdlcmUgdW5hYmxlIHRvIGxvY2F0ZSB0aGUg
cHJvbG9ndWUgcGFja2V0IGZvciB0aGlzIHRhaWwgcGFja2V0LgogICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gVGhpcyBpcyByYXJlIGJ1dCBjYW4gaGFwcGVuIGluIGEgc2l0dWF0aW9uIGxpa2U6
CkBAIC0zNTcsNyArMzU5LDcgQEAgdm9pZCBTaGFkb3dDaGlja2VuOjp1cGRhdGUoVk0mIHZtLCBF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51
ZTsKICAgICAgICAgfSk7CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoU2hhZG93Q2hpY2tl
bkludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCIgICAgUHVzaGluZzogIiwgbGlz
dER1bXAodG9QdXNoKSwgIlxuIik7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gdG9QdXNo
LnNpemUoKTsgaS0tOykKQEAgLTM3Myw3ICszNzUsNyBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVw
ZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKICAgICB9IGVsc2UKICAgICAgICAgbV9sb2dD
dXJzb3IgPSBtX2xvZzsKIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dDaGlja2Vu
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgICBBZnRlciBwdXNoaW5nOiAi
LCAqdGhpcywgIlxuIik7CiAKICAgICAvLyBSZW1vdmUgdGFpbCBmcmFtZXMgdW50aWwgdGhlIG51
bWJlciBvZiB0YWlsIGRlbGV0ZWQgZnJhbWVzIGlzIHNtYWxsIGVub3VnaC4KQEAgLTM5OSw3ICs0
MDEsNyBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVwZGF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChTaGFkb3dD
aGlja2VuSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgICBBZnRlciBjbGVh
bi11cDogIiwgKnRoaXMsICJcbiIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0JpbmFyeVN3aXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Jp
bmFyeVN3aXRjaC5jcHAKaW5kZXggZjNkZGNmY2E5MjFjOTgxZWYyOGMwYjdkNmQ3YTUxZjVlZmQ1
Mzg4Yi4uMGVhYjU2NTE5MjUzMjllMTdiM2Y1Y2EyNWRiMTM0YWI0ZGQ5YTY3MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9CaW5hcnlTd2l0Y2guY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQmluYXJ5U3dpdGNoLmNwcApAQCAtMzMsNyArMzMsOSBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAorbmFtZXNwYWNlIEJpbmFyeVN3aXRjaEludGVybmFsIHsKIHN0
YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogc3RhdGljIHVuc2lnbmVkIGds
b2JhbENvdW50ZXI7IC8vIFdlIHVzZSBhIGRpZmZlcmVudCBzZWVkIGV2ZXJ5IHRpbWUgd2UgYXJl
IGludm9rZWQuCiAKQEAgLTQ3LDcgKzQ5LDcgQEAgQmluYXJ5U3dpdGNoOjpCaW5hcnlTd2l0Y2go
R1BSUmVnIHZhbHVlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGNhc2VzLCBUeXBlIHR5cGUKICAg
ICBpZiAoY2FzZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAodmVyYm9z
ZSkKKyAgICBpZiAoQmluYXJ5U3dpdGNoSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFM
b2coIk9yaWdpbmFsIGNhc2VzOiAiLCBsaXN0RHVtcChjYXNlcyksICJcbiIpOwogICAgIAogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYXNlcy5zaXplKCk7ICsraSkKQEAgLTU1LDcgKzU3
LDcgQEAgQmluYXJ5U3dpdGNoOjpCaW5hcnlTd2l0Y2goR1BSUmVnIHZhbHVlLCBjb25zdCBWZWN0
b3I8aW50NjRfdD4mIGNhc2VzLCBUeXBlIHR5cGUKICAgICAKICAgICBzdGQ6OnNvcnQobV9jYXNl
cy5iZWdpbigpLCBtX2Nhc2VzLmVuZCgpKTsKIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChC
aW5hcnlTd2l0Y2hJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiU29ydGVkIGNh
c2VzOiAiLCBsaXN0RHVtcChtX2Nhc2VzKSwgIlxuIik7CiAgICAgCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMTsgaSA8IG1fY2FzZXMuc2l6ZSgpOyArK2kpCkBAIC0xMzcsMTEgKzEzOSwxMSBAQCBi
b29sIEJpbmFyeVN3aXRjaDo6YWR2YW5jZShNYWNyb0Fzc2VtYmxlciYgaml0KQogCiB2b2lkIEJp
bmFyeVN3aXRjaDo6YnVpbGQodW5zaWduZWQgc3RhcnQsIGJvb2wgaGFyZFN0YXJ0LCB1bnNpZ25l
ZCBlbmQpCiB7Ci0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEJpbmFyeVN3aXRjaEludGVybmFs
Ojp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJCdWlsZGluZyB3aXRoIHN0YXJ0ID0gIiwgc3Rh
cnQsICIsIGhhcmRTdGFydCA9ICIsIGhhcmRTdGFydCwgIiwgZW5kID0gIiwgZW5kLCAiXG4iKTsK
IAogICAgIGF1dG8gYXBwZW5kID0gWyZdIChjb25zdCBCcmFuY2hDb2RlJiBjb2RlKSB7Ci0gICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQmluYXJ5U3dpdGNoSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgICAgICBkYXRhTG9nKCI9PT4gIiwgY29kZSwgIlxuIik7CiAgICAgICAgIG1f
YnJhbmNoZXMuYXBwZW5kKGNvZGUpOwogICAgIH07CkBAIC0xNTksNyArMTYxLDcgQEAgdm9pZCBC
aW5hcnlTd2l0Y2g6OmJ1aWxkKHVuc2lnbmVkIHN0YXJ0LCBib29sIGhhcmRTdGFydCwgdW5zaWdu
ZWQgZW5kKQogICAgIGNvbnN0IHVuc2lnbmVkIGxlYWZUaHJlc2hvbGQgPSAzOwogICAgIAogICAg
IGlmIChzaXplIDw9IGxlYWZUaHJlc2hvbGQpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpCisgICAg
ICAgIGlmIChCaW5hcnlTd2l0Y2hJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFM
b2coIkl0J3MgYSBsZWFmLlxuIik7CiAgICAgICAgIAogICAgICAgICAvLyBJdCB0dXJucyBvdXQg
dGhhdCBmb3IgZXhhY3RseSB0aHJlZSBjYXNlcyBvciBsZXNzLCBpdCdzIGJldHRlciB0byBqdXN0
IGNvbXBhcmUgZWFjaApAQCAtMTg2LDcgKzE4OCw3IEBAIHZvaWQgQmluYXJ5U3dpdGNoOjpidWls
ZCh1bnNpZ25lZCBzdGFydCwgYm9vbCBoYXJkU3RhcnQsIHVuc2lnbmVkIGVuZCkKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAoQmlu
YXJ5U3dpdGNoSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCJhbGxDb25z
ZWN1dGl2ZSA9ICIsIGFsbENvbnNlY3V0aXZlLCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIFZl
Y3Rvcjx1bnNpZ25lZCwgMz4gbG9jYWxDYXNlSW5kaWNlczsKQEAgLTIxNCw3ICsyMTYsNyBAQCB2
b2lkIEJpbmFyeVN3aXRjaDo6YnVpbGQodW5zaWduZWQgc3RhcnQsIGJvb2wgaGFyZFN0YXJ0LCB1
bnNpZ25lZCBlbmQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAodmVyYm9zZSkK
KyAgICBpZiAoQmluYXJ5U3dpdGNoSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2co
Ikl0J3Mgbm90IGEgbGVhZi5cbiIpOwogICAgICAgICAKICAgICAvLyBUaGVyZSBhcmUgdHdvIGRp
ZmZlcmVudCBzdHJhdGVnaWVzIHdlIGNvdWxkIGNvbnNpZGVyIGhlcmU6CkBAIC0zMTQsNyArMzE2
LDcgQEAgdm9pZCBCaW5hcnlTd2l0Y2g6OmJ1aWxkKHVuc2lnbmVkIHN0YXJ0LCBib29sIGhhcmRT
dGFydCwgdW5zaWduZWQgZW5kKQogICAgICAgICAKICAgICB1bnNpZ25lZCBtZWRpYW5JbmRleCA9
IChzdGFydCArIGVuZCkgLyAyOwogCi0gICAgaWYgKHZlcmJvc2UpCisgICAgaWYgKEJpbmFyeVN3
aXRjaEludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJtZWRpYW5JbmRleCA9ICIs
IG1lZGlhbkluZGV4LCAiXG4iKTsKIAogICAgIC8vIFdlIHdhbnQgbWVkaWFuSW5kZXggdG8gcG9p
bnQgdG8gdGhlIHRoaW5nIHdlIHdpbGwgZG8gYSBsZXNzLXRoYW4gY29tcGFyZSBhZ2FpbnN0LiBX
ZSB3YW50CkBAIC0zNDcsNyArMzQ5LDcgQEAgdm9pZCBCaW5hcnlTd2l0Y2g6OmJ1aWxkKHVuc2ln
bmVkIHN0YXJ0LCBib29sIGhhcmRTdGFydCwgdW5zaWduZWQgZW5kKQogICAgIFJFTEVBU0VfQVNT
RVJUKG1lZGlhbkluZGV4ID4gc3RhcnQpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1lZGlhbkluZGV4
ICsgMSA8IGVuZCk7CiAgICAgICAgIAotICAgIGlmICh2ZXJib3NlKQorICAgIGlmIChCaW5hcnlT
d2l0Y2hJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiZml4ZWQgbWVkaWFuSW5k
ZXggPSAiLCBtZWRpYW5JbmRleCwgIlxuIik7CiAKICAgICBhcHBlbmQoQnJhbmNoQ29kZShMZXNz
VGhhblRvUHVzaCwgbWVkaWFuSW5kZXgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RGF0YS5jcHAKaW5kZXggMWU0OWYyZjg1MzI1OGUzOTQxNjFjN2M0NDAwMzk5MzNmYWFhOTIx
Yy4uYWQ4NjlmMjBlMmU0ZDFiOWFlMGRhNzg3NDgyZmI2ZmU3ZDI4YWZhYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKQEAgLTIyNSw3ICsyMjUsOSBAQCB2b2lk
IERhdGE6OmZpbmFsaXplU3RhdHMoKQogfQogCiAjaWYgRU5BQkxFKExMSU5UX1NUQVRTKQorbmFt
ZXNwYWNlIExMSW50RGF0YUludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2VTdGF0
cyA9IGZhbHNlOworfQogCiBzdGF0aWMgYm9vbCBjb21wYXJlU3RhdHMoY29uc3QgT3Bjb2RlU3Rh
dHMmIGEsIGNvbnN0IE9wY29kZVN0YXRzJiBiKQogewpAQCAtMjgzLDcgKzI4NSw3IEBAIHZvaWQg
RGF0YTo6bG9hZFN0YXRzKCkKICAgICB1bnNpZ25lZCBpbmRleDsKICAgICBjaGFyIG9wY29kZU5h
bWVbMTAwXTsKICAgICB3aGlsZSAoZnNjYW5mKGZpbGUsICJbJXVdOiBmYXN0OiV6dSBzbG93OiV6
dSBpZDoldSAlc1xuIiwgJmluZGV4LCAmbG9hZGVkLmNvdW50LCAmbG9hZGVkLnNsb3dQYXRoQ291
bnQsICZsb2FkZWQuaWQsIG9wY29kZU5hbWUpICE9IEVPRikgewotICAgICAgICBpZiAodmVyYm9z
ZVN0YXRzKQorICAgICAgICBpZiAoTExJbnREYXRhSW50ZXJuYWw6OnZlcmJvc2VTdGF0cykKICAg
ICAgICAgICAgIGRhdGFMb2dGKCJsb2FkZWQgWyV1XTogZmFzdCAlenUgc2xvdyAlenUgaWQ6JXUg
JXNcbiIsIGluZGV4LCBsb2FkZWQuY291bnQsIGxvYWRlZC5zbG93UGF0aENvdW50LCBsb2FkZWQu
aWQsIG9wY29kZU5hbWUpOwogCiAgICAgICAgIE9wY29kZVN0YXRzJiBzdGF0cyA9IG9wY29kZVN0
YXRzKGxvYWRlZC5pZCk7CkBAIC0yOTEsNyArMjkzLDcgQEAgdm9pZCBEYXRhOjpsb2FkU3RhdHMo
KQogICAgICAgICBzdGF0cy5zbG93UGF0aENvdW50ID0gbG9hZGVkLnNsb3dQYXRoQ291bnQ7CiAg
ICAgfQogCi0gICAgaWYgKHZlcmJvc2VTdGF0cykgeworICAgIGlmIChMTEludERhdGFJbnRlcm5h
bDo6dmVyYm9zZVN0YXRzKSB7CiAgICAgICAgIGRhdGFMb2dGKCJBZnRlciBsb2FkaW5nIGZyb20g
JXMsICIsIGZpbGVuYW1lKTsKICAgICAgICAgZHVtcFN0YXRzKCk7CiAgICAgfQpAQCAtMzMwLDcg
KzMzMiw3IEBAIHZvaWQgRGF0YTo6c2F2ZVN0YXRzKCkKICAgICAgICAgaWYgKCFzdGF0cy5jb3Vu
dCAmJiAhc3RhdHMuc2xvd1BhdGhDb3VudCkKICAgICAgICAgICAgIGJyZWFrOyAvLyBzdGF0cyBh
cmUgc29ydGVkLiBJZiB3ZSBlbmNvdW50ZXJlZCAwIGNvdW50cywgdGhlbiB0aGVyZSBhcmUgbm8g
bW9yZSBub24temVybyBjb3VudHMuCiAKLSAgICAgICAgaWYgKHZlcmJvc2VTdGF0cykKKyAgICAg
ICAgaWYgKExMSW50RGF0YUludGVybmFsOjp2ZXJib3NlU3RhdHMpCiAgICAgICAgICAgICBkYXRh
TG9nRigic2F2ZWQgWyV1XTogZmFzdDolenUgc2xvdzolenUgaWQ6JXUgJXNcbiIsIGluZGV4LCBz
dGF0cy5jb3VudCwgc3RhdHMuc2xvd1BhdGhDb3VudCwgc3RhdHMuaWQsIG9wY29kZU5hbWVzW3N0
YXRzLmlkXSk7CiAKICAgICAgICAgZnByaW50ZihmaWxlLCAiWyV1XTogZmFzdDolenUgc2xvdzol
enUgaWQ6JXUgJXNcbiIsIGluZGV4LCBzdGF0cy5jb3VudCwgc3RhdHMuc2xvd1BhdGhDb3VudCwg
c3RhdHMuaWQsIG9wY29kZU5hbWVzW3N0YXRzLmlkXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggOGY3MTE3YjdmNjE0MmJhMDZh
ZTcxY2U3Y2U2ZGRmM2ExNjdlNzcxNy4uM2I3MWEzMDk2N2VhMzk4ZDU5MjkyYjM5OWNiM2VkYjU2
MDVhNGIxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJv
dG90eXBlLmNwcApAQCAtMTM2Niw3ICsxMzY2LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNBcHBlbmRNZW1jcHkoRXhlY1N0YXRlKiBleGVjKQog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSBBcnJheVByb3RvdHlwZS5jb25zdHJ1Y3RvciBXYXRj
aHBvaW50IC0tLS0tLS0tLS0tLS0tLS0tLQogCituYW1lc3BhY2UgQXJyYXlQcm90b3R5cGVJbnRl
cm5hbCB7CiBzdGF0aWMgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIGNsYXNzIEFycmF5UHJv
dG90eXBlQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5V2F0Y2hwb2ludCA6IHB1YmxpYyBBZGFwdGl2
ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlIHsKIHB1YmxpYzoKQEAgLTEzODgs
NyArMTM5MCw3IEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OnRyeUluaXRpYWxpemVTcGVjaWVzV2F0
Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoQXJyYXlQcm90b3R5cGVJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiSW5pdGlhbGl6aW5nIEFycmF5IHNw
ZWNpZXMgd2F0Y2hwb2ludHMgZm9yIEFycmF5LnByb3RvdHlwZTogIiwgcG9pbnRlckR1bXAodGhp
cyksICIgd2l0aCBzdHJ1Y3R1cmU6ICIsIHBvaW50ZXJEdW1wKHRoaXMtPnN0cnVjdHVyZSgpKSwg
IlxuYW5kIEFycmF5OiAiLCBwb2ludGVyRHVtcCh0aGlzLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlD
b25zdHJ1Y3RvcigpKSwgIiB3aXRoIHN0cnVjdHVyZTogIiwgcG9pbnRlckR1bXAodGhpcy0+Z2xv
YmFsT2JqZWN0KCktPmFycmF5Q29uc3RydWN0b3IoKS0+c3RydWN0dXJlKCkpLCAiXG4iKTsKICAg
ICAvLyBGaXJzdCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBBcnJheS5wcm90b3R5cGUu
Y29uc3RydWN0b3IgcHJvcGVydHkgcG9pbnRzIHRvIEFycmF5CiAgICAgLy8gYW5kIHRoYXQgQXJy
YXlbU3ltYm9sLnNwZWNpZXNdIGlzIHRoZSBwcmltb3JkaWFsIEdldHRlclNldHRlci4KQEAgLTE0
NjYsNyArMTQ2OCw3IEBAIHZvaWQgQXJyYXlQcm90b3R5cGVBZGFwdGl2ZUluZmVycmVkUHJvcGVy
dHlXYXRjaHBvaW50OjpoYW5kbGVGaXJlKGNvbnN0IEZpcmVEZXRhCiAKICAgICBTdHJpbmdGaXJl
RGV0YWlsIHN0cmluZ0RldGFpbChvdXQudG9DU3RyaW5nKCkuZGF0YSgpKTsKIAotICAgIGlmICh2
ZXJib3NlKQorICAgIGlmIChBcnJheVByb3RvdHlwZUludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICBXVEY6OmRhdGFMb2coc3RyaW5nRGV0YWlsLCAiXG4iKTsKIAogICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2FycmF5UHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKaW5kZXggNTQ5
M2Y4ZjcwYTM1NzMyMWYxNjdkZTFjNTJiNGYzNTI5OTg4MDQ4Yy4uZmM4Yjg0ODJiZWZkNmIwYzA3
NGI0ZWU4ZmQyN2JhYTIyMjU4YjA4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKQEAgLTEwOCw0MSArMTA4LDYgQEAgc3RhdGljIHZvaWQg
YXBwZW5kU291cmNlVG9FcnJvcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRXJyb3JJbnN0YW5jZSog
ZXhjZXB0aW9uLAogCiB9CiAKLWNsYXNzIEZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9j
a0Z1bmN0b3IgewotcHVibGljOgotICAgIEZpbmRGaXJzdENhbGxlckZyYW1lV2l0aENvZGVibG9j
a0Z1bmN0b3IoQ2FsbEZyYW1lKiBzdGFydENhbGxGcmFtZSkKLSAgICAgICAgOiBtX3N0YXJ0Q2Fs
bEZyYW1lKHN0YXJ0Q2FsbEZyYW1lKQotICAgICAgICAsIG1fZm91bmRDYWxsRnJhbWUobnVsbHB0
cikKLSAgICAgICAgLCBtX2ZvdW5kU3RhcnRDYWxsRnJhbWUoZmFsc2UpCi0gICAgICAgICwgbV9p
bmRleCgwKQotICAgIHsgfQotCi0gICAgU3RhY2tWaXNpdG9yOjpTdGF0dXMgb3BlcmF0b3IoKShT
dGFja1Zpc2l0b3ImIHZpc2l0b3IpCi0gICAgewotICAgICAgICBpZiAoIW1fZm91bmRTdGFydENh
bGxGcmFtZSAmJiAodmlzaXRvci0+Y2FsbEZyYW1lKCkgPT0gbV9zdGFydENhbGxGcmFtZSkpCi0g
ICAgICAgICAgICBtX2ZvdW5kU3RhcnRDYWxsRnJhbWUgPSB0cnVlOwotCi0gICAgICAgIGlmICht
X2ZvdW5kU3RhcnRDYWxsRnJhbWUpIHsKLSAgICAgICAgICAgIGlmICh2aXNpdG9yLT5jYWxsRnJh
bWUoKS0+Y29kZUJsb2NrKCkpIHsKLSAgICAgICAgICAgICAgICBtX2ZvdW5kQ2FsbEZyYW1lID0g
dmlzaXRvci0+Y2FsbEZyYW1lKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRv
cjo6RG9uZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1faW5kZXgrKzsKLSAgICAgICAg
fQotCi0gICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwotICAgIH0KLQotICAg
IENhbGxGcmFtZSogZm91bmRDYWxsRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZvdW5kQ2FsbEZy
YW1lOyB9Ci0gICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9Ci0K
LXByaXZhdGU6Ci0gICAgQ2FsbEZyYW1lKiBtX3N0YXJ0Q2FsbEZyYW1lOwotICAgIENhbGxGcmFt
ZSogbV9mb3VuZENhbGxGcmFtZTsKLSAgICBib29sIG1fZm91bmRTdGFydENhbGxGcmFtZTsKLSAg
ICB1bnNpZ25lZCBtX2luZGV4OwotfTsKLQogdm9pZCBFcnJvckluc3RhbmNlOjpmaW5pc2hDcmVh
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBib29s
IHVzZUN1cnJlbnRGcmFtZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNw
cAppbmRleCA3ZWYwMDA4ZDgzN2NjZjkxMzcxNGYzYTM1YzM5NTUxOTk4YjZmOTdmLi5jOTIwYWNm
NDdlODJjOTUyZThmYjZlMzA3ZDliMGZlM2Y1YTgyYmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKQEAgLTQ5LDcgKzQ5
LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gSW50bERhdGVUaW1lRm9y
bWF0OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxEYXRlVGltZUZvcm1hdCkgfTsKIAorbmFtZXNwYWNl
IEludGxEVEZJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgcmVsZXZhbnRFeHRl
bnNpb25LZXlzWzJdID0geyAiY2EiLCAibnUiIH07Cit9CisKIHN0YXRpYyBjb25zdCBzaXplX3Qg
aW5kZXhPZkV4dGVuc2lvbktleUNhID0gMDsKIHN0YXRpYyBjb25zdCBzaXplX3QgaW5kZXhPZkV4
dGVuc2lvbktleU51ID0gMTsKIApAQCAtMTg5LDYgKzE5Miw3IEBAIHN0YXRpYyBTdHJpbmcgY2Fu
b25pY2FsaXplVGltZVpvbmVOYW1lKGNvbnN0IFN0cmluZyYgdGltZVpvbmVOYW1lKQogICAgIHJl
dHVybiBjYW5vbmljYWw7CiB9CiAKK25hbWVzcGFjZSBJbnRsRFRGSW50ZXJuYWwgewogc3RhdGlj
IFZlY3RvcjxTdHJpbmc+IGxvY2FsZURhdGEoY29uc3QgU3RyaW5nJiBsb2NhbGUsIHNpemVfdCBr
ZXlJbmRleCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBrZXlMb2NhbGVEYXRhOwpAQCAtMzE5LDYg
KzMyMyw3IEBAIHN0YXRpYyBKU09iamVjdCogdG9EYXRlVGltZU9wdGlvbnNBbnlEYXRlKEV4ZWNT
dGF0ZSYgZXhlYywgSlNWYWx1ZSBvcmlnaW5hbE9wdGlvCiAgICAgLy8gOS4gUmV0dXJuIG9wdGlv
bnMuCiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9Cit9CiAKIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0
OjpzZXRGb3JtYXRzRnJvbVBhdHRlcm4oY29uc3QgU3RyaW5nVmlldyYgcGF0dGVybikKIHsKQEAg
LTQzMyw3ICs0MzgsNyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVU
aW1lRm9ybWF0KEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSBsb2NhbAogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKICAgICAvLyA1LiBMZXQgb3B0aW9ucyBiZSBUb0Rh
dGVUaW1lT3B0aW9ucyhvcHRpb25zLCAiYW55IiwgImRhdGUiKS4KLSAgICBKU09iamVjdCogb3B0
aW9ucyA9IHRvRGF0ZVRpbWVPcHRpb25zQW55RGF0ZShleGVjLCBvcmlnaW5hbE9wdGlvbnMpOwor
ICAgIEpTT2JqZWN0KiBvcHRpb25zID0gSW50bERURkludGVybmFsOjp0b0RhdGVUaW1lT3B0aW9u
c0FueURhdGUoZXhlYywgb3JpZ2luYWxPcHRpb25zKTsKICAgICAvLyA2LiBSZXR1cm5JZkFicnVw
dChvcHRpb25zKS4KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCkBA
IC00NTAsNyArNDU1LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRl
VGltZUZvcm1hdChFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUgbG9jYWwKICAgICAvLyAxMS4gTGV0
IGxvY2FsZURhdGEgYmUgdGhlIHZhbHVlIG9mICVEYXRlVGltZUZvcm1hdCUuW1tsb2NhbGVEYXRh
XV0uCiAgICAgLy8gMTIuIExldCByIGJlIFJlc29sdmVMb2NhbGUoICVEYXRlVGltZUZvcm1hdCUu
W1thdmFpbGFibGVMb2NhbGVzXV0sIHJlcXVlc3RlZExvY2FsZXMsIG9wdCwgJURhdGVUaW1lRm9y
bWF0JS5bW3JlbGV2YW50RXh0ZW5zaW9uS2V5c11dLCBsb2NhbGVEYXRhKS4KICAgICBjb25zdCBI
YXNoU2V0PFN0cmluZz4gYXZhaWxhYmxlTG9jYWxlcyA9IGV4ZWMuanNDYWxsZWUoKS0+Z2xvYmFs
T2JqZWN0KCktPmludGxEYXRlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKTsKLSAgICBIYXNo
TWFwPFN0cmluZywgU3RyaW5nPiByZXNvbHZlZCA9IHJlc29sdmVMb2NhbGUoZXhlYywgYXZhaWxh
YmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgbG9jYWxlT3B0LCByZWxldmFudEV4dGVuc2lv
bktleXMsIFdURl9BUlJBWV9MRU5HVEgocmVsZXZhbnRFeHRlbnNpb25LZXlzKSwgbG9jYWxlRGF0
YSk7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcmVzb2x2ZWQgPSByZXNvbHZlTG9jYWxl
KGV4ZWMsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGxvY2FsZU9wdCwgSW50
bERURkludGVybmFsOjpyZWxldmFudEV4dGVuc2lvbktleXMsIFdURl9BUlJBWV9MRU5HVEgoSW50
bERURkludGVybmFsOjpyZWxldmFudEV4dGVuc2lvbktleXMpLCBJbnRsRFRGSW50ZXJuYWw6Omxv
Y2FsZURhdGEpOwogCiAgICAgLy8gMTMuIFNldCBkYXRlVGltZUZvcm1hdC5bW2xvY2FsZV1dIHRv
IHRoZSB2YWx1ZSBvZiByLltbbG9jYWxlXV0uCiAgICAgbV9sb2NhbGUgPSByZXNvbHZlZC5nZXQo
dm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLnN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKaW5kZXggMjI0NzQ3OWJhNDQ4
ZGIxYTRjODE3ZDJmNzdjZmMzYzUyZjNmYzY0Yy4uYzJmYjgzNDYzYTM0NDQ3N2EwZmI0ZWZiNGE0
MzVmZTNlZTc3MjcxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE51bWJlckZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE51bWJlckZvcm1hdC5jcHAKQEAgLTg4LDEyICs4OCwxNCBAQCB2b2lkIEludGxOdW1iZXJG
b3JtYXQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
ICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2JvdW5kRm9ybWF0KTsKIH0KIAorbmFt
ZXNwYWNlIEludGxORkludGVybmFsIHsKIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBsb2NhbGVEYXRh
KGNvbnN0IFN0cmluZyYgbG9jYWxlLCBzaXplX3Qga2V5SW5kZXgpCiB7CiAgICAgLy8gOS4xIElu
dGVybmFsIHNsb3RzIG9mIFNlcnZpY2UgQ29uc3RydWN0b3JzICYgMTEuMi4zIEludGVybmFsIHNs
b3RzIChFQ01BLTQwMiAyLjApCiAgICAgQVNTRVJUX1VOVVNFRChrZXlJbmRleCwgIWtleUluZGV4
KTsgLy8gVGhlIGluZGV4IG9mIHRoZSBleHRlbnNpb24ga2V5ICJudSIgaW4gcmVsZXZhbnRFeHRl
bnNpb25LZXlzIGlzIDAuCiAgICAgcmV0dXJuIG51bWJlcmluZ1N5c3RlbXNGb3JMb2NhbGUobG9j
YWxlKTsKIH0KK30KIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBjb21wdXRlQ3VycmVuY3lTb3J0
S2V5KGNvbnN0IFN0cmluZyYgY3VycmVuY3kpCiB7CkBAIC0xOTIsNyArMTk0LDcgQEAgdm9pZCBJ
bnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgbG9jYWxlcywKICAgICAvLyAxMS4gTGV0IGxvY2FsZURhdGEgYmUgJU51bWJlckZv
cm1hdCUuW1tsb2NhbGVEYXRhXV0uCiAgICAgLy8gMTIuIExldCByIGJlIFJlc29sdmVMb2NhbGUo
JU51bWJlckZvcm1hdCUuW1thdmFpbGFibGVMb2NhbGVzXV0sIHJlcXVlc3RlZExvY2FsZXMsIG9w
dCwgJU51bWJlckZvcm1hdCUuW1tyZWxldmFudEV4dGVuc2lvbktleXNdXSwgbG9jYWxlRGF0YSku
CiAgICAgYXV0byYgYXZhaWxhYmxlTG9jYWxlcyA9IHN0YXRlLmpzQ2FsbGVlKCktPmdsb2JhbE9i
amVjdCgpLT5pbnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOwotICAgIGF1dG8gcmVz
dWx0ID0gcmVzb2x2ZUxvY2FsZShzdGF0ZSwgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9j
YWxlcywgb3B0LCByZWxldmFudEV4dGVuc2lvbktleXMsIFdURl9BUlJBWV9MRU5HVEgocmVsZXZh
bnRFeHRlbnNpb25LZXlzKSwgbG9jYWxlRGF0YSk7CisgICAgYXV0byByZXN1bHQgPSByZXNvbHZl
TG9jYWxlKHN0YXRlLCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHQsIHJl
bGV2YW50RXh0ZW5zaW9uS2V5cywgV1RGX0FSUkFZX0xFTkdUSChyZWxldmFudEV4dGVuc2lvbktl
eXMpLCBJbnRsTkZJbnRlcm5hbDo6bG9jYWxlRGF0YSk7CiAKICAgICAvLyAxMy4gU2V0IG51bWJl
ckZvcm1hdC5bW2xvY2FsZV1dIHRvIHRoZSB2YWx1ZSBvZiByLltbbG9jYWxlXV0uCiAgICAgbV9s
b2NhbGUgPSByZXN1bHQuZ2V0KEFTQ0lJTGl0ZXJhbCgibG9jYWxlIikpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheUNvbnN0cnVjdG9y
cy5jcHAKaW5kZXggMGFiYzUzMDg2OTdlYjI1MzQxZmFkMTJmMDNkZTA4YzBhMWYxNWY0NS4uNzhj
OWU2NDA0ZjFiZjFkMzlkNTY0OGNkNGE0OWVjNDZjMmEwNjAwMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMu
Y3BwCkBAIC0zMiw2ICszMiw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisjdW5kZWYgTUFLRV9T
X0lORk8KICNkZWZpbmUgTUFLRV9TX0lORk8odHlwZSkgXAogICAgIHRlbXBsYXRlPD4gY29uc3Qg
Q2xhc3NJbmZvIEpTIyN0eXBlIyNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyJGdW5jdGlvbiIsICZK
UyMjdHlwZSMjQ29uc3RydWN0b3I6OkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKUyMjdHlwZSMjQ29uc3RydWN0b3IpfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlQcm90b3R5cGVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVByb3RvdHlwZXMuY3Bw
CmluZGV4IDY2ZDc0ZTY5ZWNhNGYxNzI1ZTgyYzEyZWFkM2FkZGUyNGJlOTI5ZmEuLmIxNDM0NTVi
MGQxMWNkMzkyZTUyMWMwYjhiMGE4MmEwMzJhODRiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwCkBAIC0z
NSw2ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogY29uc3QgQ2xhc3NJbmZvIEpTVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGU6OnNfaW5mbyA9IHsiUHJvdG90eXBlIiwgJkpTVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGU6OkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwKICAgICBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUpfTsKIAorI3VuZGVmIE1BS0VfU19J
TkZPCiAjZGVmaW5lIE1BS0VfU19JTkZPKHR5cGUpIFwKICAgICB0ZW1wbGF0ZTw+IGNvbnN0IENs
YXNzSW5mbyBKUyMjdHlwZSMjUHJvdG90eXBlOjpzX2luZm8gPSB7I3R5cGUgIlByb3RvdHlwZSIs
ICZKUyMjdHlwZSMjUHJvdG90eXBlOjpCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlMjI3R5cGUjI1Byb3RvdHlwZSl9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5cy5jcHAKaW5kZXggZDBhOTNjNDI1NTc0
OGU3ZTU4NDFhNjc4ODFhMTEyNGE0NjY5ZDBkNi4uMDkxODlkMmM1Y2E1YjUzNWRhNDMzMzE0Njkz
NGJlY2ZkMzAzZjVjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlZEFycmF5cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlZEFycmF5cy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyN1
bmRlZiBNQUtFX1NfSU5GTwogI2RlZmluZSBNQUtFX1NfSU5GTyh0eXBlKSBcCiAgICAgdGVtcGxh
dGU8PiBjb25zdCBDbGFzc0luZm8gSlMjI3R5cGUjI0FycmF5OjpzX2luZm8gPSB7IFwKICAgICAg
ICAgI3R5cGUgIkFycmF5IiwgJkpTIyN0eXBlIyNBcnJheTo6QmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dWxsR2V0dGVyRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVs
bEdldHRlckZ1bmN0aW9uLmNwcAppbmRleCAzZjZmMjgyMTUzZTA0YjMzYjEwZDkzNDA5NmNkNWIx
NjI0NmYxMGNhLi5iYTQ2YjMwMmM4MmE0MmI3YmY2ZGRkODhmMDQ2ZGU0ODVkODYwMWUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsR2V0dGVyRnVuY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxHZXR0ZXJGdW5jdGlv
bi5jcHAKQEAgLTMzLDE0ICszMywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJ
bmZvIE51bGxHZXR0ZXJGdW5jdGlvbjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE51bGxHZXR0ZXJGdW5j
dGlvbikgfTsKIAorbmFtZXNwYWNlIE51bGxHZXR0ZXJGdW5jdGlvbkludGVybmFsIHsKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZXR1cm5VbmRlZmluZWQoRXhlY1N0
YXRlKikKIHsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQor
fQogCiBDYWxsVHlwZSBOdWxsR2V0dGVyRnVuY3Rpb246OmdldENhbGxEYXRhKEpTQ2VsbCosIENh
bGxEYXRhJiBjYWxsRGF0YSkKIHsKLSAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxs
UmV0dXJuVW5kZWZpbmVkOworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IE51bGxHZXR0
ZXJGdW5jdGlvbkludGVybmFsOjpjYWxsUmV0dXJuVW5kZWZpbmVkOwogICAgIHJldHVybiBDYWxs
VHlwZTo6SG9zdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bGxTZXR0ZXJGdW5jdGlvbi5jcHAKaW5kZXggNTBjNWI4MGRjZjk1YTUzOTBkMWU2MDEwMWVl
YmQ2YjU2NjY1OWYyOC4uNmFmMGQxYTg1ZGYyMGZmMDgxYTk4N2NmZGRkYTY3ZDUxYWI2ZTBlNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVu
Y3Rpb24uY3BwCkBAIC03MCw2ICs3MCw3IEBAIHN0YXRpYyBib29sIGNhbGxlcklzU3RyaWN0KEV4
ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gaXRlci5jYWxsZXJJc1N0cmljdCgpOwogfQogCitu
YW1lc3BhY2UgTnVsbFNldHRlckZ1bmN0aW9uSW50ZXJuYWwgewogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJldHVyblVuZGVmaW5lZChFeGVjU3RhdGUqIGV4ZWMpCiB7
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTc5LDEwICs4MCwxMSBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUmV0dXJuVW5kZWZpbmVkKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJTZXR0aW5nIGEgcHJvcGVydHkgdGhhdCBoYXMgb25seSBh
IGdldHRlciIpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KK30KIAogQ2FsbFR5cGUgTnVsbFNldHRlckZ1bmN0aW9uOjpnZXRDYWxsRGF0YShKU0NlbGwq
LCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7Ci0gICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0g
Y2FsbFJldHVyblVuZGVmaW5lZDsKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBOdWxs
U2V0dGVyRnVuY3Rpb25JbnRlcm5hbDo6Y2FsbFJldHVyblVuZGVmaW5lZDsKICAgICByZXR1cm4g
Q2FsbFR5cGU6Okhvc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL051bWJlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdW1iZXJQcm90b3R5cGUuY3BwCmluZGV4IGMxN2I1ZWJkZmExMmEwZjNlY2I2MmU2NjhhNjY5
ZjNiYWQ3ZTdjNTguLjYxM2NkMDkyNWViNTY3MDE5ZDA0ZDhlNTk0OGZhMjM4Zjk0YjA5NDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNw
cApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL2R0b2EvZG91YmxlLWNvbnZlcnNpb24uaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdURjo6
ZG91YmxlX2NvbnZlcnNpb247Cit1c2luZyBEb3VibGVUb1N0cmluZ0NvbnZlcnRlciA9IFdURjo6
ZG91YmxlX2NvbnZlcnNpb246OkRvdWJsZVRvU3RyaW5nQ29udmVydGVyOwogCiAvLyBUbyBhdm9p
ZCBjb25mbGljdCB3aXRoIFdURjo6U3RyaW5nQnVpbGRlci4KIHR5cGVkZWYgV1RGOjpkb3VibGVf
Y29udmVyc2lvbjo6U3RyaW5nQnVpbGRlciBEb3VibGVDb252ZXJzaW9uU3RyaW5nQnVpbGRlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VEZWZlcnJl
ZFRpbWVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb21pc2VEZWZlcnJl
ZFRpbWVyLmNwcAppbmRleCAzZGNhZWFhZmU1YjM4ZmJhNWJhOGFmOTc2NjBmNTFiYzY1OWZkMjQ1
Li4wODc4MDQ2OTVjZGYzNWE3NDk0YmJkNTg5NDQyOTA0ZWI5Y2E3MDM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9taXNlRGVmZXJyZWRUaW1lci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvbWlzZURlZmVycmVkVGltZXIuY3Bw
CkBAIC0zNCw3ICszNCw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCituYW1lc3BhY2UgUHJvbWlz
ZURlZmVycmVkVGltZXJJbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFs
c2U7Cit9CiAKIFByb21pc2VEZWZlcnJlZFRpbWVyOjpQcm9taXNlRGVmZXJyZWRUaW1lcihWTSYg
dm0pCiAgICAgOiBCYXNlKCZ2bSkKQEAgLTU1LDcgKzU3LDcgQEAgdm9pZCBQcm9taXNlRGVmZXJy
ZWRUaW1lcjo6ZG9Xb3JrKCkKICAgICAgICAgSlNQcm9taXNlRGVmZXJyZWQqIHRpY2tldDsKICAg
ICAgICAgVGFzayB0YXNrOwogICAgICAgICBzdGQ6OnRpZSh0aWNrZXQsIHRhc2spID0gbV90YXNr
cy50YWtlTGFzdCgpOwotICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiRG9pbmcgd29yayBv
biBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworICAgICAgICBkYXRhTG9nTG5JZihQ
cm9taXNlRGVmZXJyZWRUaW1lckludGVybmFsOjp2ZXJib3NlLCAiRG9pbmcgd29yayBvbiBwcm9t
aXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOwogCiAgICAgICAgIC8vIFdlIG1heSBoYXZlIGFs
cmVhZHkgY2FuY2VsZWQgdGhlc2UgcHJvbWlzZXMuCiAgICAgICAgIGlmIChtX3BlbmRpbmdQcm9t
aXNlcy5jb250YWlucyh0aWNrZXQpKSB7CkBAIC0xMDUsMTEgKzEwNywxMSBAQCB2b2lkIFByb21p
c2VEZWZlcnJlZFRpbWVyOjphZGRQZW5kaW5nUHJvbWlzZShKU1Byb21pc2VEZWZlcnJlZCogdGlj
a2V0LCBWZWN0b3I8UwogCiAgICAgYXV0byByZXN1bHQgPSBtX3BlbmRpbmdQcm9taXNlcy5hZGQo
dGlja2V0LCBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+KCkpOwogICAgIGlmIChyZXN1bHQuaXNOZXdF
bnRyeSkgewotICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiQWRkaW5nIG5ldyBwZW5kaW5n
IHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CisgICAgICAgIGRhdGFMb2dMbklmKFBy
b21pc2VEZWZlcnJlZFRpbWVySW50ZXJuYWw6OnZlcmJvc2UsICJBZGRpbmcgbmV3IHBlbmRpbmcg
cHJvbWlzZTogIiwgUmF3UG9pbnRlcih0aWNrZXQpKTsKICAgICAgICAgZGVwZW5kZW5jaWVzLmFw
cGVuZChTdHJvbmc8SlNDZWxsPigqbV92bSwgdGlja2V0KSk7CiAgICAgICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBXVEZNb3ZlKGRlcGVuZGVuY2llcyk7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIkFkZGluZyBuZXcgZGVwZW5kZW5jaWVzIGZvciBwcm9t
aXNlOiAiLCBSYXdQb2ludGVyKHRpY2tldCkpOworICAgICAgICBkYXRhTG9nTG5JZihQcm9taXNl
RGVmZXJyZWRUaW1lckludGVybmFsOjp2ZXJib3NlLCAiQWRkaW5nIG5ldyBkZXBlbmRlbmNpZXMg
Zm9yIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CiAgICAgICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUuYXBwZW5kVmVjdG9yKGRlcGVuZGVuY2llcyk7CiAgICAgfQogCkBAIC0xMjQs
NyArMTI2LDcgQEAgYm9vbCBQcm9taXNlRGVmZXJyZWRUaW1lcjo6Y2FuY2VsUGVuZGluZ1Byb21p
c2UoSlNQcm9taXNlRGVmZXJyZWQqIHRpY2tldCkKICAgICBib29sIHJlc3VsdCA9IG1fcGVuZGlu
Z1Byb21pc2VzLnJlbW92ZSh0aWNrZXQpOwogCiAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgZGF0
YUxvZ0xuSWYodmVyYm9zZSwgIkNhbmNlbGluZyBwcm9taXNlOiAiLCBSYXdQb2ludGVyKHRpY2tl
dCkpOworICAgICAgICBkYXRhTG9nTG5JZihQcm9taXNlRGVmZXJyZWRUaW1lckludGVybmFsOjp2
ZXJib3NlLCAiQ2FuY2VsaW5nIHByb21pc2U6ICIsIFJhd1BvaW50ZXIodGlja2V0KSk7CiAKICAg
ICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVHlwZVByb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5
cGVQcm9maWxlci5jcHAKaW5kZXggZTMxNWM0MTJiOTMzMzBiMDVhZjY2NDA3MGNhMTE2Y2Q1M2U5
MmRiNy4uMGY4NWVmODgyODVjMmU4YjgxZDVmZjAwYmNhYTJiOTljZjZkYzgwYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwCkBAIC0zMiw3ICsz
Miw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCituYW1lc3BhY2UgVHlwZVByb2ZpbGVySW50ZXJu
YWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBUeXBlUHJvZmls
ZXI6OlR5cGVQcm9maWxlcigpCiAgICAgOiBtX25leHRVbmlxdWVWYXJpYWJsZUlEKDEpCkBAIC01
OSw3ICs2MSw3IEBAIHZvaWQgVHlwZVByb2ZpbGVyOjpsb2dUeXBlc0ZvclR5cGVMb2NhdGlvbihU
eXBlTG9jYXRpb24qIGxvY2F0aW9uLCBWTSYgdm0pCiAKIHZvaWQgVHlwZVByb2ZpbGVyOjppbnNl
cnROZXdMb2NhdGlvbihUeXBlTG9jYXRpb24qIGxvY2F0aW9uKQogewotICAgIGlmICh2ZXJib3Nl
KQorICAgIGlmIChUeXBlUHJvZmlsZXJJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxv
Z0YoIlJlZ2lzdGVyaW5nIGxvY2F0aW9uOjogZGl2b3RTdGFydDoldSwgZGl2b3RFbmQ6JXVcbiIs
IGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQsIGxvY2F0aW9uLT5tX2Rpdm90RW5kKTsKIAogICAgIGlm
ICghbV9idWNrZXRNYXAuY29udGFpbnMobG9jYXRpb24tPm1fc291cmNlSUQpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcAppbmRleCA4
NWM0OWQwNDZiYWZlYWM3YzJmZGVhMjE1MjU4ZDNjNDRlZmNkMTE1Li41M2Q3M2U4OGIxNGUzODZi
NzM3OGI4ODI0N2I3NzY5NjRmNmI1N2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHAKQEAgLTM3LDcgKzM3LDkgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKK25hbWVzcGFjZSBUeXBlUHJvZmlsZXJMb2dJbnRlcm5hbCB7CiBzdGF0aWMg
Y29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKIHZvaWQgVHlwZVByb2ZpbGVyTG9nOjpp
bml0aWFsaXplTG9nKCkKIHsKQEAgLTU2LDcgKzU4LDcgQEAgVHlwZVByb2ZpbGVyTG9nOjp+VHlw
ZVByb2ZpbGVyTG9nKCkKIHZvaWQgVHlwZVByb2ZpbGVyTG9nOjpwcm9jZXNzTG9nRW50cmllcyhj
b25zdCBTdHJpbmcmIHJlYXNvbikKIHsKICAgICBkb3VibGUgYmVmb3JlID0gMDsKLSAgICBpZiAo
dmVyYm9zZSkgeworICAgIGlmIChUeXBlUHJvZmlsZXJMb2dJbnRlcm5hbDo6dmVyYm9zZSkgewog
ICAgICAgICBkYXRhTG9nKCJQcm9jZXNzIGNhbGxlcjonIiwgcmVhc29uLCAiJyIpOwogICAgICAg
ICBiZWZvcmUgPSBjdXJyZW50VGltZU1TKCk7CiAgICAgfQpAQCAtOTUsNyArOTcsNyBAQCB2b2lk
IFR5cGVQcm9maWxlckxvZzo6cHJvY2Vzc0xvZ0VudHJpZXMoY29uc3QgU3RyaW5nJiByZWFzb24p
CiAgICAgLy8gcGF1c2VzIGFuZCBjYXVzZXMgdGhlIGNvbGxlY3RvciB0byBtYXJrIHRoZSBsb2cu
CiAgICAgbV9jdXJyZW50TG9nRW50cnlQdHIgPSBtX2xvZ1N0YXJ0UHRyOwogCi0gICAgaWYgKHZl
cmJvc2UpIHsKKyAgICBpZiAoVHlwZVByb2ZpbGVyTG9nSW50ZXJuYWw6OnZlcmJvc2UpIHsKICAg
ICAgICAgZG91YmxlIGFmdGVyID0gY3VycmVudFRpbWVNUygpOwogICAgICAgICBkYXRhTG9nRigi
IFByb2Nlc3NpbmcgdGhlIGxvZyB0b29rOiAnJWYnIG1zXG4iLCBhZnRlciAtIGJlZm9yZSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3Iu
Y3BwCmluZGV4IDAwYWMzYzFhZGJkN2FjODJkMjE1OTBmNjAxMjhiOTRhNDAwYzYyOGUuLmFkN2Q2
MjFlYzg3ODg1YWMwMzZkODEzMTNkNWIwZmEwOTFhNGVmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTc2LDcgKzc2LDkgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIHVzaW5nIG5hbWVzcGFjZSBCMzsKIAog
bmFtZXNwYWNlIHsKLWNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIFdhc21C
M0lSR2VuZXJhdG9ySW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNl
OworfQogfQogCiBjbGFzcyBCM0lSR2VuZXJhdG9yIHsKQEAgLTE1NjYsOSArMTU2OCw5IEBAIEV4
cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiwgU3RyaW5nPiBwYXJzZUFu
ZENvbXBpbGUoQ29tcGlsYXRpb25DCiAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpCiAgICAgICAg
IHZhbGlkYXRlKHByb2NlZHVyZSwgIkFmdGVyIHBhcnNpbmc6XG4iKTsKIAotICAgIGRhdGFMb2dJ
Zih2ZXJib3NlLCAiUHJlIFNTQTogIiwgcHJvY2VkdXJlKTsKKyAgICBkYXRhTG9nSWYoV2FzbUIz
SVJHZW5lcmF0b3JJbnRlcm5hbDo6dmVyYm9zZSwgIlByZSBTU0E6ICIsIHByb2NlZHVyZSk7CiAg
ICAgZml4U1NBKHByb2NlZHVyZSk7Ci0gICAgZGF0YUxvZ0lmKHZlcmJvc2UsICJQb3N0IFNTQTog
IiwgcHJvY2VkdXJlKTsKKyAgICBkYXRhTG9nSWYoV2FzbUIzSVJHZW5lcmF0b3JJbnRlcm5hbDo6
dmVyYm9zZSwgIlBvc3QgU1NBOiAiLCBwcm9jZWR1cmUpOwogICAgIAogICAgIHsKICAgICAgICAg
QjM6OnByZXBhcmVGb3JHZW5lcmF0aW9uKHByb2NlZHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKaW5kZXggNTBmZWI3MzBiMDBmZGQ5ZDBmMDE2ZTM2Njkw
ODEwNzIyZGJhZGIxNS4uMjJlZGQxNjAxM2U1MTk2ZmU3NGFiZGQ4NDBjNmU0YmNjOTc1MGQwYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcApAQCAtNDksNyAr
NDksOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCituYW1lc3BhY2Ug
V2FzbUJCUVBsYW5JbnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7
Cit9CiAKIEJCUVBsYW46OkJCUVBsYW4oVk0qIHZtLCBSZWY8TW9kdWxlSW5mb3JtYXRpb24+IGlu
Zm8sIEFzeW5jV29yayB3b3JrLCBDb21wbGV0aW9uVGFzayYmIHRhc2spCiAgICAgOiBCYXNlKHZt
LCBXVEZNb3ZlKGluZm8pLCBXVEZNb3ZlKHRhc2spKQpAQCAtODYsNyArODgsNyBAQCBjb25zdCBj
aGFyKiBCQlFQbGFuOjpzdGF0ZVN0cmluZyhTdGF0ZSBzdGF0ZSkKIHZvaWQgQkJRUGxhbjo6bW92
ZVRvU3RhdGUoU3RhdGUgc3RhdGUpCiB7CiAgICAgQVNTRVJUKHN0YXRlID49IG1fc3RhdGUpOwot
ICAgIGRhdGFMb2dMbklmKHZlcmJvc2UgJiYgc3RhdGUgIT0gbV9zdGF0ZSwgIm1vdmluZyB0byBz
dGF0ZTogIiwgc3RhdGVTdHJpbmcoc3RhdGUpLCAiIGZyb20gc3RhdGU6ICIsIHN0YXRlU3RyaW5n
KG1fc3RhdGUpKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3Nl
ICYmIHN0YXRlICE9IG1fc3RhdGUsICJtb3ZpbmcgdG8gc3RhdGU6ICIsIHN0YXRlU3RyaW5nKHN0
YXRlKSwgIiBmcm9tIHN0YXRlOiAiLCBzdGF0ZVN0cmluZyhtX3N0YXRlKSk7CiAgICAgbV9zdGF0
ZSA9IHN0YXRlOwogfQogCkBAIC05NSw5ICs5Nyw5IEBAIGJvb2wgQkJRUGxhbjo6cGFyc2VBbmRW
YWxpZGF0ZU1vZHVsZSgpCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkluaXRpYWwpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgInN0YXJ0aW5nIHZh
bGlkYXRpb24iKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3Nl
LCAic3RhcnRpbmcgdmFsaWRhdGlvbiIpOwogICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lOwot
ICAgIGlmICh2ZXJib3NlIHx8IE9wdGlvbnM6OnJlcG9ydENvbXBpbGVUaW1lcygpKQorICAgIGlm
IChXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlIHx8IE9wdGlvbnM6OnJlcG9ydENvbXBpbGVU
aW1lcygpKQogICAgICAgICBzdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAogICAg
IHsKQEAgLTExMSw3ICsxMTMsNyBAQCBib29sIEJCUVBsYW46OnBhcnNlQW5kVmFsaWRhdGVNb2R1
bGUoKQogCiAgICAgY29uc3QgYXV0byYgZnVuY3Rpb25Mb2NhdGlvbnMgPSBtX21vZHVsZUluZm9y
bWF0aW9uLT5mdW5jdGlvbkxvY2F0aW9uSW5CaW5hcnk7CiAgICAgZm9yICh1bnNpZ25lZCBmdW5j
dGlvbkluZGV4ID0gMDsgZnVuY3Rpb25JbmRleCA8IGZ1bmN0aW9uTG9jYXRpb25zLnNpemUoKTsg
KytmdW5jdGlvbkluZGV4KSB7Ci0gICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJQcm9jZXNz
aW5nIGZ1bmN0aW9uIHN0YXJ0aW5nIGF0OiAiLCBmdW5jdGlvbkxvY2F0aW9uc1tmdW5jdGlvbklu
ZGV4XS5zdGFydCwgIiBhbmQgZW5kaW5nIGF0OiAiLCBmdW5jdGlvbkxvY2F0aW9uc1tmdW5jdGlv
bkluZGV4XS5lbmQpOworICAgICAgICBkYXRhTG9nTG5JZihXYXNtQkJRUGxhbkludGVybmFsOjp2
ZXJib3NlLCAiUHJvY2Vzc2luZyBmdW5jdGlvbiBzdGFydGluZyBhdDogIiwgZnVuY3Rpb25Mb2Nh
dGlvbnNbZnVuY3Rpb25JbmRleF0uc3RhcnQsICIgYW5kIGVuZGluZyBhdDogIiwgZnVuY3Rpb25M
b2NhdGlvbnNbZnVuY3Rpb25JbmRleF0uZW5kKTsKICAgICAgICAgY29uc3QgdWludDhfdCogZnVu
Y3Rpb25TdGFydCA9IG1fc291cmNlICsgZnVuY3Rpb25Mb2NhdGlvbnNbZnVuY3Rpb25JbmRleF0u
c3RhcnQ7CiAgICAgICAgIHNpemVfdCBmdW5jdGlvbkxlbmd0aCA9IGZ1bmN0aW9uTG9jYXRpb25z
W2Z1bmN0aW9uSW5kZXhdLmVuZCAtIGZ1bmN0aW9uTG9jYXRpb25zW2Z1bmN0aW9uSW5kZXhdLnN0
YXJ0OwogICAgICAgICBBU1NFUlQoZnVuY3Rpb25MZW5ndGggPD0gbV9zb3VyY2VMZW5ndGgpOwpA
QCAtMTIwLDcgKzEyMiw3IEBAIGJvb2wgQkJRUGxhbjo6cGFyc2VBbmRWYWxpZGF0ZU1vZHVsZSgp
CiAKICAgICAgICAgYXV0byB2YWxpZGF0aW9uUmVzdWx0ID0gdmFsaWRhdGVGdW5jdGlvbihmdW5j
dGlvblN0YXJ0LCBmdW5jdGlvbkxlbmd0aCwgc2lnbmF0dXJlLCBtX21vZHVsZUluZm9ybWF0aW9u
LmdldCgpKTsKICAgICAgICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0KSB7Ci0gICAgICAgICAgICBp
ZiAodmVyYm9zZSkgeworICAgICAgICAgICAgaWYgKFdhc21CQlFQbGFuSW50ZXJuYWw6OnZlcmJv
c2UpIHsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnVuY3Rpb25M
ZW5ndGg7ICsraSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uU3RhcnRbaV0pKSwgIiwgIik7CiAgICAgICAgICAg
ICAgICAgZGF0YUxvZ0xuKCk7CkBAIC0xMzAsNyArMTMyLDcgQEAgYm9vbCBCQlFQbGFuOjpwYXJz
ZUFuZFZhbGlkYXRlTW9kdWxlKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICh2ZXJib3Nl
IHx8IE9wdGlvbnM6OnJlcG9ydENvbXBpbGVUaW1lcygpKQorICAgIGlmIChXYXNtQkJRUGxhbklu
dGVybmFsOjp2ZXJib3NlIHx8IE9wdGlvbnM6OnJlcG9ydENvbXBpbGVUaW1lcygpKQogICAgICAg
ICBkYXRhTG9nTG4oIlRvb2sgIiwgKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lKS5t
aWNyb3NlY29uZHMoKSwgIiB1cyB0byB2YWxpZGF0ZSBtb2R1bGUiKTsKIAogICAgIG1vdmVUb1N0
YXRlKFN0YXRlOjpWYWxpZGF0ZWQpOwpAQCAtMTQyLDcgKzE0NCw3IEBAIGJvb2wgQkJRUGxhbjo6
cGFyc2VBbmRWYWxpZGF0ZU1vZHVsZSgpCiB2b2lkIEJCUVBsYW46OnByZXBhcmUoKQogewogICAg
IEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpWYWxpZGF0ZWQpOwotICAgIGRhdGFMb2dMbklmKHZl
cmJvc2UsICJTdGFydGluZyBwcmVwYXJhdGlvbiIpOworICAgIGRhdGFMb2dMbklmKFdhc21CQlFQ
bGFuSW50ZXJuYWw6OnZlcmJvc2UsICJTdGFydGluZyBwcmVwYXJhdGlvbiIpOwogCiAgICAgYXV0
byB0cnlSZXNlcnZlQ2FwYWNpdHkgPSBbdGhpc10gKGF1dG8mIHZlY3Rvciwgc2l6ZV90IHNpemUs
IGNvbnN0IGNoYXIqIHdoYXQpIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCF2ZWN0b3IudHJ5UmVz
ZXJ2ZUNhcGFjaXR5KHNpemUpKSkgewpAQCAtMTc0LDcgKzE3Niw3IEBAIHZvaWQgQkJRUGxhbjo6
cHJlcGFyZSgpCiAgICAgICAgIGlmIChpbXBvcnQtPmtpbmQgIT0gRXh0ZXJuYWxLaW5kOjpGdW5j
dGlvbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB1bnNpZ25lZCBpbXBvcnRGdW5j
dGlvbkluZGV4ID0gbV93YXNtVG9XYXNtRXhpdFN0dWJzLnNpemUoKTsKLSAgICAgICAgZGF0YUxv
Z0xuSWYodmVyYm9zZSwgIlByb2Nlc3NpbmcgaW1wb3J0IGZ1bmN0aW9uIG51bWJlciAiLCBpbXBv
cnRGdW5jdGlvbkluZGV4LCAiOiAiLCBtYWtlU3RyaW5nKGltcG9ydC0+bW9kdWxlKSwgIjogIiwg
bWFrZVN0cmluZyhpbXBvcnQtPmZpZWxkKSk7CisgICAgICAgIGRhdGFMb2dMbklmKFdhc21CQlFQ
bGFuSW50ZXJuYWw6OnZlcmJvc2UsICJQcm9jZXNzaW5nIGltcG9ydCBmdW5jdGlvbiBudW1iZXIg
IiwgaW1wb3J0RnVuY3Rpb25JbmRleCwgIjogIiwgbWFrZVN0cmluZyhpbXBvcnQtPm1vZHVsZSks
ICI6ICIsIG1ha2VTdHJpbmcoaW1wb3J0LT5maWVsZCkpOwogICAgICAgICBhdXRvIGJpbmRpbmcg
PSB3YXNtVG9XYXNtKGltcG9ydEZ1bmN0aW9uSW5kZXgpOwogICAgICAgICBpZiAoVU5MSUtFTFko
IWJpbmRpbmcpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGJpbmRpbmcuZXJyb3IoKSkgewpAQCAt
MjMwLDcgKzIzMiw3IEBAIHB1YmxpYzoKIHZvaWQgQkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9ucyhD
b21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPj0gU3RhdGU6
OlByZXBhcmVkKTsKLSAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiU3RhcnRpbmcgY29tcGlsYXRp
b24iKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlLCAiU3Rh
cnRpbmcgY29tcGlsYXRpb24iKTsKIAogICAgIGlmICghaGFzV29yaygpKQogICAgICAgICByZXR1
cm47CkBAIC0yOTQsNyArMjk2LDcgQEAgdm9pZCBCQlFQbGFuOjpjb21waWxlRnVuY3Rpb25zKENv
bXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKIHZvaWQgQkJRUGxhbjo6Y29tcGxldGUoY29uc3QgQWJz
dHJhY3RMb2NrZXImIGxvY2tlcikKIHsKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6Q29t
cGlsZWQgfHwgbV9jdXJyZW50SW5kZXggPj0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+ZnVuY3Rpb25M
b2NhdGlvbkluQmluYXJ5LnNpemUoKSk7Ci0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIlN0YXJ0
aW5nIENvbXBsZXRpb24iKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtQkJRUGxhbkludGVybmFsOjp2
ZXJib3NlLCAiU3RhcnRpbmcgQ29tcGxldGlvbiIpOwogCiAgICAgaWYgKCFmYWlsZWQoKSAmJiBt
X3N0YXRlID09IFN0YXRlOjpDb21waWxlZCkgewogICAgICAgICBmb3IgKHVpbnQzMl90IGZ1bmN0
aW9uSW5kZXggPSAwOyBmdW5jdGlvbkluZGV4IDwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+ZnVuY3Rp
b25Mb2NhdGlvbkluQmluYXJ5LnNpemUoKTsgZnVuY3Rpb25JbmRleCsrKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCmlu
ZGV4IGU4NmZkNDc5OTBlODg4OGQyNmZkZGZhNzM5NGU0NzZhYmNjODAxODQuLjJiMWQ4MjhlMjdj
NzUzNTBmZGQ5NGZjMTk1Y2U2NGQ3YzFlYzVhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCkBAIC00Miw4ICs0Miwx
MCBAQAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAogbmFtZXNwYWNlIHsKK25h
bWVzcGFjZSBXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJv
b2wgdmVyYm9zZSA9IGZhbHNlOwogfQorfQogCiBzdGF0aWMgU3RhdGljTG9jayBjb2RlTG9jYXRp
b25zTG9jazsKIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxzdGQ6OnR1cGxlPHZv
aWQqLCB2b2lkKj4+PiBjb2RlTG9jYXRpb25zOyAvLyAoc3RhcnQsIGVuZCkKQEAgLTU1LDMzICs1
NywzMyBAQCBzdGF0aWMgYm9vbCBmYXN0SGFuZGxlckluc3RhbGxlZCB7IGZhbHNlIH07CiBzdGF0
aWMgU2lnbmFsQWN0aW9uIHRyYXBIYW5kbGVyKFNpZ25hbCwgU2lnSW5mbyYgc2lnSW5mbywgUGxh
dGZvcm1SZWdpc3RlcnMmIGNvbnRleHQpCiB7CiAgICAgdm9pZCogZmF1bHRpbmdJbnN0cnVjdGlv
biA9IE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIoY29udGV4dCk7Ci0gICAgZGF0
YUxvZ0xuSWYodmVyYm9zZSwgInN0YXJ0aW5nIGhhbmRsZXIgZm9yIGZhdWx0IGF0OiAiLCBSYXdQ
b2ludGVyKGZhdWx0aW5nSW5zdHJ1Y3Rpb24pKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtRmF1bHRT
aWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJzdGFydGluZyBoYW5kbGVyIGZvciBmYXVs
dCBhdDogIiwgUmF3UG9pbnRlcihmYXVsdGluZ0luc3RydWN0aW9uKSk7CiAKLSAgICBkYXRhTG9n
TG5JZih2ZXJib3NlLCAiSklUIG1lbW9yeSBzdGFydDogIiwgUmF3UG9pbnRlcihyZWludGVycHJl
dF9jYXN0PHZvaWQqPihzdGFydE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCkpLCAiIGVuZDog
IiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihlbmRPZkZpeGVkRXhlY3V0YWJs
ZU1lbW9yeVBvb2wpKSk7CisgICAgZGF0YUxvZ0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlcklu
dGVybmFsOjp2ZXJib3NlLCAiSklUIG1lbW9yeSBzdGFydDogIiwgUmF3UG9pbnRlcihyZWludGVy
cHJldF9jYXN0PHZvaWQqPihzdGFydE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCkpLCAiIGVu
ZDogIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihlbmRPZkZpeGVkRXhlY3V0
YWJsZU1lbW9yeVBvb2wpKSk7CiAgICAgLy8gRmlyc3Qgd2UgbmVlZCB0byBtYWtlIHN1cmUgd2Ug
YXJlIGluIEpJVCBjb2RlIGJlZm9yZSB3ZSBjYW4gYXF1aXJlIGFueSBsb2Nrcy4gT3RoZXJ3aXNl
LAogICAgIC8vIHdlIG1pZ2h0IGhhdmUgY3Jhc2hlZCBpbiBjb2RlIHRoYXQgaXMgYWxyZWFkeSBo
b2xkaW5nIG9uZSBvZiB0aGUgbG9ja3Mgd2Ugd2FudCB0byBhcXVpcmUuCiAgICAgaWYgKGlzSklU
UEMoZmF1bHRpbmdJbnN0cnVjdGlvbikpIHsKICAgICAgICAgYm9vbCBmYXVsdGVkSW5BY3RpdmVG
YXN0TWVtb3J5ID0gZmFsc2U7CiAgICAgICAgIHsKICAgICAgICAgICAgIHZvaWQqIGZhdWx0aW5n
QWRkcmVzcyA9IHNpZ0luZm8uZmF1bHRpbmdBZGRyZXNzOwotICAgICAgICAgICAgZGF0YUxvZ0xu
SWYodmVyYm9zZSwgImNoZWNraW5nIGZhdWx0aW5nIGFkZHJlc3M6ICIsIFJhd1BvaW50ZXIoZmF1
bHRpbmdBZGRyZXNzKSwgIiBpcyBpbiBhbiBhY3RpdmUgZmFzdCBtZW1vcnkiKTsKKyAgICAgICAg
ICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwg
ImNoZWNraW5nIGZhdWx0aW5nIGFkZHJlc3M6ICIsIFJhd1BvaW50ZXIoZmF1bHRpbmdBZGRyZXNz
KSwgIiBpcyBpbiBhbiBhY3RpdmUgZmFzdCBtZW1vcnkiKTsKICAgICAgICAgICAgIGZhdWx0ZWRJ
bkFjdGl2ZUZhc3RNZW1vcnkgPSBXYXNtOjpNZW1vcnk6OmFkZHJlc3NJc0luQWN0aXZlRmFzdE1l
bW9yeShmYXVsdGluZ0FkZHJlc3MpOwogICAgICAgICB9CiAgICAgICAgIGlmIChmYXVsdGVkSW5B
Y3RpdmVGYXN0TWVtb3J5KSB7Ci0gICAgICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiZm91
bmQgYWN0aXZlIGZhc3QgbWVtb3J5IGZvciBmYXVsdGluZyBhZGRyZXNzIik7CisgICAgICAgICAg
ICBkYXRhTG9nTG5JZihXYXNtRmF1bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJm
b3VuZCBhY3RpdmUgZmFzdCBtZW1vcnkgZm9yIGZhdWx0aW5nIGFkZHJlc3MiKTsKICAgICAgICAg
ICAgIExvY2tIb2xkZXIgbG9ja2VyKGNvZGVMb2NhdGlvbnNMb2NrKTsKICAgICAgICAgICAgIGZv
ciAoYXV0byByYW5nZSA6IGNvZGVMb2NhdGlvbnMuZ2V0KCkpIHsKICAgICAgICAgICAgICAgICB2
b2lkKiBzdGFydDsKICAgICAgICAgICAgICAgICB2b2lkKiBlbmQ7CiAgICAgICAgICAgICAgICAg
c3RkOjp0aWUoc3RhcnQsIGVuZCkgPSByYW5nZTsKLSAgICAgICAgICAgICAgICBkYXRhTG9nTG5J
Zih2ZXJib3NlLCAiZnVuY3Rpb24gc3RhcnQ6ICIsIFJhd1BvaW50ZXIoc3RhcnQpLCAiIGVuZDog
IiwgUmF3UG9pbnRlcihlbmQpKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihXYXNtRmF1
bHRTaWduYWxIYW5kbGVySW50ZXJuYWw6OnZlcmJvc2UsICJmdW5jdGlvbiBzdGFydDogIiwgUmF3
UG9pbnRlcihzdGFydCksICIgZW5kOiAiLCBSYXdQb2ludGVyKGVuZCkpOwogICAgICAgICAgICAg
ICAgIGlmIChzdGFydCA8PSBmYXVsdGluZ0luc3RydWN0aW9uICYmIGZhdWx0aW5nSW5zdHJ1Y3Rp
b24gPCBlbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgImZv
dW5kIG1hdGNoIik7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21GYXVsdFNp
Z25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZvdW5kIG1hdGNoIik7CiAgICAgICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBleGNlcHRpb25TdHViID0gVGh1bmtzOjpz
aW5nbGV0b24oKS5leGlzdGluZ1N0dWIodGhyb3dFeGNlcHRpb25Gcm9tV2FzbVRodW5rR2VuZXJh
dG9yKTsKICAgICAgICAgICAgICAgICAgICAgLy8gSWYgZm9yIHdoYXRldmVyIHJlYXNvbiB3ZSBk
b24ndCBoYXZlIGEgc3R1YiB0aGVuIHdlIHNob3VsZCBqdXN0IHRyZWF0IHRoaXMgbGlrZSBhIHJl
Z3VsYXIgY3Jhc2guCiAgICAgICAgICAgICAgICAgICAgIGlmICghZXhjZXB0aW9uU3R1YikKICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
TG5JZih2ZXJib3NlLCAiZm91bmQgc3R1YjogIiwgUmF3UG9pbnRlcihleGNlcHRpb25TdHViLmNv
ZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dM
bklmKFdhc21GYXVsdFNpZ25hbEhhbmRsZXJJbnRlcm5hbDo6dmVyYm9zZSwgImZvdW5kIHN0dWI6
ICIsIFJhd1BvaW50ZXIoZXhjZXB0aW9uU3R1Yi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkp
OwogICAgICAgICAgICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6YXJndW1lbnRQb2ludGVyPDE+
KGNvbnRleHQpID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oRXhjZXB0aW9uVHlwZTo6T3V0T2ZC
b3VuZHNNZW1vcnlBY2Nlc3MpOwogICAgICAgICAgICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6
aW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRleHQpID0gZXhjZXB0aW9uU3R1Yi5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNpZ25hbEFjdGlvbjo6
SGFuZGxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQ
bGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAppbmRl
eCA1OTE4ZjkyYmI4MGJiZGVlNTQwMTA0NzEzMWQ4MzJiZDE5NmJmNzViLi43NGNmNjUzNDk3NTI1
Y2UyNjFkNDBjNzJjNDYyM2FjZDgwZjY1Y2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU9NR1BsYW4uY3BwCkBAIC00Nyw3ICs0Nyw5IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgV2FzbSB7CiAKK25hbWVzcGFjZSBXYXNtT01HUGxhbkludGVybmFsIHsKIHN0YXRp
YyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogT01HUGxhbjo6T01HUGxhbihSZWY8
TW9kdWxlPiBtb2R1bGUsIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIE1lbW9yeU1vZGUgbW9kZSwg
Q29tcGxldGlvblRhc2smJiB0YXNrKQogICAgIDogQmFzZShudWxscHRyLCBtYWtlUmVmKGNvbnN0
X2Nhc3Q8TW9kdWxlSW5mb3JtYXRpb24mPihtb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkpKSwg
V1RGTW92ZSh0YXNrKSkKQEAgLTU4LDcgKzYwLDcgQEAgT01HUGxhbjo6T01HUGxhbihSZWY8TW9k
dWxlPiBtb2R1bGUsIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIE1lbW9yeU1vZGUgbW9kZSwgQ28K
ICAgICBzZXRNb2RlKG1vZGUpOwogICAgIEFTU0VSVChtX2NvZGVCbG9jay0+cnVubmFibGUoKSk7
CiAgICAgQVNTRVJUKG1fY29kZUJsb2NrLnB0cigpID09IG1fbW9kdWxlLT5jb2RlQmxvY2tGb3Io
bV9tb2RlKSk7Ci0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIlN0YXJ0aW5nIE9NRyBwbGFuIGZv
ciAiLCBmdW5jdGlvbkluZGV4LCAiIG9mIG1vZHVsZTogIiwgUmF3UG9pbnRlcigmbV9tb2R1bGUu
Z2V0KCkpKTsKKyAgICBkYXRhTG9nTG5JZihXYXNtT01HUGxhbkludGVybmFsOjp2ZXJib3NlLCAi
U3RhcnRpbmcgT01HIHBsYW4gZm9yICIsIGZ1bmN0aW9uSW5kZXgsICIgb2YgbW9kdWxlOiAiLCBS
YXdQb2ludGVyKCZtX21vZHVsZS5nZXQoKSkpOwogfQogCiB2b2lkIE9NR1BsYW46OndvcmsoQ29t
cGlsYXRpb25FZmZvcnQpCkBAIC0xMzgsOSArMTQwLDkgQEAgdm9pZCBPTUdQbGFuOjp3b3JrKENv
bXBpbGF0aW9uRWZmb3J0KQogCiAgICAgICAgIGF1dG8gcmVwYXRjaENhbGxzID0gWyZdIChjb25z
dCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mICBjYWxsc2l0ZXMpIHsKICAgICAgICAg
ICAgIGZvciAoYXV0byYgY2FsbCA6IGNhbGxzaXRlcykgewotICAgICAgICAgICAgICAgIGRhdGFM
b2dMbklmKHZlcmJvc2UsICJDb25zaWRlcmluZyByZXBhdGNoaW5nIGNhbGwgYXQ6ICIsIFJhd1Bv
aW50ZXIoY2FsbC5jYWxsTG9jYXRpb24uZGF0YUxvY2F0aW9uKCkpLCAiIHRoYXQgdGFyZ2V0cyAi
LCBjYWxsLmZ1bmN0aW9uSW5kZXhTcGFjZSk7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYo
V2FzbU9NR1BsYW5JbnRlcm5hbDo6dmVyYm9zZSwgIkNvbnNpZGVyaW5nIHJlcGF0Y2hpbmcgY2Fs
bCBhdDogIiwgUmF3UG9pbnRlcihjYWxsLmNhbGxMb2NhdGlvbi5kYXRhTG9jYXRpb24oKSksICIg
dGhhdCB0YXJnZXRzICIsIGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlKTsKICAgICAgICAgICAgICAg
ICBpZiAoY2FsbC5mdW5jdGlvbkluZGV4U3BhY2UgPT0gZnVuY3Rpb25JbmRleFNwYWNlKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJSZXBhdGNoaW5nIGNhbGwg
YXQ6ICIsIFJhd1BvaW50ZXIoY2FsbC5jYWxsTG9jYXRpb24uZGF0YUxvY2F0aW9uKCkpLCAiIHRv
ICIsIFJhd1BvaW50ZXIoZW50cnlwb2ludCkpOworICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
TG5JZihXYXNtT01HUGxhbkludGVybmFsOjp2ZXJib3NlLCAiUmVwYXRjaGluZyBjYWxsIGF0OiAi
LCBSYXdQb2ludGVyKGNhbGwuY2FsbExvY2F0aW9uLmRhdGFMb2NhdGlvbigpKSwgIiB0byAiLCBS
YXdQb2ludGVyKGVudHJ5cG9pbnQpKTsKICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OnJlcGF0Y2hOZWFyQ2FsbChjYWxsLmNhbGxMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwo
ZW50cnlwb2ludCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTE1Niw3
ICsxNTgsNyBAQCB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGlsYXRpb25FZmZvcnQpCiAgICAgICAg
IHJlcGF0Y2hDYWxscyh1bmxpbmtlZENhbGxzKTsKICAgICB9CiAKLSAgICBkYXRhTG9nTG5JZih2
ZXJib3NlLCAiRmluaXNoZWQgd2l0aCB0aWVyIHVwIGNvdW50IGF0OiAiLCBtX2NvZGVCbG9jay0+
dGllclVwQ291bnQobV9mdW5jdGlvbkluZGV4KS5jb3VudCgpKTsKKyAgICBkYXRhTG9nTG5JZihX
YXNtT01HUGxhbkludGVybmFsOjp2ZXJib3NlLCAiRmluaXNoZWQgd2l0aCB0aWVyIHVwIGNvdW50
IGF0OiAiLCBtX2NvZGVCbG9jay0+dGllclVwQ291bnQobV9mdW5jdGlvbkluZGV4KS5jb3VudCgp
KTsKICAgICBjb21wbGV0ZShob2xkTG9jayhtX2xvY2spKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVBsYW4uY3BwCmluZGV4IDE0ODNhYzc0ODkyYjJmMTY0MmE2Y2IzNjBiYzY0
OTg3YmNmNWYxMWYuLmJhMjdjZjlmOTZmNTU1MGYyZjQ4MTJlMDkxMjRiNWJmODEwMDVhY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKQEAgLTQ3LDcgKzQ3LDkgQEAK
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAorbmFtZXNwYWNlIFdhc21QbGFu
SW50ZXJuYWwgewogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiBQbGFu
OjpQbGFuKFZNKiB2bSwgUmVmPE1vZHVsZUluZm9ybWF0aW9uPiBpbmZvLCBDb21wbGV0aW9uVGFz
ayYmIHRhc2spCiAgICAgOiBtX21vZHVsZUluZm9ybWF0aW9uKFdURk1vdmUoaW5mbykpCkBAIC0x
MjgsNyArMTMwLDcgQEAgYm9vbCBQbGFuOjp0cnlSZW1vdmVWTUFuZENhbmNlbElmTGFzdChWTSYg
dm0pCiAKIHZvaWQgUGxhbjo6ZmFpbChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBTdHJp
bmcmJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgImZhaWxpbmcg
d2l0aCBtZXNzYWdlOiAiLCBlcnJvck1lc3NhZ2UpOworICAgIGRhdGFMb2dMbklmKFdhc21QbGFu
SW50ZXJuYWw6OnZlcmJvc2UsICJmYWlsaW5nIHdpdGggbWVzc2FnZTogIiwgZXJyb3JNZXNzYWdl
KTsKICAgICBtX2Vycm9yTWVzc2FnZSA9IFdURk1vdmUoZXJyb3JNZXNzYWdlKTsKICAgICBjb21w
bGV0ZShsb2NrZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVNpZ25hdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0
dXJlLmNwcAppbmRleCBiMjI5OGQ2NWNiYWI4ZDUwYmU4N2UwMjJkYTQzYmI2MjJjNThmZTdiLi44
YjYwMGVkMzg2NDQzMTI4ODJmMTNjNWY0OWZjOGZkOWU2NzkyOTc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcApAQCAtMzYsNyArMzYsOSBAQAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAogbmFtZXNwYWNlIHsKLWNvbnN0IGJvb2wg
dmVyYm9zZSA9IGZhbHNlOworbmFtZXNwYWNlIFdhc21TaWduYXR1cmVJbnRlcm5hbCB7CitzdGF0
aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiB9CiAKIFN0cmluZyBTaWduYXR1cmU6
OnRvU3RyaW5nKCkgY29uc3QKQEAgLTEwMyw3ICsxMDUsNyBAQCBzdGQ6OnBhaXI8U2lnbmF0dXJl
SW5kZXgsIFJlZjxTaWduYXR1cmU+PiBTaWduYXR1cmVJbmZvcm1hdGlvbjo6YWRvcHQoUmVmPFNp
Z25hdAogICAgICAgICArK2luZm8ubV9uZXh0SW5kZXg7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGluZm8ubV9uZXh0SW5kZXggPiBuZXh0VmFsdWUpOyAvLyBjcmFzaCBvbiBvdmVyZmxvdy4KICAg
ICAgICAgQVNTRVJUKG5leHRWYWx1ZSA9PSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKLSAg
ICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGlmIChXYXNtU2lnbmF0dXJlSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nTG4oIkFkb3B0IG5ldyBzaWduYXR1cmUgIiwgc2ln
bmF0dXJlLmdldCgpLCAiIHdpdGggaW5kZXggIiwgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSwg
IiBoYXNoOiAiLCBzaWduYXR1cmUtPmhhc2goKSk7CiAKICAgICAgICAgYXV0byBhZGRSZXN1bHQg
PSBpbmZvLm1faW5kZXhNYXAuYWRkKG5leHRWYWx1ZSwgc2lnbmF0dXJlLmNvcHlSZWYoKSk7CkBA
IC0xMTEsNyArMTEzLDcgQEAgc3RkOjpwYWlyPFNpZ25hdHVyZUluZGV4LCBSZWY8U2lnbmF0dXJl
Pj4gU2lnbmF0dXJlSW5mb3JtYXRpb246OmFkb3B0KFJlZjxTaWduYXQKICAgICAgICAgQVNTRVJU
KGluZm8ubV9pbmRleE1hcC5zaXplKCkgPT0gaW5mby5tX3NpZ25hdHVyZU1hcC5zaXplKCkpOwog
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIobmV4dFZhbHVlLCBXVEZNb3ZlKHNpZ25hdHVy
ZSkpOwogICAgIH0KLSAgICBpZiAodmVyYm9zZSkKKyAgICBpZiAoV2FzbVNpZ25hdHVyZUludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nTG4oIkV4aXN0aW5nIHNpZ25hdHVyZSAiLCBz
aWduYXR1cmUuZ2V0KCksICIgd2l0aCBpbmRleCAiLCBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
LCAiIGhhc2g6ICIsIHNpZ25hdHVyZS0+aGFzaCgpKTsKICAgICBBU1NFUlQoYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSAhPSBTaWduYXR1cmU6OmludmFsaWRJbmRleCk7CiAgICAgQVNTRVJUKGlu
Zm8ubV9pbmRleE1hcC5jb250YWlucyhhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcAppbmRleCA3NmE4N2FjMWI0
NzM2ZjNjZjM3YzM1MzlkYmM5NjFmNjc4NmEwMTM0Li45YzViNjg0NGM0NmI3NGYwMjZlMGQ4NTZi
NDE5Y2U5NzVjNjAwOTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtV29ya2xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3Jr
bGlzdC5jcHAKQEAgLTMzLDcgKzMzLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBX
YXNtIHsKIAorbmFtZXNwYWNlIFdhc21Xb3JrbGlzdEludGVybmFsIHsKIHN0YXRpYyBjb25zdCBi
b29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogY29uc3QgY2hhciogV29ya2xpc3Q6OnByaW9yaXR5
U3RyaW5nKFByaW9yaXR5IHByaW9yaXR5KQogewpAQCAtMTQ0LDcgKzE0Niw3IEBAIHZvaWQgV29y
a2xpc3Q6OmVucXVldWUoUmVmPFBsYW4+IHBsYW4pCiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VE
KGVsZW1lbnQsIGVsZW1lbnQucGxhbi5nZXQoKSAhPSAmcGxhbi5nZXQoKSk7CiAgICAgfQogCi0g
ICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIkVucXVldWluZyBwbGFuIik7CisgICAgZGF0YUxvZ0xu
SWYoV2FzbVdvcmtsaXN0SW50ZXJuYWw6OnZlcmJvc2UsICJFbnF1ZXVpbmcgcGxhbiIpOwogICAg
IG1fcXVldWUuZW5xdWV1ZSh7IFByaW9yaXR5OjpQcmVwYXJhdGlvbiwgbmV4dFRpY2tldCgpLCAg
V1RGTW92ZShwbGFuKSB9KTsKICAgICBtX3BsYW5FbnF1ZXVlZC0+bm90aWZ5T25lKGxvY2tlcik7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2dlbmVyYXRlLXVuaWZpZWQtc291cmNlLWJ1bmRs
ZXMucmIgYi9Tb3VyY2UvV1RGL2dlbmVyYXRlLXVuaWZpZWQtc291cmNlLWJ1bmRsZXMucmIKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGZmZWRlYTdjMTE2MjFhODc4YzhjMWI5NTgxMGJhY2JhNzFmNThjZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XVEYvZ2VuZXJhdGUtdW5pZmllZC1zb3VyY2UtYnVuZGxlcy5y
YgpAQCAtMCwwICsxLDE0MSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworcmVxdWlyZSAnZmlsZXV0aWxzJworcmVxdWlyZSAncGF0aG5hbWUnCityZXF1aXJlICdnZXRv
cHRsb25nJworCitTQ1JJUFRfTkFNRSA9IEZpbGUuYmFzZW5hbWUoJDApCisKK2RlZiB1c2FnZQor
ICAgIHB1dHMgInVzYWdlOiAje1NDUklQVF9OQU1FfSBbb3B0aW9uc10gLXAgPGRlc2luYXRpb24t
cGF0aD4gPHNvdXJjZS1maWxlPiBbPHNvdXJjZS1maWxlPi4uLl0iCisgICAgcHV0cyAiLS1oZWxw
ICAgICAgICAgICAgICAgICAgICAgICAgICAoLWgpIFByaW50IHRoaXMgbWVzc2FnZSIKKyAgICBw
dXRzICItLWRlcml2ZWQtc291cmNlcy1wYXRoICAgICAgICAgICgtcCkgUGF0aCB0byB0aGUgZGly
ZWN0b3J5IHdoZXJlIHRoZSB1bmlmaWVkIHNvdXJjZSBmaWxlcyBzaG91bGQgYmUgcGxhY2VkLiBU
aGlzIGFyZ3VtZW50IGlzIHJlcXVpcmVkLiIKKyAgICBwdXRzICItLXZlcmJvc2UgICAgICAgICAg
ICAgICAgICAgICAgICgtdikgQWRkcyBleHRyYSBsb2dnaW5nIHRvIHN0ZGVyci4iCisgICAgZXhp
dCAxCitlbmQKKworTUFYX0JVTkRMRV9TSVpFID0gOAorJGRlcml2ZWRTb3VyY2VzUGF0aCA9IG5p
bAorJHZlcmJvc2UgPSBmYWxzZQorIyBGSVhNRTogVXNlIHRoZXNlIHdoZW4gWGNvZGUgdXNlcyB1
bmlmaWVkIHNvdXJjZXMuCiskbWF4Q3BwQnVuZGxlQ291bnQgPSAxMDAwMDAKKyRtYXhPYmpDQnVu
ZGxlQ291bnQgPSAxMDAwMDAKKworR2V0b3B0TG9uZy5uZXcoWyctLWhlbHAnLCAnLWgnLCBHZXRv
cHRMb25nOjpOT19BUkdVTUVOVF0sCisgICAgICAgICAgICAgICBbJy0tZGVyaXZlZC1zb3VyY2Vz
LXBhdGgnLCAnLXAnLCBHZXRvcHRMb25nOjpSRVFVSVJFRF9BUkdVTUVOVF0sCisgICAgICAgICAg
ICAgICBbJy0tdmVyYm9zZScsICctdicsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKKyAgICAg
ICAgICAgICAgIFsnLS1tYXgtY3BwLWJ1bmRsZS1jb3VudCcsIEdldG9wdExvbmc6OlJFUVVJUkVE
X0FSR1VNRU5UXSwKKyAgICAgICAgICAgICAgIFsnLS1tYXgtb2JqLWMtYnVuZGxlLWNvdW50Jywg
R2V0b3B0TG9uZzo6UkVRVUlSRURfQVJHVU1FTlRdKS5lYWNoIHsKKyAgICB8IG9wdCwgYXJnIHwK
KyAgICBjYXNlIG9wdAorICAgIHdoZW4gJy0taGVscCcKKyAgICAgICAgdXNhZ2UKKyAgICB3aGVu
ICctLWRlcml2ZWQtc291cmNlcy1wYXRoJworICAgICAgICAkZGVyaXZlZFNvdXJjZXNQYXRoID0g
UGF0aG5hbWUubmV3KGFyZykKKyAgICB3aGVuICctLXZlcmJvc2UnCisgICAgICAgICR2ZXJib3Nl
ID0gdHJ1ZQorICAgIHdoZW4gJy0tbWF4LWNwcC1idW5kbGUtY291bnQnCisgICAgICAgICRtYXhD
cHBCdW5kbGVDb3VudCA9IGFyZworICAgIHdoZW4gJy0tbWF4LW9iai1jLWJ1bmRsZS1jb3VudCcK
KyAgICAgICAgJG1heE9iakNCdW5kbGVDb3VudCA9IGFyZworICAgIGVuZAorfQorCit1c2FnZSBp
ZiAhJGRlcml2ZWRTb3VyY2VzUGF0aCB8fCBBUkdWLmVtcHR5PworCitkZWYgbG9nKHRleHQpCisg
ICAgJHN0ZGVyci5wdXRzIHRleHQgaWYgJHZlcmJvc2UKK2VuZAorCiskZ2VuZXJhdGVkU291cmNl
cyA9IFtdCisKK2NsYXNzIEJ1bmRsZU1hbmFnZXIKKyAgICBhdHRyX3JlYWRlciA6YnVuZGxlQ291
bnQsIDpleHRlbnNpb24sIDpmaWxlQ291bnQsIDpjdXJyZW50QnVuZGxlVGV4dAorCisgICAgZGVm
IGluaXRpYWxpemUoZXh0ZW5zaW9uKQorICAgICAgICBAZXh0ZW5zaW9uID0gZXh0ZW5zaW9uCisg
ICAgICAgIEBmaWxlQ291bnQgPSAwCisgICAgICAgIEBidW5kbGVDb3VudCA9IDAKKyAgICAgICAg
QGN1cnJlbnRCdW5kbGVUZXh0ID0gIiIKKyAgICBlbmQKKworICAgIGRlZiBmbHVzaAorICAgICAg
ICAjIE5vIHBvaW50IGluIHdyaXRpbmcgYW4gZW1wdHkgYnVuZGxlIGZpbGUKKyAgICAgICAgcmV0
dXJuIGlmIEBjdXJyZW50QnVuZGxlVGV4dCA9PSAiIgorCisgICAgICAgIEBidW5kbGVDb3VudCAr
PSAxCisgICAgICAgIGJ1bmRsZUZpbGUgPSAiVW5pZmllZFNvdXJjZSN7QGJ1bmRsZUNvdW50fSN7
ZXh0ZW5zaW9ufSIKKyAgICAgICAgYnVuZGxlRmlsZSA9ICRkZXJpdmVkU291cmNlc1BhdGggKyBi
dW5kbGVGaWxlCisgICAgICAgIGxvZygid3JpdGluZyBidW5kbGUgI3tidW5kbGVGaWxlfSB3aXRo
OiBcbiN7QGN1cnJlbnRCdW5kbGVUZXh0fSIpCisgICAgICAgIElPOjp3cml0ZShidW5kbGVGaWxl
LCBAY3VycmVudEJ1bmRsZVRleHQpCisgICAgICAgICRnZW5lcmF0ZWRTb3VyY2VzIDw8IGJ1bmRs
ZUZpbGUKKworICAgICAgICBAY3VycmVudEJ1bmRsZVRleHQgPSAiIgorICAgICAgICBAZmlsZUNv
dW50ID0gMAorICAgIGVuZAorCisgICAgZGVmIGFkZEZpbGUoZmlsZSkKKyAgICAgICAgcmFpc2Ug
Indyb25nIGV4dGVuc2lvbjogI3tmaWxlLmV4dG5hbWV9IGV4cGVjdGVkICN7QGV4dGVuc2lvbn0i
IHVubGVzcyBmaWxlLmV4dG5hbWUgPT0gQGV4dGVuc2lvbgorICAgICAgICBpZiBAZmlsZUNvdW50
ID09IE1BWF9CVU5ETEVfU0laRQorICAgICAgICAgICAgbG9nKCJmbHVzaGluZyBiZWNhdXNlIG5l
dyBidW5kbGUgaXMgZnVsbCAje0BmaWxlQ291bnR9IikKKyAgICAgICAgICAgIGZsdXNoCisgICAg
ICAgIGVuZAorICAgICAgICBAY3VycmVudEJ1bmRsZVRleHQgKz0gIiNpbmNsdWRlIFwiI3tmaWxl
fVwiXG4iCisgICAgICAgIEBmaWxlQ291bnQgKz0gMQorICAgIGVuZAorZW5kCisKKyRidW5kbGVN
YW5hZ2VycyA9IHsKKyAgICAiLmNwcCIgPT4gQnVuZGxlTWFuYWdlci5uZXcoIi5jcHAiKSwKKyAg
ICAiLm1tIiA9PiBCdW5kbGVNYW5hZ2VyLm5ldygiLm1tIikKK30KKworJGN1cnJlbnREaXJlY3Rv
cnkgPSBuaWwKKworCitBUkdWLnNvcnQuZWFjaCB7CisgICAgfCBmaWxlIHwKKworICAgIHBhdGgg
PSBQYXRobmFtZS5uZXcoZmlsZSkKKyAgICBpZiAoJGN1cnJlbnREaXJlY3RvcnkgIT0gcGF0aC5k
aXJuYW1lKQorICAgICAgICBsb2coImZsdXNoaW5nIGJlY2F1c2UgbmV3IGRpcm5hbWUgb2xkOiAj
eyRjdXJyZW50RGlyZWN0b3J5fSwgbmV3OiAje3BhdGguZGlybmFtZX0iKQorICAgICAgICAkYnVu
ZGxlTWFuYWdlcnMuZWFjaF92YWx1ZSB7IHwgeCB8IHguZmx1c2ggfQorICAgICAgICAkY3VycmVu
dERpcmVjdG9yeSA9IHBhdGguZGlybmFtZQorICAgIGVuZAorCisgICAgYnVuZGxlID0gJGJ1bmRs
ZU1hbmFnZXJzW3BhdGguZXh0bmFtZV0KKyAgICBpZiAhYnVuZGxlCisgICAgICAgIGxvZygiTm8g
YnVuZGxlIGZvciAje3BhdGguZXh0bmFtZX0gZmlsZXMgYnVpbGRpbmcgI3twYXRofSBzdGFuZGFs
b25lIikKKyAgICAgICAgJGdlbmVyYXRlZFNvdXJjZXMgPDwgcGF0aAorICAgIGVsc2UKKyAgICAg
ICAgYnVuZGxlLmFkZEZpbGUocGF0aCkKKyAgICBlbmQKK30KKworJGJ1bmRsZU1hbmFnZXJzLmVh
Y2hfdmFsdWUgeyB8IHggfCB4LmZsdXNoIH0KKworIyBXZSB1c2Ugc3Rkb3V0IHRvIHJlcG9ydCBv
dXIgdW5pZmllZCBzb3VyY2UgbGlzdCB0byBDTWFrZS4KKyMgQWRkIHRyYWlsaW5nIHNlbWljb2xv
biBzaW5jZSBDTWFrZSBzZWVtcyBkaXNsaWtlcyBub3QgaGF2aW5nIGl0LgorIyBBbHNvLCBtYWtl
IHN1cmUgd2UgdXNlIHByaW50IGluc3RlYWQgb2YgcHV0cyBiZWNhdXNlIENNYWtlIHdpbGwgdGhp
bmsgdGhlIFxuIGlzIGEgc291cmNlIGZpbGUgYW5kIGZhaWwgdG8gYnVpbGQuCitwcmludCgkZ2Vu
ZXJhdGVkU291cmNlcy5qb2luKCI7IikgKyAiOyIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9Bc3NlcnRpb25zLmggYi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgKaW5kZXggM2IwNDM3
OTlhMGE0ZTRiZGUwYWZkZjUwYzJhZDA2MGUxNTkyOTYzYS4uMTc5ZjUxOGVkNjRlOGI1MmQwYTNj
ZDdmZGNlZGZlYzdlM2MyN2ZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXNzZXJ0aW9u
cy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaApAQCAtNTM1LDE4ICs1MzUsMjIg
QEAgaW5saW5lIHZvaWQgY29tcGlsZXJGZW5jZUZvckNyYXNoKCkKICNlbmRpZgogfQogCi0jaWZu
ZGVmIENSQVNIX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fQU5EX0lORk8KKyNpZm5kZWYgQ1JB
U0hfV0lUSF9JTkZPCiAvLyBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgYXJlIGdvaW5nIHRvIHN0dWZm
IGRhdGEgaW50byByZWdpc3RlcnMgYmVmb3JlIGNyYXNoaW5nLiBMaWtlIHRoZSBjcmFzaFdpdGhJ
bmZvIGZ1bmN0aW9ucyBiZWxvdy4uLgogLy8gR0NDIGRvZXNuJ3QgbGlrZSB0aGUgIyNfX1ZBX0FS
R1NfXyBoZXJlIHNpbmNlIHRoaXMgbWFjcm8gaXMgY2FsbGVkIGZyb20gYW5vdGhlciBtYWNybyBz
byB3ZSBqdXN0IENSQVNIIGluc3RlYWQgdGhlcmUuCiAjaWYgQ09NUElMRVIoQ0xBTkcpIHx8IENP
TVBJTEVSKE1TVkMpCi0jZGVmaW5lIENSQVNIX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fQU5E
X0lORk8oLi4uKSBkbyB7IFwKKyNkZWZpbmUgQ1JBU0hfV0lUSF9JTkZPKC4uLikgZG8geyBcCiAg
ICAgICAgIFdURjo6aXNJbnRlZ3JhbFR5cGUoX19WQV9BUkdTX18pOyBcCiAgICAgICAgIGNvbXBp
bGVyRmVuY2VGb3JDcmFzaCgpOyBcCiAgICAgICAgIFdURkNyYXNoV2l0aEluZm8oX19MSU5FX18s
IF9fRklMRV9fLCBXVEZfUFJFVFRZX0ZVTkNUSU9OLCBfX0NPVU5URVJfXywgIyNfX1ZBX0FSR1Nf
Xyk7IFwKICAgICB9IHdoaWxlIChmYWxzZSkKICNlbHNlCi0jZGVmaW5lIENSQVNIX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT05fQU5EX0lORk8oLi4uKSBDUkFTSCgpCisjZGVmaW5lIENSQVNIX1dJ
VEhfSU5GTyguLi4pIENSQVNIKCkKICNlbmRpZgorI2VuZGlmIC8vIENSQVNIX1dJVEhfSU5GTwor
CisjaWZuZGVmIENSQVNIX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fQU5EX0lORk8KKyNkZWZp
bmUgQ1JBU0hfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTl9BTkRfSU5GTyBDUkFTSF9XSVRIX0lO
Rk8KICNlbmRpZiAvLyBDUkFTSF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OX0FORF9JTkZPCiAK
ICNlbmRpZiAvLyBfX2NwbHVzcGx1cwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>